The default Directory deployment in this repository uses SPIFFE/SPIRE-oriented authentication that works well for in-cluster workloads. If you also want to support dirctl, SDKs, or automation running outside the cluster, deploy the standalone oidc-gateway application alongside dir.
The public gateway chart lives in the dedicated repository:
This gateway puts Envoy in front of Directory:
- A remote client presents an OIDC JWT, SPIFFE JWT-SVID, or SPIFFE X.509-SVID.
- Envoy validates bearer JWTs with
jwt_authnor downstream SPIFFE mTLS when enabled. - The ext-authz service normalizes the caller to a canonical principal and checks allowed gRPC methods.
- Only authorized requests are forwarded to the internal Directory apiserver with the configured principal header.
Use the OIDC gateway when:
- You want remote
dirctlaccess from a laptop or workstation outside the cluster - You want a human login flow backed by Dex
- You want GitHub Actions or other external automation to call Directory with OIDC tokens
You do not need this gateway if you only use in-cluster, SPIFFE-based access.
The staging example includes a separate oidc-gateway app under applications/oidc-gateway/dev/. The main settings are:
envoy.backend.*: points Envoy at the internal Directory serviceenvoy.oidc.issuers[]: configures Envoyjwt_authnproviders and JWKS lookup for bearer-token validationenvoy.oidc.github.*: configures GitHub Actions OIDC for automationauthServer.oidc.issuers: maps verified token issuers to stable provider keys such asdexorgithubauthServer.oidc.headers.authPrincipal: sets the canonical principal header forwarded to Directory (x-auth-principalby default)authServer.oidc.roles: maps canonical principals such asoidc:dex:alice,oidc:github:repo:..., orspiffe:spiffe://...to allowed gRPC methodsingress.*: exposes the Envoy gateway for external access over gRPC
If you want interactive user login, configure Dex in applications/dex/dev/values.yaml and make sure:
config.issuermatches the public URL where Dex is reachable- your GitHub OAuth app credentials are supplied through a Kubernetes Secret
- the Dex issuer values in
applications/dex/dev/values.yamlandapplications/oidc-gateway/dev/values.yamlmatch
Enabling Dex by itself is not enough for remote Directory access. Remote clients also need the standalone oidc-gateway deployed so their OIDC tokens can be validated before requests reach Directory.
The staging values file is a user-facing example. For the complete public source of truth for all supported fields, see:
agntcy/dir/install/charts/dir/values.yamlagntcy/oidc-gateway/install/charts/oidc-gateway/values.yaml
- Getting Started — deployment paths for this repository
- Client Onboarding Guide — connect clients to the public staging network