Skip to main content
Version: 2.x (Latest)

Helm Chart

Install Authorizer on a Kubernetes cluster using the official Helm chart.


Prerequisites

  • A running Kubernetes cluster
  • Helm installed

Getting Started

Step 1: Add repository

helm repo add authorizer https://helm-charts.authorizer.dev

Step 2: Update helm repos

helm repo update

Step 3: Install helm chart

For a minimal setup with SQLite and the required v2 variables:

helm install \
--namespace authorizer \
--create-namespace \
--set authorizer.database_type=sqlite \
--set authorizer.database_url="/tmp/test.db" \
--set authorizer.authorizer_url=https://auth.example.com \
--set authorizer.jwt_type=HS256 \
--set authorizer.jwt_secret=test \
--set authorizer.encryption_key=test-encryption-key \
--set authorizer.admin_secret=admin \
--set authorizer.client_id=123456 \
--set authorizer.client_secret=secret \
--set securityContext.readOnlyRootFilesystem=false \
authorizer authorizer/authorizer

For PostgreSQL:

helm install \
--namespace authorizer \
--create-namespace \
--set authorizer.database_type=postgres \
--set authorizer.database_url="postgres://user:pass@host:5432/authorizer" \
--set authorizer.authorizer_url=https://auth.example.com \
--set authorizer.jwt_type=HS256 \
--set authorizer.jwt_secret=your-jwt-secret \
--set authorizer.encryption_key=your-encryption-key \
--set authorizer.admin_secret=your-admin-secret \
--set authorizer.client_id=123456 \
--set authorizer.client_secret=secret \
authorizer authorizer/authorizer

Helm Chart Variables

Required Variables

NameDescriptionDefault
authorizer.database_typeDatabase type: postgres, mysql, sqlite, sqlserver, mongodb, arangodb, yugabyte, mariadb, cassandradb, scylladb, couchbase, dynamodb, planetscale-
authorizer.database_urlDatabase connection string. See Databases-
authorizer.authorizer_urlThis deployment's own public base URL, with the scheme (--url). Required as of 2.4.0 — the chart refuses to render without it, because the server exits at boot. This is not allowed_origins: authorizer_url is where Authorizer itself is reachable, allowed_origins lists the apps it may redirect to-
authorizer.client_idClient identifier (required in v2)-
authorizer.client_secretClient secret (required in v2)-
authorizer.admin_secretAdmin secret for admin operations-
authorizer.jwt_typeJWT signing algorithm (HS256, RS256)-
authorizer.jwt_secretJWT signing secret (for HS256)-

Database Variables

NameDescriptionDefault
authorizer.database_hostHost name for cassandradb and scylladb-
authorizer.database_usernameUsername for cassandradb and scylladb-
authorizer.database_passwordPassword for cassandradb and scylladb-
authorizer.database_certSSL Certificate (base64 encoded) for cassandradb and scylladb-
authorizer.database_cert_keySSL Certificate Key (base64 encoded) for cassandradb and scylladb-
authorizer.database_ca_certCA Signed Certificate (base64 encoded) for cassandradb and scylladb-
authorizer.aws_regionAWS Region for DynamoDB-
authorizer.aws_access_key_idAWS access key identifier for DynamoDB-
authorizer.aws_secret_access_keyAWS secret access key for DynamoDB-

Redis / Session Store

NameDescriptionDefault
authorizer.redis_urlRedis connection string for session storage-
redis.installInstall Redis (true/false)-
redis.storageClassNameStorage class name for Redis PVC-
redis.storageSize of Redis PVC5Gi

HTTP, metrics, and rate limiting

NameDescriptionDefault
authorizer.http_portMain HTTP listen port (--http-port); must differ from metrics_port8080
authorizer.metrics_portDedicated /metrics listener port (--metrics-port)8081
authorizer.metrics_hostBind address for /metrics (--metrics-host); 0.0.0.0 for in-cluster Prometheus0.0.0.0
authorizer.rate_limit_rpsPer-IP sustained RPS (--rate-limit-rps); 0 disables30
authorizer.rate_limit_burstPer-IP burst size (--rate-limit-burst)20
authorizer.rate_limit_fail_closedOn Redis/rate-limit errors, return 503 (--rate-limit-fail-closed)false

Redirect URIs and origins

NameDescriptionDefault
authorizer.allowed_originsComma-separated origins allowed to call this server (--allowed-origins)*
authorizer.redirect_urisComma-separated list of exact redirect URIs for this deployment's own client (--redirect-uris, new in 2.4.0). When unset, redirect_uri falls back to matching allowed_origins, which compares origins — any path under an allowed host is accepted. See server config-
redirect_uris applies to every flow carrying this client_id

It is not a per-app setting. List every callback your apps use, including local development ones, or those logins are refused with invalid redirect_uri.

Couchbase

NameDescriptionDefault
authorizer.couchbase_bucketCouchbase bucket for authorizer collectionsauthorizer
authorizer.couchbase_bucket_ram_quotaCouchbase bucket RAM quota in MB1000
authorizer.couchbase_scopeCouchbase scope for authorizer collections_default

Upgrading

To upgrade to a newer version of the Helm chart:

helm repo update
helm upgrade authorizer authorizer/authorizer --namespace authorizer

How the chart configures the container

Chart 2.x passes every authorizer.* value to the container as a --kebab-case CLI flag, matching the v2 CLI-only configuration model. There is no .env file to mount and no _update_env dashboard call.

  • Secrets (client_secret, jwt_secret, admin_secret, database credentials, every social-provider secret) are written to Kubernetes Secret resources and injected as environment variables, which the container's entrypoint expands into the flags. They never appear in the pod spec's args.
  • Non-secret values are rendered into the args directly.
  • A value left null is omitted, so the server's own default applies.

Run helm show values authorizer/authorizer for the full list — each key is documented in place, and maps to the flag of the same name in Server configuration.