Open-sourced helm chart for run:AI An open-source Helm chart has been published that installs NVIDIA Run:ai's control plane and cluster alongside the KAI Scheduler it schedules with, wrapping the upstream charts at version 3.0.20 from the helm.ngc.nvidia.com/nvidia/runai-oss repository. The chart adds release profiles, validation, the Secrets the upstream charts expect, and a cluster registration step, and must be installed once per namespace across three ordered releases: runai-prerequisites, runai-backend, and runai-cluster. It requires Kubernetes 1.30 or later, Helm 3.x or 4.x, kubectl, curl, jq, an ingress controller, a DNS name for global.domain, a TLS certificate, and a default StorageClass for the PostgreSQL, Thanos (100Gi) and NATS volumes. Installs NVIDIA Run:ai control plane and cluster and the KAI Scheduler it schedules with The chart wraps the published upstream charts and adds the glue between them: release profiles, validation, the Secrets the upstream charts expect to exist, and the cluster registration step. | Subchart | Upstream chart | Version | Repository | |---|---|---|---| | controlplane | control-plane | 3.0.20 | https://helm.ngc.nvidia.com/nvidia/runai-oss | | cluster | runai-cluster bundles kai-resource-management v0.18.3 and kai-scheduler v0.18.3 | 3.0.20 | https://helm.ngc.nvidia.com/nvidia/runai-oss | | kai | kai-scheduler | v0.18.3 | oci://ghcr.io/kai-scheduler/kai-scheduler | | monitoring | kube-prometheus-stack | 76.2.0 | https://prometheus-community.github.io/helm-charts | | gpu | gpu-operator , fake-gpu-operator | v26.7.1, 0.0.62 | https://helm.ngc.nvidia.com/nvidia , oci://ghcr.io/run-ai/fake-gpu-operator | | runailib | library chart with the shared helpers | | | The chart is installed once per namespace. Each release enables its components with a profile file: | Order | Release | Namespace | Profile | Installs | |---|---|---|---|---| | 1 | runai-prerequisites | any runai-prerequisites | values.prerequisites.yaml | Prometheus Operator, NVIDIA GPU Operator or the fake GPU operator with values.dev.yaml | | 2 | runai-backend | runai-backend | values.control-plane.yaml | Run:ai control plane: backend services, UI, Keycloak, PostgreSQL, Thanos, NATS | | 3 | runai-cluster | runai | values.cluster.yaml | Run:ai cluster: operator, admission, agent, KAI Scheduler | | | kai-scheduler | kai-scheduler | values.kai-scheduler.yaml | KAI Scheduler alone, for clusters without Run:ai | The control plane and the cluster cannot share a release. The cluster's pre-install hooks call the control-plane API with a cluster UUID and a bootstrap token, and the control plane issues both only once it is running. scripts/register cluster.sh registers the cluster and writes them to a values file for release 3. KAI Scheduler comes with release 3: runai-cluster depends on kai-resource-management , which depends on kai-scheduler . The Run:ai operator writes KAI's Config and the kai-resource-management node-pool controller writes one SchedulingShard per node pool. The standalone kai-scheduler profile is for clusters that run KAI without Run:ai, and the chart refuses to render it together with the cluster profile. - Kubernetes = 1.30, Helm 3.x or 4.x, kubectl , curl , jq . - An ingress controller. The control plane creates an Ingress with class nginx by default global.ingress.ingressClass , nginx or haproxy . OpenShift uses Routes. - A DNS name for the control plane global.domain that resolves to the ingress controller, both from where scripts/install.sh runs and from inside the cluster. - A TLS certificate for global.domain : PEM in controlplane.tls , a cert-manager issuer in controlplane.tls.certManager , or a kubernetes.io/tls Secret runai-backend-tls created in namespace runai-backend before the install. - A default StorageClass for the PostgreSQL, Thanos 100Gi and NATS volumes. - A Prometheus Operator and an NVIDIA GPU stack DCGM exporter . Release 1 installs both; skip it with --skip-prerequisites when the cluster already has them. From a git checkout: ./helm dependencies.sh scripts/install.sh --domain runai.example.com -f my-values.yaml my-values.yaml is passed to every release. A minimal one with a certificate for the domain: controlplane: tls: certificate: | -----BEGIN CERTIFICATE----- ... key: | -----BEGIN PRIVATE KEY----- ... When the certificate is signed by a private CA, also set the CA so the cluster components trust it: global: customCA: enabled: true runai: customCA: certificate: | -----BEGIN CERTIFICATE----- ... and pass --cacert ca.pem to scripts/install.sh for the registration calls. scripts/install.sh --help lists the options: --skip-prerequisites , --skip-control-plane , --skip-cluster , --dev fake GPUs , --cluster-name , --admin-user , --cacert , --insecure , --timeout . The UI is at https://