For the complete documentation index, see llms.txt. This page is also available as Markdown.

Flushing Gate Sessions

Introduction

Gate depends on Sprint Boot and Spring Session to manage its HTTP sessions. When Gate authenticates a user, this session is serialized and stored in Redis. This serialization is dependent on the versions of Spring Boot and Spring Session. When there is a new version of those dependencies, users encounter the following error when they try to log in: HTTP Status 500 - Internal Server Error Additionally, Deck redirects the browser to the Gate URL.To resolve the issue, perform one of the following actions:

  • Remove the browser cookie for all users.* Flush all the stored Gate sessions and force users to log in again While option 1 is simple, Armory recommends option 2 for deployments where there are a large number of users.

Prerequisites

You must have network access to Redis and have the redis-cli installed. If you do not have the redis-cli already installed, below is the information about installing it. Install and configure the debugging tool Armory recommends using the armory/docker-debugging-tools and deploying it into your Spinnaker namespace. This image contains redis-cli. Run the following commands: kubectl --context $MY_CONTEXT -n $MY_NAMESPACE apply -f https://raw.githubusercontent.com/armory/troubleshooting-toolbox/master/docker-debugging-tools/deployment.yml

kubectl --context $MY_CONTEXT -n $MY_NAMESPACE exec -it deploy/debugging-tools -- bash

Instructions

Step 1. Find your Redis URL: Run the following command to exec into the Gate pod: k --context $MY_CONTEXT -n $MY_NAMESPACE exec -it deploy/spin-gate -c gate -- cat /opt/spinnaker/config/spinnaker.yml | grep -A2 redis Capture the Redis url from the baseUrl field in the resulting output, it will look something like the following:

  redis:
    baseUrl: redis://my-redis-url.example.com:6379
    enabled: true
    host: 0.0.0.0

In this example, you would use my-redis-url.example.com, without the protocol and port data.Then, run the following command in the pod you started in your cluster to flush the sessions: redis-cli -h my-redis-url.example.com keys 'spring:session:*' | xargs redis-cli -h my-redis-url.example.com del

Step 2. Remove the debugging tools When you are finished, you can remove the debugging tools by running the following command: kubectl --context $MY_CONTEXT -n $MY_NAMESPACE delete deployment debugging-tools

Last updated

Was this helpful?