Namespace deletion leaves AI Gateway keys and AI providers in Coder
Les mainteneurs répondent en général sous 1 jour
@ThomasK33 y travaille déjà.
Depuis le 14/10/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
Problem
When a namespace is deleted, Kubernetes deletes the CoderControlPlane and its CoderAIGatewayKey objects at the same time. The operator then cannot reach Coder: the control plane is gone, or its Coder pod is already down when the bounded pass runs. So it releases the finalizers without deleting the keys, and full-trust gateway keys stay valid in Coder. CoderAIProvider has the same gap for providers.
Seen in the dogfood run of #346 (see the G3 evidence comment, step 13):
- The namespace was gone after 11 s.
- The key row stayed in Coder's
ai_gateway_keystable. - The operator logged
Releasing the finalizer without deleting the keys in Coderwith reasonControlPlaneGoneand the key ID.
Today the how-to (docs/how-to/manage-ai-gateway-keys.md) warns about this and gives the cleanup: delete the key objects before the namespace, or delete the logged keys with coder ai-gateway keys delete.
Options
- A cluster-wide sweeper (plan risk RK7) that deletes
ck8s-<uid>-keys whose UID noCoderAIGatewayKeyhas, after the settle window. The same idea works for providers. - Hold the control plane's deletion (a finalizer or a deletion check) while dependent
CoderAIGatewayKeyandCoderAIProviderobjects exist, so they are cleaned up first.
Related items to decide together
- While the control plane is being deleted, a failed operator-access read releases at once without a retry (#156 plan, K9 notes item q). This is a second path that leaves keys.
- The
CoderAnswerMismatchgate is lost when the status write right after the mismatch fails (K9 notes item u). The settle window bounds this to one extra create, whose key the sweep deletes. - A metric or a Kubernetes Event for
ControlPlaneGonereleases. Today the log line is the only signal.
Refs #156
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high
- Langage dominant
- Go
- Étoiles
- 5
- Forks
- 3
- Merge moyen
- 3 h
- PR mergées (30 j)
- 192
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de coder/coder-k8s
-
CoderWorkspacePoolMember checkCreate: trust only Coder's own 404 on the name lookup (before PR 12)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
TestReconcile_LicenseRotationUploadsNewSecretValue fails at -count=3 (reuses a control plane name)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
CoderMCPServer Kind E2E follow-upsPeut-être pris @ThomasK33 l’a pris il y a 7 jours. Ouverte
coder/coder-k8s#390 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
CoderMCPServer delete and RBAC test follow-upsPeut-être pris @ThomasK33 l’a pris il y a 7 jours. Ouverte
coder/coder-k8s#378 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Ownership proof for Coder IDs recorded in controller status (D11 B)Peut-être pris @ThomasK33 l’a pris il y a 7 jours. Ouverte
coder/coder-k8s#372 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de coder/coder-k8s
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Mend: dependency security vulnerability
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
kube-tarian/sigrun#202 ·
-
good first issue help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
eugenioenko/ttt#1085 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
fullsend-ai/fullsend#8688 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
question raised-by:verifier
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
medici-finance/assay#4013 ·
Les mainteneurs répondent en général sous 1 jour