Authentik is deployed but no services use it yet. New leaf node to migrate Grafana's OIDC from Dex to Authentik, then decommission Dex. Goal card re-activated with new dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
| title | status | modified | requires | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Deploy Authentik Identity Provider | active | 2026-02-20 |
|
|
Deploy Authentik Identity Provider
Replace dex with Authentik as the SSO identity provider. Authentik is the source of truth for user identity in BlumeOps. Users are created and managed in Authentik; services authenticate against it via OIDC. Forgejo federation is deferred to a future effort (existing eblume account has extensive automations that need careful migration).
Architecture Decisions
| Decision | Choice | Rationale |
|---|---|---|
| Identity model | Authentik is source of truth | Central user/group management, not Forgejo-upstream like Dex |
| Cluster | ringtail (k3s) | IdP independent of main services cluster, same as Dex |
| Database | CNPG blumeops-pg on indri |
Cross-cluster via Caddy L4 (pg.ops.eblu.me), no new operator needed |
| Redis | Co-deployed in authentik namespace | Required for caching/sessions/task queue |
| Containers | Nix-built (dockerTools.buildLayeredImage) |
Supply chain control, consistent with Dex/ntfy pattern |
| Manifests | Kustomize (no Helm) | Consistent with all other BlumeOps services |
| Networking | Tailscale Ingress + Caddy reverse proxy | Same pattern as Dex |
| IaC | Authentik Blueprints (YAML in ConfigMap) | GitOps-native, config stored in repo |
What Was Done
- Built Nix container image (
v1.1.0-nix) —pkgs.authentik+coreutils+bashInteractive - Created 1Password item "Authentik (blumeops)" with secret key and DB credentials
- Provisioned
authentikdatabase and CNPG managed role onblumeops-pg - Deployed to ringtail k3s: server, worker, Redis (3 deployments)
- ExternalSecret pulls config from 1Password
- Tailscale Ingress at
authentik.tail8d86e.ts.net - Caddy reverse proxy at
authentik.ops.eblu.me - Completed first-run wizard (admin account created)
URLs
- Admin: https://authentik.ops.eblu.me/if/admin/
- Tailscale: https://authentik.tail8d86e.ts.net
Future Work (not blocking this card)
- Forgejo federation: Make Forgejo an OIDC client of Authentik (deferred — needs careful
eblumeaccount migration) - Cross-cluster metrics: Prometheus on indri scraping authentik on ringtail
- Redis image: Replace upstream
redis:7-alpinewith Nix-built container
Related
- dex — Current IdP (to be replaced by migrate-grafana-to-authentik)
- federated-login — How authentication works across BlumeOps
- adopt-oidc-provider — Dex deployment plan (completed)
- ringtail — Target cluster
- agent-change-process — C2 methodology used for this change