Documentation menu

Kubernetes and Helm

The chart is published as an OCI artifact at oci://ghcr.io/bcollard/charts/jwks-bridge.

Install

helm install jwks-bridge oci://ghcr.io/bcollard/charts/jwks-bridge \
  -n jwks --create-namespace -f values.yaml

examples/kubernetes/values.yaml is a production-style starting point with mTLS, NetworkPolicy, ServiceMonitor and OTLP export, and examples/kubernetes/certificate.yaml issues the server certificate with cert-manager.

Main values

ValueDefaultDescription
replicaCount2Replicas cache independently; run two or more.
keysetsdefault: secret/jwks-bridge/defaultKeyset name to Vault path.
vault.addressRequired with source: vault.
vault.authkuberneteskubernetes, approle or token.
vault.caSecretSecret with ca.crt for the Vault server certificate.
private.tls.secretNameRequired. kubernetes.io/tls Secret for the private listener. Reloaded from disk when it changes.
private.mtls.caSecretEnables mTLS; Secret with ca.crt.
private.mtls.allowedSANs[]Client SAN or CN allowlist.
private.basicAuth.secretNameEnables Basic auth; Secret with username and password.
config.*refreshInterval, maxStale, jwksMaxAge, minStageDuration, logLevel, logFormat.
extraEnv[]For example OTEL_EXPORTER_OTLP_ENDPOINT.
networkPolicy.enabledfalseRestricts each listener to the configured peers.
serviceMonitor.enabledfalsePrometheus Operator scrape config for the admin port.

Services

The chart creates jwks-bridge (public 8080, private 8443) and jwks-bridge-admin (metrics 9090). Probes use /readyz and /healthz on the admin port.

Pod hardening

Distroless static image, non-root UID 65532, read-only root filesystem, all capabilities dropped, RuntimeDefault seccomp, and no service account token mount unless Vault Kubernetes auth needs it.