Document the Cloud Connector key rotation order
What does this MR do?
Rotating the Cloud Connector key has no product documentation. The AI Gateway caches the instance public keys, so running rotate right after create, as the create output suggests, makes it reject tokens signed with the new key. The new task restarts the gateway in between, and can move to a general GitLab Duo Self-Hosted page.
Rotation order
sequenceDiagram
accTitle: Cloud Connector key rotation without authentication failures
accDescr: The AI Gateway loads the new key before Rails signs with it, and the old key is removed only after tokens signed with it expire.
participant Admin as Administrator
participant Rails as Puma, Sidekiq (CachingKeyLoader)
participant JWKS as GitLab /oauth/discovery/keys
participant GW as AI Gateway, GitLab Duo Agent Platform service
Admin->>JWKS: keys:create publishes the new key
Note over Rails: still signs with the old key
Admin->>GW: restart
GW->>JWKS: fetch, caches old and new
Admin->>Rails: keys:rotate
Note over Rails: running processes keep the old key
Admin->>Rails: restart puma, then restart sidekiq
Rails->>GW: token signed with the new key, accepted
Note over Admin: wait one hour, the token lifetime
Admin->>JWKS: keys:trim removes the old key
Admin->>GW: restart
GW->>JWKS: fetch, caches the new key onlyOn GitLab 19.4.1, with a GitLab Duo Workflow token requested every 10 seconds, this order had no authentication failures.
Related issues
Related to #616174.
Author's checklist
- Optional. Consider taking the GitLab Technical Writing Fundamentals course.
- Follow the:
- If you're adding a new page, add the product availability details under the H1 topic title.
- If you are a GitLab team member, request a review based on:
- The documentation page's metadata.
- The associated Technical Writer.
If you are a GitLab team member and only adding documentation, do not add any of the following labels:
~"frontend"~"backend"~"type::bug"~"database"
These labels cause the MR to be added to code verification QA issues.
Reviewer's checklist
Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on Documentation Guidelines and the Style Guide.
If you aren't sure which tech writer to ask, use roulette or ask in the #docs Slack channel.
- If the content requires it, ensure the information is reviewed by a subject matter expert.
- Technical writer review items:
- Ensure docs metadata is present and up-to-date.
- Ensure the appropriate labels are added to this MR.
- Ensure a release milestone is set.
- If relevant to this MR, ensure content topic type principles are in use, including:
- The headings should be something you'd do a Google search for. Instead of
Default behavior, say something likeDefault behavior when you close an issue. - The headings (other than the page title) should be active. Instead of
Configuring GDK, say something likeConfigure GDK. - Any task steps should be written as a numbered list.
- If the content still needs to be edited for topic types, you can create a follow-up issue with the docs-technical-debt label.
- The headings should be something you'd do a Google search for. Instead of
- Review by assigned maintainer, who can always request/require the reviews above. Maintainer's review can occur before or after a technical writer review.
An AI coding assistant wrote this change, this description and my replies on this merge request. The assistant also ran each described behavior on a test VM running a GitLab 19.4.1 Linux package instance with an offline cloud license and a self-hosted AI Gateway, checked each claim against those runs and the GitLab, AI Gateway and gitlab-cloud-connector source, and ran the project's Vale and markdownlint on the changed pages.