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.
Use the full Helm values surface
Section titled “Use the full Helm values surface”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: 2Open Config → Advanced Helm Values → Helm Values and paste the umbrella-chart document:
dreadnode-api: config: workers: concurrency: evaluation: 2Select Save config, run the preflight checks, then select Deploy. The installer merges this document after the dedicated fields, so an advanced value wins when both interfaces set the same chart key.
Put the same document in the advanced_helm_values item:
apiVersion: kots.io/v1beta1kind: ConfigValuesspec: values: advanced_helm_values: value: | dreadnode-api: config: workers: concurrency: evaluation: 2The 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.
Open the shell for Kubernetes resources
Section titled “Open the shell for Kubernetes resources”SSH to an Embedded Cluster controller node, then start the shell shipped with the installer:
sudo ./dreadnode shellThe 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.
Logging
Section titled “Logging”dreadnode-api: config: logging: level: info structured: falseOpen Config → Logging. Set Log Level and Emit structured JSON logs. The UI offers
debug, info, warning, and error.
apiVersion: kots.io/v1beta1kind: ConfigValuesspec: values: log_level: value: "info" log_structured: value: "0"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.
Worker concurrency
Section titled “Worker concurrency”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: 1Open Config → Scaling & Resources, enable Set API replicas and worker concurrency, then set API Replicas and each Concurrent … per Pod field.
apiVersion: kots.io/v1beta1kind: ConfigValuesspec: values: scaling_customize: value: "1" api_replicas: value: "2" worker_concurrency_evaluation: value: "2" worker_concurrency_worlds: value: "2" worker_concurrency_training: value: "1" worker_concurrency_optimization: value: "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.
Additional environment variables
Section titled “Additional environment variables”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-secretsOpen Config → Advanced Helm Values → Helm Values and paste the Helm block shown in the preceding tab.
apiVersion: kots.io/v1beta1kind: ConfigValuesspec: values: advanced_helm_values: value: | dreadnode-api: extraEnv: - name: SOME_FEATURE_FLAG value: "true" extraEnvFrom: - secretRef: name: my-extra-secretsPrefer extraEnvFrom for credentials so they remain in Kubernetes Secrets.
For Embedded Cluster, create the referenced Secret from the
cluster shell:
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:
kubectl -n kotsadm get deployment dreadnode-api -o yamlFor supported chart settings and defaults, pull the chart’s values file — API
settings live under the dreadnode-api key:
helm show values oci://registry.replicated.com/dreadnode/dreadnode --version <version>