Skip to main content

Configuration and Secrets

Use the production values example as the non-secret values file. Never put credentials, licenses, private signing keys, or registry tokens in Helm values.

Runtime Secret

Create one Secret containing every key referenced by global.secretKeys:

kubectl -n loadouthq create secret generic loadouthq-runtime \
--from-literal=DATABASE_URL='postgresql://USER:PASSWORD@DB_HOST:5432/loadouthq?sslmode=require' \
--from-literal=REDIS_URL='rediss://:PASSWORD@VALKEY_HOST:6379/0' \
--from-literal=S3_ENDPOINT='https://s3.example.com' \
--from-literal=S3_REGION='REGION' \
--from-literal=S3_BUCKET='BUCKET' \
--from-literal=S3_ACCESS_KEY_ID='ACCESS_KEY' \
--from-literal=S3_SECRET_ACCESS_KEY='SECRET_KEY' \
--from-literal=SESSION_SECRET='AT_LEAST_32_RANDOM_CHARACTERS' \
--from-literal=ENCRYPTION_KEY='64_HEXADECIMAL_CHARACTERS'

Prefer an external secret manager or sealed-secret workflow in production. License validation settings are part of the official API image and are not customer runtime configuration.

Required non-secret values

ValueMeaning
config.appBaseUrlPublic SPA origin used in links and redirects
config.apiPublicUrlPublic API origin used for OIDC callbacks; normally the same origin
config.corsOriginAllowed browser origin
config.platformAdminEmailLocal bootstrap account promoted to platform admin
global.existingSecretExisting Secret holding connection and application keys
imagePullSecretsSecret names granting nodes access to private images
ingress.hostPublic DNS hostname when Ingress is enabled
httpRoute.parentRefsExisting Gateway and optional listener attachment
httpRoute.hostnamesPublic DNS hostnames accepted by HTTPRoute

The API validates required environment values before serving traffic. Public URLs must match the externally reachable HTTPS address, not Kubernetes Service names.

Policy defaults

Registration and organization creation are disabled in the production example. Enable them only after reviewing onboarding policy. Secure cookies must remain enabled behind HTTPS.

Registry Secret

kubectl -n loadouthq create secret docker-registry loadouthq-registry \
--docker-server=registry.gitlab.com \
--docker-username='DEPLOY_TOKEN_USER' \
--docker-password='DEPLOY_TOKEN'

Use a read-registry deploy token and rotate it through the customer's secret-management process.