Skip to content

Chart overrides and tuning

Configure logging, worker concurrency, and additional API environment variables for self-hosted Dreadnode.

Everything on this page is chart configuration, applied by a redeploy. Helm operators set values in an overlay. Embedded Cluster operators use dedicated Admin Console fields or their matching KOTS ConfigValues items. Advanced Helm Values is the escape hatch for everything without a dedicated Embedded Cluster field.

The same umbrella-chart values document works on all three configuration paths:

Put the values in your Helm overlay:

dreadnode-api:
config:
workers:
concurrency:
evaluation: 2

The values persist across configuration changes and upgrades. Paste the values document without a leading --- separator; Embedded Cluster indents it into a larger document during deployment.

Chart schemas validate the settings they cover. For example, a misspelled dreadnode-api.config.loging key is rejected, and an unsupported logging level is rejected with the allowed values. Not every subchart has a complete schema, so preflight success does not prove every advanced key is valid. Verify the rendered workload after changing an advanced setting.

SSH to an Embedded Cluster controller node, then start the shell shipped with the installer:

Terminal window
sudo ./dreadnode shell

The shell puts kubectl and helm on PATH and configures access to the cluster. Dreadnode runs in the kotsadm namespace. Use it for Kubernetes resources such as Secrets that the values document references, not for chart-value overrides. Run commands inside this shell without sudo, then type exit when you finish.

dreadnode-api:
config:
logging:
level: info
structured: false

Supported levels are trace, debug, info, success, warning, error, and critical. Use debug while investigating an incident. trace is much more verbose and is intended for framework-level diagnosis.

The Admin Console offers the four common levels. To use trace, success, or critical on Embedded Cluster, set dreadnode-api.config.logging.level through Advanced Helm Values.

Each API pod runs workers for evaluations, Worlds jobs, training, and optimization. The default concurrency is one worker of each type per API pod.

dreadnode-api:
replicaCount: 2
config:
workers:
concurrency:
evaluation: 2
worlds: 2
training: 1
optimization: 1

Increase a value when its queue is backing up and the API pod has available CPU and memory. Every API replica runs its own set of workers, so adding replicas raises total concurrency as well. The resource preset controls how much CPU and memory each pod gets; these settings control how much of it runs in parallel. Check the pods have headroom against the preset before raising either.

Use extraEnv or extraEnvFrom only for API settings that do not have a first-class chart value:

dreadnode-api:
extraEnv:
- name: SOME_FEATURE_FLAG
value: 'true'
extraEnvFrom:
- secretRef:
name: my-extra-secrets

Prefer extraEnvFrom for credentials so they remain in Kubernetes Secrets. For Embedded Cluster, create the referenced Secret from the cluster shell:

Terminal window
kubectl -n kotsadm create secret generic my-extra-secrets \
--from-literal=SOME_API_TOKEN='<api-token>' \
--dry-run=client -o yaml | kubectl apply -f -

Deploy the configuration, then inspect the effective Deployment if you need to verify the rendered environment:

Terminal window
kubectl -n kotsadm get deployment dreadnode-api -o yaml

For supported chart settings and defaults, pull the chart’s values file — API settings live under the dreadnode-api key:

Terminal window
helm show values oci://registry.replicated.com/dreadnode/dreadnode --version <version>