Skip to main content

Helm Install

Cordum ships with a Helm chart under cordum-helm/.

Prerequisites

  • Kubernetes cluster
  • Helm 3
  • kubectl

Install (local chart)

helm install cordum ./cordum-helm -n cordum --create-namespace

Install (published chart)

helm repo add cordum https://charts.cordum.io
helm repo update
helm install cordum cordum/cordum -n cordum --create-namespace

Note: the chart defaults to the image tags in values.yaml (currently v0.9.7) and pulls from GHCR. If those tags are not published in your registry, override global.image.tag and dashboard.image.tag (or point to your own registry).

Local dev (kind + local images)

The chart expects images like ghcr.io/cordum-io/cordum/api-gateway:<tag>. If you are installing from a local clone without published images, build and load images into your cluster and override tags:

docker compose build

for svc in api-gateway scheduler safety-kernel workflow-engine context-engine dashboard; do
docker tag "cordum-cordum-${svc}:latest" "ghcr.io/cordum-io/cordum/${svc}:dev"
done

kind load docker-image --name cordum \
ghcr.io/cordum-io/cordum/api-gateway:dev \
ghcr.io/cordum-io/cordum/scheduler:dev \
ghcr.io/cordum-io/cordum/safety-kernel:dev \
ghcr.io/cordum-io/cordum/workflow-engine:dev \
ghcr.io/cordum-io/cordum/context-engine:dev \
ghcr.io/cordum-io/cordum/dashboard:dev

helm upgrade --install cordum ./cordum-helm -n cordum --create-namespace \
--set global.image.tag=dev \
--set dashboard.image.tag=dev

For non-kind clusters, push to a registry you control and set global.image.repository, global.image.tag, and dashboard.image.* accordingly (plus imagePullSecrets if needed).

Access (port-forward)

The chart exposes services as ClusterIP by default. For local access:

kubectl -n cordum port-forward svc/cordum-api-gateway 8081:8081
kubectl -n cordum port-forward svc/cordum-dashboard 8082:8080

Dashboard: http://localhost:8082 HTTP requests must include X-API-Key and X-Tenant-ID (use gateway.env.tenantId as the default tenant).

The API key is required. Set it with:

helm upgrade --install cordum ./cordum-helm \
-n cordum --create-namespace \
--set secrets.apiKey=<your-api-key> \
--set gateway.env.tenantId=default \
--set dashboard.env.tenantId=default

To embed the API key in the dashboard config (not recommended for shared environments):

helm upgrade --install cordum ./cordum-helm \
-n cordum --create-namespace \
--set secrets.apiKey=<your-api-key> \
--set dashboard.env.embedApiKey=true \
--set dashboard.env.tenantId=default

Common overrides

helm install cordum ./cordum-helm \
-n cordum --create-namespace \
--set global.image.tag=v0.9.7 \
--set secrets.apiKey=<your-api-key> \
--set gateway.env.tenantId=default \
--set dashboard.env.tenantId=default

Use external Redis/NATS:

helm install cordum ./cordum-helm \
-n cordum --create-namespace \
--set nats.enabled=false \
--set redis.enabled=false \
--set external.natsUrl=nats://nats.example.com:4222 \
--set external.redisUrl=redis://redis.example.com:6379

Use an external safety kernel:

helm install cordum ./cordum-helm \
-n cordum --create-namespace \
--set safetyKernel.enabled=false \
--set external.safetyKernelAddr=safety-kernel.example.com:50051

Tune JetStream durability (fsync cadence):

helm install cordum ./cordum-helm \
-n cordum --create-namespace \
--set nats.jetstream.syncInterval=1s