Skip to content

Use this page to understand the Kubernetes secret names and keys used by the authentication components in Ripple Custody. The examples show possible secret shapes; your secret manager, namespace, rotation process, and credential values depend on your deployment.

This page applies to on-premise deployments only. For current defaults and the full supported schema, use the configuration packaged with your release.

What this config controls

Authentication services use Kubernetes secrets for database access, service credentials, OIDC integration, OAuth signing keys, and client secrets.

Some secrets are supplied by the deployment operator. Other secrets are generated or managed by the deployment configuration.

Secret fields

Keycloak secrets

SecretKeyDescription
keycloak-psqlKC_DB_URLJDBC connection string for the Keycloak database schema.
keycloak-psqlPG_CONN_URLPostgreSQL connection string used by Keycloak.
keycloak-kcKEYCLOAK_ADMINKeycloak admin username.
keycloak-kcKEYCLOAK_ADMIN_PASSWORDKeycloak admin password.
keycloak-kcKC_BOOTSTRAP_ADMIN_USERNAMEBootstrap admin username.
keycloak-kcKC_BOOTSTRAP_ADMIN_PASSWORDBootstrap admin password.
keycloak-kcKC_BOOTSTRAP_ADMIN_CLIENT_IDBootstrap admin client ID.
keycloak-oidc-credentialsOAUTH_SERVER_CLIENT_IDClient ID used by Keycloak to communicate with the OAuth server.
keycloak-oidc-credentialsOAUTH_SERVER_CLIENT_SECRETClient secret used by Keycloak to communicate with the OAuth server.
keycloak-clientsService client secretsInternal service client secrets. This secret is managed automatically.

OAuth server secrets

SecretKeyDescription
oauth-serverOAUTH_SERVER_KEYPrivate key used by the OAuth server.
oauth-clientsOAUTH_CLIENTSJSON document containing OAuth client definitions.
oauth-oidc-credentialsOAUTH_SERVER_CLIENT_IDClient ID used for OIDC integration.
oauth-oidc-credentialsOAUTH_SERVER_CLIENT_SECRETClient secret used for OIDC integration.
oauth-psqlPOSTGRES_URLPostgreSQL connection string for the OAuth server database schema.

Constraints and relationships

  • Authentication secrets must exist in the namespace where the authentication components read them.
  • Secret values should be supplied through your normal secret-management process.
  • The keycloak-clients secret contains internal service client secrets and is managed automatically.
  • OAuth private key material must be valid private key data in the format expected by the OAuth server.
  • Connection string values must match the PostgreSQL host, database, credentials, and schema used by your deployment.

Example

This example shows a possible set of Kubernetes secrets for Keycloak and OAuth. Replace namespaces, connection strings, usernames, passwords, client secrets, and private key material with values from your own environment.

apiVersion: v1
kind: Secret
metadata:
  name: keycloak-kc
  namespace: harmonize
type: Opaque
stringData:
  KEYCLOAK_ADMIN: "admin"
  KEYCLOAK_ADMIN_PASSWORD: "<strong-password>"
  KC_BOOTSTRAP_ADMIN_USERNAME: "admin"
  KC_BOOTSTRAP_ADMIN_PASSWORD: "<strong-password>"
  KC_BOOTSTRAP_ADMIN_CLIENT_ID: "<client-id>"
---
apiVersion: v1
kind: Secret
metadata:
  name: keycloak-psql
  namespace: harmonize
type: Opaque
stringData:
  KC_DB_URL: "jdbc:postgresql://postgres:5432/harmonize?currentSchema=keycloak"
  PG_CONN_URL: "postgres://keycloak_user:<password>@postgres:5432/harmonize"
---
apiVersion: v1
kind: Secret
metadata:
  name: oauth-server
  namespace: harmonize
type: Opaque
stringData:
  OAUTH_SERVER_KEY: |
    -----BEGIN PRIVATE KEY-----
    <private-key-material>
    -----END PRIVATE KEY-----
---
apiVersion: v1
kind: Secret
metadata:
  name: oauth-psql
  namespace: harmonize
type: Opaque
stringData:
  POSTGRES_URL: "postgres://oauth_user:<password>@postgres:5432/harmonize?schema=oauth"

External secret managers

You can use an external secret manager to materialize the Kubernetes secrets that Ripple Custody expects. The provider-specific configuration belongs to your secret-manager tooling.

This example shows the expected pattern: map remote secret values to the Kubernetes secret keys listed above.

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: oauth-server-key
  namespace: harmonize
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: <secret-store-name>
    kind: SecretStore
  target:
    name: oauth-server
    creationPolicy: Owner
  data:
    - secretKey: OAUTH_SERVER_KEY
      remoteRef:
        key: <remote-secret-name>
        property: private_key