Skip to main content
The chart renders the same objects as the kustomize manifests: ServiceAccount, ConfigMap, PVC, Role, RoleBinding, Service, Deployment, and optionally an Ingress and a Secret. Pick the chart when you run several environments or drive deployment from values. Pick the manifests when you want to read exactly what will be applied.

A values file worth starting from

values.yaml

Three values decide whether it works

ReadWriteMany
required
An RWO claim does not fail. Kubernetes gives each pod its own volume, so a multi-node job’s checkpoint shards split across pods and the run cannot be resumed — with nothing in the logs to say why. The chart defaults to RWX; the StorageClass has to actually support it.
url
required
Training pods POST their metrics to it. Use the in-cluster service name. An external ingress address leaves the cluster and comes back in; 127.0.0.1 is the worker’s own loopback.
string
required
Without FORGE_WEB_JWT_SECRET each process signs with its own key: every restart logs everyone out, and more than one replica cannot work at all. The chart’s install notes warn when neither this nor secrets.create is set.

Secrets

secrets.create: true renders a Secret from secrets.data — convenient on a test cluster, wrong in production, because the values land in your release history. Point secrets.existingSecret at a Secret from kubectl create secret, Sealed Secrets, or the External Secrets Operator:

One thing the chart does for you

FORGE_K8S_STORAGE_PVC is filled in from the claim the chart creates, so the executor is always told about the claim that actually exists. That pairing is easy to break by hand — the executor checks a claim that is not the one mounted, reports healthy, and the mismatch only surfaces when a multi-node run fails to resume. Override it only when reusing a claim the chart does not own:

Verify before you apply

Confirm it worked

That last call is the one worth reading: it compares the FORGE_K8S_STORAGE_SHARED declaration against the claim’s real access modes, which is the check that catches an RWO claim before a job does.
The chart is verified with helm lint and helm template on every change. Installing it against a live cluster is not something CI here can do — no runner has one — so the first install on your cluster is the first real test. Run the dry-run above first.