Skip to main content

Managing Secrets in Catalyst

When you create a Catalyst resource such as a Component, HTTPEndpoint, or Configuration, sensitive metadata values (connection passwords, API keys, access tokens, etc.) can be managed in two ways.

Transparent secret management (default)​

If you provide sensitive values as plaintext, Catalyst identifies them via the Dapr component metadata schema (fields marked as sensitive — passwords, tokens, access keys, certificates) and transparently extracts them into a Catalyst-managed secret store. The resource spec is rewritten to reference the stored value via secretKeyRef before it is persisted — so plaintext values are never stored in the control plane database. No additional configuration is needed:

diagrid component create my-pubsub --type pubsub.redis \
--metadata redisHost=https://endpoint \
--metadata redisPassword=pwd

Here redisPassword is automatically extracted into a secret; only redisHost remains as plaintext metadata.

Bring your own secret store​

If you prefer to resolve secrets from your own secret store, create a Dapr secret store component and reference it from other resources via auth.secretStore + secretKeyRef. In this mode, Catalyst does not perform any transparent extraction — your resources are applied to the dataplane exactly as declared.

Supported secret store types are documented in the Components Reference:

Create one by applying a Component resource with the Diagrid CLI:

apiVersion: cra.diagrid.io/v1beta1
kind: Component
metadata:
name: my-vault
spec:
type: secretstores.hashicorp.vault
version: v1
metadata:
- name: vaultAddr
value: "https://vault.example.com:8200"
- name: vaultToken
value: "<token>"
diagrid apply -f my-vault.yaml

Once registered, reference it from another resource:

auth:
secretStore: my-vault
spec:
metadata:
- name: apiKey
secretKeyRef:
name: <secret-name-in-the-store>
key: <key-within-the-secret>

Your applications can also look up secrets from these stores at runtime via the Dapr Secrets API.