Skip to content

Helm values reference

Cloudkeel-DD installs from the d-detective Helm chart. This page covers the values you’ll most often set. Run helm show values <chart> for the complete, authoritative list shipped with your version.

ValueDefaultNotes
images.backend.repositorydriftdetective/ddetective-backendBackend/worker/beat image (one image, three commands)
images.backend.tagchart appVersionPin to a specific version in production
images.frontend.repositorydriftdetective/ddetective-frontendUI image
images.frontend.tagchart appVersion
imagePullSecrets[]Only needed for a private registry without workload-identity pull

The frontend proxies /api to the backend itself at runtime, so no Ingress controller is required to reach a fully working app — helm install then kubectl port-forward svc/<release>-frontend 3000:3000 is enough. Enable ingress for a stable, TLS-terminated hostname instead of port-forwarding (typical for production).

ValueDefaultNotes
ingress.enabledfalseSet true for a stable hostname/TLS
ingress.className""Your ingress controller’s class (only used when enabled)
ingress.hostd-detective.example.comSet this to your DNS name (only used when enabled)
ingress.tls.enabled / .secretNamefalse / ""Enable and supply a TLS secret in production
frontend.service.typeClusterIPSet LoadBalancer/NodePort for external access without ingress
ValueNotes
secrets.fernetKeyImmutable credential-encryption key. Set once; never change. See Secrets
secrets.jwtSecretSigns user session tokens. Rotating it logs everyone out
ValueNotes
postgresql.enabledSet false in production and point at managed PostgreSQL
postgresql.auth.passwordBundled-PostgreSQL password (pilot only)
External DB / RedisSupply host/port/credentials per your chart version’s keys
ValueNotes
Scan scheduleConfigurable per integration in the UI, or a global cadence
Worker replicasIncrease for more parallel scans; beat stays at 1

From chart 0.3.0 an install scans for a fixed window and then stops starting new scans. It is a local date comparison against the values below — nothing phones home, there is no licence server, and an air-gapped install behaves identically.

ValueDefaultNotes
config.licenseTrialDays30Days from the first workspace before the window closes
config.licenseExpiresAt""An explicit UTC date (2026-12-31 or 2026-12-31T23:59:59Z). When set it wins over licenseTrialDays — this is how a window is extended
config.licenseEnforcementEnabledtrueSet false to run the timer in reporting-only mode: state is still computed and shown, nothing is blocked

All three live in the ConfigMap, not the Secret — the expiry is not a secret, and storing it as one would imply a protection it does not have.

Changing them is a plain helm upgrade. The backend, worker and beat pods carry a checksum annotation over this ConfigMap, so they roll themselves; there is no separate restart to remember.

Keep a version-controlled production-values.yaml (secrets referenced from your secret manager, never committed) and apply with helm upgrade --install ... -f production-values.yaml. See Upgrades.