Skip to main content

Kubernetes via Helm (Production)

The recommended way to deploy Hades in production is with Helm. The chart bundles the API, Scheduler, Operator, and NATS broker, and defaults to the Hades Operator executor - the modern, Kubernetes-native execution mode.

Prerequisites

  • Kubernetes v1.25+
  • Helm v3.12+
  • kubectl configured to point to your target cluster

Install

The chart is published to GHCR as an OCI artifact. In every command below, replace <version> with the chart version you want to install (for example 1.0.0; see the available versions):

helm upgrade --install hades oci://ghcr.io/hades-scheduler/charts/hades \
--version <version> -n hades --create-namespace

Option B - From a local checkout

# 1. Add the NATS sub-chart dependency
helm repo add nats https://nats-io.github.io/k8s/helm/charts
helm dependency build ./helm/hades/

# 2. Install (default: operator mode)
helm upgrade --install hades ./helm/hades -n hades --create-namespace

Override values inline as needed - at minimum set your ingress host:

helm upgrade --install hades oci://ghcr.io/hades-scheduler/charts/hades --version <version> \
-n hades --create-namespace \
--set ingress.host=hades.example.com \
--set ingress.tls.secretName=my-tls-secret
Release name vs namespace

The first hades is the Helm release name (can be anything). The -n hades flag sets the namespace, created automatically with --create-namespace.

Verify Connectivity

Tail the Scheduler logs to confirm it connected to NATS and started in operator mode:

kubectl -n hades logs deploy/hades-scheduler -f

Expected healthy output:

INFO Connected to NATS server url=nats://hades-nats.hades.svc:4222
INFO Started HadesScheduler in Kubernetes mode
INFO Using operator mode (dynamic client)
CRDs are not upgraded by Helm

Helm applies CRDs only on first install. When a release changes the BuildJob CRD, apply it manually from the matching chart version:

helm show crds oci://ghcr.io/hades-scheduler/charts/hades --version <version> | kubectl apply -f -

Upgrade & Rollback

helm upgrade hades oci://ghcr.io/hades-scheduler/charts/hades --version <version> -n hades

# Roll back to a previous revision
helm history hades -n hades
helm rollback hades <revision> -n hades

Uninstall

helm uninstall hades -n hades
# Optionally remove the namespace and any leftover resources
kubectl delete namespace hades

Next Steps