Argo CD: in-place migration of cluster auth from static SA to Kanidm SA + OIDC #37
Labels
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lab/iac#37
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Argo CD: in-place migration of cluster auth from static SA to Kanidm SA + OIDC
Current state (verified)
cluster-10.15.1.170-1476597603(mini) andcluster-mail.animeteamspeak.moe-4231318278(remote).tlsClientConfig(caData + certData + keyData) — i.e. TLS client certs from a bootstrap SA. No bearer token today.Target state
groups_nameclaim.configis withserver: https://<cluster>.k8s.animeteamspeak.moe(k8s-hub route, matching theargocd_clusterserver/nameinargocd/apps.tf). NotlsClientConfigneeded — the route terminates with a Let's Encrypt cert (public trust). The authz-bridge exchanges the SA API token per request and forwards a fresh token to the real apiserver. No exec, no refresh, no stored short-lived token.argocd_clusterresources declared in iac (argocd/apps.tf,register_clusters, T15) supplyserver/name; the credential side lives in the cluster secrets.Migration path (in place, per cluster)
argocd-<cluster>Kanidm SA (the per-cluster OAuth2 client, e.g.minicluster, is provisioned inkanidm/oauth2.tf).ExternalAuth+ per-clusterOauthClient/TokenExchangePolicy, public client, audience = the cluster's apiserver client, scopesopenid groups_name) — live in flux-clustersgeneric-templates/k8s-hub(exchange first verified under agentgateway, #39 resolved 2026-08-12).server→ k8s-hub route (https://<cluster>.k8s.animeteamspeak.moe),bearerToken→ the SA API token, no CA (Let's Encrypt, public trust). Argo CD picks it up and reconciles against the new identity.system:admin).Open questions
Acceptance criteria
Depends on / linked