authentik: deploy LDAP outpost for in-cluster app-password binds #422
Reference in New Issue
Block a user
Delete Branch "benvin/authentik-ldap-outpost"
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?
Why
Jellyfin authenticates users against Authentik over LDAP (app-password binds). The
authentik-ldapService, Gateway, and TLSRoute already exist in the authentik base, but nothing backed the Service — no LDAP outpost was ever deployed. This adds the missing Deployment so in-cluster clients (Jellyfin) can bind.Deployed as a separate Deployment inside the existing
authentiknamespace rather than a new app/namespace: the authentik overlay is already wired into theplatformApplicationSet and the LDAP Service/Gateway/TLSRoute already live here, so this needs no new AppProject/ApplicationSet wiring and keeps the outpost next to the core it serves.How
ldap-outpost-deployment.yaml: 2-replica (stateless) Deployment, imageghcr.io/goauthentik/ldap:2026.5.3(canonical upstream name; matches the deployed authentik chart version; containerd mirrors route via artifactapi). Pod labels match the existingauthentik-ldapService selector.AUTHENTIK_HOST=https://identity.k8s.syd1.au.unkin.net,AUTHENTIK_INSECURE=false.vault-ca-cert) +SSL_CERT_FILE.AUTHENTIK_TOKENsourced from secretauthentik-ldap-outpost-token.ldap-outpost-vaultstaticsecret.yaml: VSS (reuses the namespacedefaultVaultAuth) materialising the token from KVkubernetes/namespace/authentik/default/outpost-token(keytoken).ldap-service.yaml: adds the plaintextldapport 3389 alongside the existingldaps6636 (ClusterIP only, no public exposure — external reach is via the pre-existing internal Gateway/TLSRoute).ldap-outpost-vmpodscrape.yaml: VMPodScrape for the outpost metrics endpoint (:9300).Dependency — token seed (blocking)
The outpost pods CrashLoop until the token exists. After merge, the Authentik LDAP outpost token must be seeded into Vault KV at
kv/kubernetes/namespace/authentik/default/outpost-tokenwith keytoken. This path is provided by the corresponding terraform-authentik PR; the value must match the outpost token authentik issues.Validation
kustomize build --enable-helm apps/overlays/au-syd1/authentik+ repo kubeconform: 38 resources, Valid: 38, Invalid: 0, Errors: 0.