feat(iam): wire all 9 consumer manifests to Zitadel OIDC

- Replace Authentik issuer/auth/token/userinfo URLs with Zitadel endpoints
  in grafana, minio, paperless-ai, paperless-ai-new, homarr, argocd, blackbox
- Write Zitadel client IDs/secrets into plain manifests and SOPS secrets
  (grafana, minio, paperless, homarr)
- Adopt homarr-oidc into SOPS (homarr-auth-oidc.enc.yaml)
- Add homarr to SECRET_MAP and remove from MANUAL_ONLY in zitadel-provision.py
- Make client-id regex idempotent for repeated runs (minio, paperless)
- Fix cloudflared init container CA mount path (homelab-ca.crt -> ca.crt)
- Remove Authentik ingress and cloudflared tunnel entry
This commit is contained in:
2026-10-25 21:08:23 -07:00
parent 3ec46d26f0
commit 990e312825
15 changed files with 108 additions and 134 deletions
+6 -6
View File
@@ -103,17 +103,17 @@ spec:
- https://minio-api.riotpiao.com
console: https://minio.riotpiao.com
# ── OIDC via Authentik (server-side env, valid in v2 schema) ────────────────
# Use in-cluster URL for config fetch (pod→authentik); browser redirects use
# public URLs embedded in the OIDC metadata response (issuer stays public).
# ── OIDC via ZITADEL (server-side env, valid in v2 schema) ──────────────────
# Use external URL for config fetch (hairpins through ingress-nginx); browser
# redirects use public URLs embedded in the OIDC metadata response.
env:
- name: MINIO_IDENTITY_OPENID_CONFIG_URL
# Must use external URL — well-known response contains external issuer/jwks_uri.
# MinIO validates issuer in JWT matches well-known issuer. Internal URL = mismatch.
# Hairpins through ingress-nginx but stays in-cluster.
value: "https://authentik.riotpiao.com/application/o/minio/.well-known/openid-configuration"
value: "https://zitadel.riotpiao.com/.well-known/openid-configuration"
- name: MINIO_IDENTITY_OPENID_CLIENT_ID
value: "minio"
value: "396757803257036801"
- name: MINIO_IDENTITY_OPENID_CLIENT_SECRET
valueFrom:
secretKeyRef:
@@ -126,7 +126,7 @@ spec:
- name: MINIO_IDENTITY_OPENID_REDIRECT_URI
value: "https://minio.riotpiao.com/oauth_callback"
- name: MINIO_IDENTITY_OPENID_DISPLAY_NAME
value: "Authentik"
value: "Zitadel"
- name: MINIO_IDENTITY_OPENID_SCOPES
value: "openid,profile,email,groups"
- name: MINIO_BROWSER_LOGIN_ANIMATION