Namespace deletion leaves AI Gateway keys and AI providers in Coder
Mantenedores costumam responder em até 1 dia
@ThomasK33 já está trabalhando nisso.
Desde 14/10/2026.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
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
- Linguagem predominante
- Go
- Estrelas
- 5
- Forks
- 3
- Merge médio
- 3h
- PRs com merge (30d)
- 192
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de coder/coder-k8s
-
CoderWorkspacePoolMember checkCreate: trust only Coder's own 404 on the name lookup (before PR 12)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
TestReconcile_LicenseRotationUploadsNewSecretValue fails at -count=3 (reuses a control plane name)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
CoderMCPServer Kind E2E follow-upsTalvez já em andamento @ThomasK33 assumiu há 5 dias. Aberta
coder/coder-k8s#390 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
CoderMCPServer delete and RBAC test follow-upsTalvez já em andamento @ThomasK33 assumiu há 6 dias. Aberta
coder/coder-k8s#378 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Ownership proof for Coder IDs recorded in controller status (D11 B)Talvez já em andamento @ThomasK33 assumiu há 6 dias. Aberta
coder/coder-k8s#372 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de coder/coder-k8s
Issues semelhantes
-
feat
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 65/100
ory/hydra-maester#312 · 1 reação ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100