Shared Secrets
AWS Secret Name:unkey/shared
| Property | Used By | Description |
|---|---|---|
UNKEY_DATABASE_PRIMARY | control, frontline, sentinel | Primary database connection string |
UNKEY_DATABASE_REPLICA | frontline, sentinel | Replica database connection string |
UNKEY_CLICKHOUSE_URL | control | ClickHouse analytics database URL |
UNKEY_VAULT_MASTER_KEYS | control, krane, frontline | Vault encryption master keys |
UNKEY_VAULT_S3_URL | control, krane, frontline | Vault S3 storage endpoint URL |
UNKEY_VAULT_S3_BUCKET | control, krane, frontline | Vault S3 bucket name |
UNKEY_VAULT_S3_ACCESS_KEY_ID | control, krane, frontline | Vault S3 access key ID |
UNKEY_VAULT_S3_ACCESS_KEY_SECRET | control, krane, frontline | Vault S3 secret access key |
UNKEY_REGISTRY_URL | control, krane | Container registry URL |
UNKEY_REGISTRY_USERNAME | control, krane | Container registry username |
UNKEY_REGISTRY_PASSWORD | control, krane | Container registry password |
GRAFANA_ADMIN_USER | observability | Grafana admin username |
GRAFANA_ADMIN_PASSWORD | observability | Grafana admin password |
Service-Specific Secrets
control (Control Plane)
AWS Secret Name:unkey/control
| Property | Description |
|---|---|
UNKEY_AUTH_TOKEN | Authentication token for control API |
UNKEY_BUILD_S3_URL | Build artifacts S3 endpoint URL |
UNKEY_BUILD_S3_BUCKET | Build artifacts S3 bucket name |
UNKEY_BUILD_S3_ACCESS_KEY_ID | Build S3 access key ID |
UNKEY_BUILD_S3_ACCESS_KEY_SECRET | Build S3 secret access key |
UNKEY_RESTATE_API_KEY | Restate Cloud admin API token |
UNKEY_ACME_ROUTE53_ENABLED | Set to “true” to enable Route53 provider (optional) |
UNKEY_ACME_ROUTE53_ACCESS_KEY_ID | Route53 access key ID for ACME (optional) |
UNKEY_ACME_ROUTE53_SECRET_ACCESS_KEY | Route53 secret access key for ACME (optional) |
UNKEY_ACME_ROUTE53_REGION | Route53 region (optional) |
krane
AWS Secret Name:unkey/krane
| Property | Description |
|---|---|
UNKEY_CONTROL_PLANE_BEARER | Bearer token for control plane authentication |
argocd
AWS Secret Name:unkey/argocd
| Property | Used By | Description |
|---|---|---|
github-webhook-secret | argocd | GitHub webhook secret for ArgoCD notifications |
slack-token | argocd | Slack token for ArgoCD notifications |
admin.password | argocd | bcrypt-hashed admin password (merged into argocd-secret) |
admin.password must be a bcrypt hash. See Rotating the ArgoCD Admin Password below.
Secret Usage by Service
| Service | JSON Secret | Properties Used |
|---|---|---|
| control | unkey/shared | DATABASE_PRIMARY, CLICKHOUSE_URL, VAULT_, REGISTRY_ |
| control | unkey/control | AUTH_TOKEN, BUILD_S3_, RESTATE_API_KEY, ACME_ROUTE53_ |
| krane | unkey/shared | VAULT_, REGISTRY_ |
| krane | unkey/krane | CONTROL_PLANE_BEARER |
| frontline | unkey/shared | DATABASE_PRIMARY, DATABASE_REPLICA, VAULT_* |
| sentinel | unkey/shared | DATABASE_PRIMARY, DATABASE_REPLICA |
| observability | unkey/shared | GRAFANA_ADMIN_USER, GRAFANA_ADMIN_PASSWORD |
| restate | unkey/control | RESTATE_API_KEY |
| argocd | unkey/argocd | github-webhook-secret, slack-token, admin.password |
Rotating the ArgoCD Admin Password
The ArgoCD admin password is stored as a bcrypt hash in AWS Secrets Manager and synced into each cluster by External Secrets Operator. To rotate it:1. Generate a bcrypt hash of the new password
2. Update the AWS secret
ReplacePROFILE and REGION for your target environment:
- Staging:
--profile unkey-sandbox-admin --region eu-central-1 - Production:
--profile unkey-production001-admin --region us-east-1
3. Wait for ESO to sync (or force it)
The ArgoCD ExternalSecrets poll every 1 minute (most services use1m, some like incident.io and restate use 1h). Verify the sync:
4. Restart argocd-server
ArgoCD caches the password in memory, so a restart is required:5. Verify
Log in to the ArgoCD UI with usernameadmin and the new password.

