Skip to main content
SeekrFlow reads its credentials from Kubernetes secrets in the seekrflow namespace. You either create the secrets directly, or store them in your secret store for External Secrets Operator to sync. Most of the values come from Collect credentials and values.

Secrets SeekrFlow uses

Generate your own values

With sfe, the --auto-generate option in Create the secrets generates auth-jwt, auth-otp, auth-crypto, keycloak-credentials, and opensearch-credentials. It reuses existing values on later runs rather than replacing them. Without sfe, generate them yourself:
Generate each value once. Replacing the token signing key pair signs out every user. Replacing the root key forces every user with multi-factor authentication to enroll again.

Create the secrets

1

Create the secrets

sfe secrets create prompts for each value and generates the ones it can.
  • External Secrets Operator – Writes each secret to your secret store, then adds the secret mappings to your values file:
  • Kubernetes secrets – Creates the secrets in the cluster:
To skip a secret you don’t need, press Enter at its first prompt.
2

Create the image pull secret

sfe doesn’t create this secret. Create it with kubectl in both the seekrflow and argo-workflows namespaces, whichever approach you use. Argo Workflows runs SeekrFlow’s training and ingestion jobs in its own namespace, and a Kubernetes secret works only in the namespace it’s in. If you mirrored the images, use your own registry and its credentials instead of Seekr’s:
On-premises, also create appliance-storage-creds with kubectl create secret generic.
With Kubernetes secrets, sfe secrets create checks for the seekrflow namespace only after you enter every value. If the namespace doesn’t exist, the command fails and discards what you entered. Create it first. See Create the namespaces.

Keep copies outside the cluster

Back up the token signing key pair and the root key outside the cluster, such as in your organization’s password manager. With Kubernetes secrets, the cluster holds the only copy. With External Secrets Operator, your secret store also holds a copy.
If you lose the root key, users with multi-factor authentication have to enroll again. Users who signed in through single sign-on have to sign in again.

Trust a private certificate authority

Some services SeekrFlow calls might use certificates from a private certificate authority, such as an internal object store or a corporate proxy. To trust them, store a certificate bundle in a secret and reference it:
The bundle replaces each service’s trust store rather than adding to it. Include the public root certificates and your own, or every other outbound Transport Layer Security (TLS) connection fails. sfe preflight warns if the bundle looks incomplete.

Turn on FIPS mode

FIPS mode switches the Auth service to FIPS 140-3 approved cryptography. It needs the root key and one setting:
FIPS mode is an install-time choice. You can’t turn it on or off later. Enable it only on a fresh, empty database. The Auth service refuses to start if stored password hashes don’t match the policy.
If you also enable the bundled Keycloak with FIPS mode, its database password must be at least 14 characters.
Last modified on October 16, 2026