Skip to navigation

Configuration Reference

View as Markdown

The runai-installer CLI reads a configuration YAML file specified with the --config flag. This reference describes every supported configuration field, for both installing the control plane in multi-tenant mode and installing a tenant’s cluster.

Fields marked Required must be specified. All other fields are optional.

Configuration Overview

Core Installation Settings

  • Installation Settings - Installation mode and network connectivity model.
  • Registry Configuration - Credentials for pulling NVIDIA Run:ai images and Helm charts: token authentication (NGC), basic authentication (Harbor and other OCI registries), or no authentication.
  • Default TLS Configuration - Default TLS certificate for the control plane or cluster. The component-level tls block overrides this default.

NVIDIA Run:ai Components

  • Control Plane Configuration - Control plane deployment: whether to install it, its wildcard domain, version, TLS, multi-tenant mode, and custom Helm values.
  • Cluster Configuration - Tenant cluster settings, including how to register it with its tenant using an identity obtained from the control plane’s Management API.

Prerequisites and Features

  • Prerequisite Configuration - Infrastructure components the installer can set up on a tenant cluster before NVIDIA Run:ai: GPU Operator, Prometheus, and Network Operator, each independently set to install or skip.
  • Feature Configuration - Components that extend a tenant cluster for specific workload types: Knative for standard inference, LWS for distributed inference, Kubeflow and MPI Operator for distributed training, plus NIM Operator, Grove, and Dynamo.
  • Common Prerequisite and Feature Fields - Fields shared by every prerequisite and feature, such as mode, version, and customHelmValues.

Networking and Nodes

  • External Connection - How external traffic reaches the control plane or a tenant cluster: Kubernetes Ingress or Gateway API. Omitted entirely on OpenShift, where Routes are configured automatically.
  • System Nodes - Dedicating specific nodes to control plane or cluster system components, with a preferred or required scheduling mode and automatic node labeling.

OpenShift


Core Installation Settings

Installation Settings

Controls the installation type and network connectivity model.

install:
mode: runai_control_plane_only
connectivity: connected
kubernetesDistribution: ""
FieldTypeRequiredDescription
modestringNoInstallation mode. Set to runai_control_plane_only when installing the control plane, or runai_cluster_only when installing a tenant cluster - each uses its own configuration file.
connectivitystringYesNetwork connectivity model. Set to connected.
kubernetesDistributionstringNoKubernetes distribution. Set to openshift when installing a tenant cluster on Red Hat OpenShift - this is the only recognized non-empty value. Omit for every other supported distribution (Upstream Kubernetes or RKE2). Not applicable to the control plane, which does not support OpenShift.

Registry Configuration

Configures the registry credentials used to pull NVIDIA Run:ai images and Helm charts. Which method you need depends on your installation:

  • Open Source installation (type: ngc, no credentials) - Pulls NVIDIA Run:ai’s publicly accessible images from NGC without credentials. host can be omitted; it defaults to NGC’s registry (nvcr.io).
  • Token authentication (type with token or tokenPath) - For an NVIDIA Run:ai Support-Entitled Release installation, pulling from NVIDIA’s own NGC registry (type: ngc). For any other registry secured by a base64-encoded .dockerconfigjson pull secret instead of NGC credentials, use type: dockerconfig.
  • Basic authentication (username with password or passwordPath) - For a private registry you control, such as Harbor or another OCI-compliant registry.
  • No authentication, custom registry (host only, no type) - For any other unauthenticated registry. host is required in this case, since there’s no default to fall back to.

These methods are mutually exclusive. The --ngc-token-path and --registry-token-path command-line flags override the corresponding value in this section - use --ngc-token-path for NGC token authentication, and --registry-token-path for a .dockerconfigjson token.

Token authentication (NGC):

registry:
type: ngc
tokenPath: /path/to/ngc-token # Support-Entitled Release only

Token authentication (dockerconfig):

registry:
type: dockerconfig
tokenPath: /path/to/dockerconfigjson-token

Basic authentication:

registry:
host: <REGISTRY_HOST>
username: runai
passwordPath: /path/to/password

No authentication:

registry:
host: <REGISTRY_HOST>
FieldTypeRequiredDescription
typestringConditionalRegistry type. Required when using token authentication, and for an Open Source installation’s NGC pull. Supported values: ngc (NVIDIA GPU Cloud) and dockerconfig (a base64-encoded .dockerconfigjson pull secret for any other registry).
hoststringConditionalRegistry hostname. Optional when a token is set, or when type is ngc (even without a token - falls back to nvcr.io). Required for basic authentication and any other unauthenticated registry.
tokenstringNoRegistry token specified inline. Mutually exclusive with tokenPath. For production environments, use tokenPath to avoid storing secrets in the configuration file.
tokenPathstringNoPath to a file containing the registry token. Mutually exclusive with token.
usernamestringNoUsername for basic authentication. Requires password or passwordPath.
passwordstringNoPassword specified inline. Mutually exclusive with passwordPath.
passwordPathstringNoPath to a file containing the password. Mutually exclusive with password.
chartRepositorystringNoOverrides the default NGC Helm chart repository URL.
insecureboolNoConnects to the registry over HTTP instead of HTTPS.
insecureSkipVerifyboolNoConnects over HTTPS without verifying the server’s TLS certificate.

Default TLS Configuration

Configures the default TLS settings used by the control plane. A configuration that defines its own controlPlane.tls block uses that block instead of this one; a configuration that omits controlPlane.tls falls back to these top-level settings.

tls:
certPath: /path/to/cert.pem
keyPath: /path/to/key.pem
generateSelfSigned: false
FieldTypeRequiredDescription
certPathstringNoAbsolute path to the TLS certificate file in PEM format. Must be a wildcard certificate matching the control plane domain.
keyPathstringNoAbsolute path to the TLS private key file in PEM format.
generateSelfSignedboolNoGenerates a self-signed TLS certificate automatically. Use only for non-production environments.

NVIDIA Run:ai Components

Control Plane Configuration

Configures the NVIDIA Run:ai control plane.

controlPlane:
enabled: true
version: ""
multiTenant: true
domain: <WILDCARD_DOMAIN>
tls:
certPath: /path/to/cert.pem
keyPath: /path/to/key.pem
customHelmValues: {}
FieldTypeRequiredDescription
enabledboolYesWhether to install the control plane.
versionstringNoControl plane version. Omit to install the latest supported version.
multiTenantboolNoSet to true to install the control plane in multi-tenant mode.
domainstringYesWildcard fully qualified domain name (FQDN) where the NVIDIA Run:ai UI and API are available for every tenant (for example, *.runai.hostorg.com).
tlstlsNoControl plane TLS settings. Overrides the top-level tls configuration. Must be a wildcard certificate matching domain.
customHelmValuesmapNoCustom Helm values merged into the control plane chart. Use this field to configure settings that are not exposed directly by the installer, including the control plane administrator credentials and the external metrics store connection - see Advanced Control Plane Configurations for the full set of keys.

Cluster Configuration

Configures a tenant’s NVIDIA Run:ai cluster component. This section is applied once per tenant cluster, in its own configuration file. The cluster must already be registered with its tenant through the control plane’s Management API before running the installer - the installer consumes that registration, it does not perform it.

cluster:
enabled: true
version: ""
name: <CLUSTER_NAME>
domain: <CLUSTER_DOMAIN>
workloadRouting: host
tls:
certPath: /path/to/cert.pem
keyPath: /path/to/key.pem
inference:
wildcardDomain: "*.<INFERENCE_WILDCARD_DOMAIN>"
wildcardTls:
certPath: /path/to/wildcard-cert.pem
keyPath: /path/to/wildcard-key.pem
controlPlaneUrl: https://<CONTROL_PLANE_DOMAIN>
uid: <CLUSTER_UUID>
bootstrapTokenPath: /path/to/bootstrap-token
customHelmValues: {}
FieldTypeRequiredDescription
enabledboolYesWhether to install the cluster component.
versionstringNoCluster component version. Omit to install the latest supported version.
namestringYesCluster name as it appears in the NVIDIA Run:ai control plane. Must follow Kubernetes naming conventions (lowercase letters, numbers, and hyphens; maximum 63 characters).
domainstringYesFully qualified domain name (FQDN) for this tenant cluster.
controlPlaneUrlstringYesURL of the NVIDIA Run:ai control plane, reachable over HTTPS from this cluster, so the installer can complete registration using the identity below.
uidstringYesUnique identifier of the cluster, obtained by registering it with its tenant through the Management API. Used together with bootstrapTokenPath or clientSecretPath.
bootstrapTokenPathstringConditionalPath to a file containing the bootstrap token for the cluster identified by uid, obtained from the same Management API call. Mutually exclusive with clientSecretPath; exactly one is required.
clientSecretPathstringConditionalPath to a file containing the client secret for the cluster identified by uid, obtained from the Management API. Mutually exclusive with bootstrapTokenPath.
workloadRoutingstringNoWorkload routing method. Supported values: host (subdomain-based routing, default) and path (path-based routing).
tlstlsNoCluster TLS settings. Overrides the top-level tls configuration.
inference.wildcardDomainstringNoWildcard FQDN for inference endpoints (for example, *.runai-inference.tenant-a-corp.com). Required when Knative is installed.
inference.wildcardTlstlsNoTLS settings for the wildcard inference domain.
customHelmValuesmapNoCustom Helm values merged into the cluster chart. Use this field to configure settings that are not exposed directly by the installer - see Advanced Cluster Configurations for the full set of keys.

Prerequisites and Features

Prerequisite Configuration

Configures the infrastructure components that the installer can set up on a tenant cluster before deploying the NVIDIA Run:ai cluster component. Each of gpuOperator, prometheus, and networkOperator accepts the same set of fields - see Common Prerequisite and Feature Fields, below.

prerequisites:
skip: false
gpuOperator:
mode: install
prometheus:
mode: install
networkOperator:
mode: skip
FieldTypeRequiredDescription
skipboolNoSkips installation of all prerequisites. Equivalent to setting mode: skip for every prerequisite.
gpuOperatorobjectNoNVIDIA GPU Operator. Provisions and manages GPUs on worker nodes; required for a tenant cluster to run GPU workloads. Supports the additional type field (see below).
prometheusobjectNoPrometheus monitoring stack, required for NVIDIA Run:ai monitoring.
networkOperatorobjectNoNVIDIA Network Operator. Required for RDMA or Multi-Node NVLink (MNNVL)-capable nodes, to enable high-performance networking features such as GPUDirect RDMA.

Feature Configuration

Configures components that extend a tenant cluster with support for specific workload types. Each component accepts the same fields as prerequisites - see Common Prerequisite and Feature Fields, below.

The features you enable determine which workload types the cluster supports:

Workload TypeRecommended Features
Distributed trainingkubeflow, mpiOperator
Standard (single-node) inferenceknative
Distributed (multi-node) inferencelws
NIM inferencenimOperator
features:
skip: false
knative:
mode: install
kubeflow:
mode: install
mpiOperator:
mode: install
lws:
mode: install
nimOperator:
mode: skip
grove:
mode: skip
dynamo:
mode: skip
FieldTypeRequiredDescription
skipboolNoSkips installation of all features.
knativeobjectNoKnative Serving. Required for standard (single-node) inference workloads. Installing it requires cluster.inference.wildcardDomain to be set (plus a resolvable wildcard certificate, unless using Gateway API), or validation fails.
kubeflowobjectNoKubeflow Training Operator. Required for distributed training workloads (TensorFlow, PyTorch, XGBoost, and JAX). Installs from pinned manifests - customHelmValues is not supported.
mpiOperatorobjectNoMPI Operator. Required for MPI v2-based distributed training, alongside the frameworks the Kubeflow Training Operator provides. Installs from pinned manifests - customHelmValues is not supported.
lwsobjectNoLeaderWorkerSet (LWS). Required for distributed (multi-node) inference workloads.
nimOperatorobjectNoNVIDIA NIM Operator. Enables Kubernetes cluster administrators to operate the software components and services necessary to deploy NVIDIA NIMs and NVIDIA NeMo microservices.
groveobjectNoNVIDIA Grove. Orchestrates multi-component, gang-scheduled workloads, such as disaggregated NVIDIA Dynamo inference deployments.
dynamoobjectNoDynamo Operator. Simplifies the deployment, configuration, and lifecycle management of DynamoGraphs. Installing it (mode: install) requires grove.mode: install as well; validation fails otherwise.

Common Prerequisite and Feature Fields

gpuOperator, prometheus, networkOperator (prerequisites) and knative, kubeflow, mpiOperator, lws, nimOperator, grove, dynamo (features) all accept the following fields:

gpuOperator:
mode: install
type: real
version: ""
customHelmValues: {}
FieldTypeRequiredDescription
modestringNoInstallation behavior. Supported values: install (install the component if it is not already installed) and skip (do not install or require the component). If omitted, defaults to install for prerequisites and skip for features.
typestringNogpuOperator only. GPU Operator variant: real (default) for physical GPUs, or fake for testing without GPU hardware.
versionstringNoComponent version. Omit to install the latest version.
customHelmValuesmapNoCustom Helm values merged into the component’s Helm chart. Not supported for kubeflow or mpiOperator, which install from pinned manifests rather than a Helm chart - setting it there is rejected. On OpenShift, components that install via OperatorHub (OLM) instead of Helm are configured with openshift instead (see below).
openshiftobjectNoOpenShift-specific settings - see Per-Component OpenShift Fields, below. Used only when install.kubernetesDistribution is openshift, and only for components that install via OLM on OpenShift.

Networking and Nodes

External Connection

Configures how the control plane’s or a tenant cluster’s chart exposes its services - as Kubernetes Ingress objects or Gateway API Gateway/HTTPRoute objects. This assumes the matching controller is already running on the target cluster (an Ingress Controller such as HAProxy, or a Gateway API implementation such as KGateway) - see Ingress Controller for setup. Omit this section entirely on OpenShift, where OpenShift Routes are configured automatically.

externalConnection:
type: ingress
ingress:
className: haproxy
FieldTypeRequiredDescription
typestringConditionalExternal traffic routing method. Supported values: ingress (Kubernetes Ingress) and gatewayApi (Gateway API). Required unless the section is omitted on OpenShift.
ingress.classNamestringConditionalName of the IngressClass resource to use. Required when type is ingress. Mutually exclusive with gatewayApi.
gatewayApi.namestringConditionalName of the Gateway resource. Required when type is gatewayApi.
gatewayApi.namespacestringConditionalNamespace of the Gateway resource. Required when type is gatewayApi. Mutually exclusive with ingress.

System Nodes

Configures dedicated nodes for the control plane’s or a tenant cluster’s system components.

By default, these components can be scheduled on any available node.

systemNodes:
enabled: true
mode: preferred
label: runai.ai/system-node
manageLabels: true
nodes:
- node-1
- node-2
FieldTypeRequiredDescription
enabledboolYesWhether to enable system node scheduling.
modestringNoScheduling behavior. Supported values: preferred (schedule system components on system nodes when available, but allow scheduling on other nodes if necessary) and required (schedule system components only on system nodes). Default: preferred.
labelstringNoNode label used to identify system nodes. Defaults to node-role.kubernetes.io/runai-system if omitted.
manageLabelsboolNoWhether the installer automatically applies the system node label to the specified nodes. When true, exactly one of nodes or selector must be set - both or neither is rejected.
nodeslistNoList of node names to designate as system nodes. Mutually exclusive with selector when manageLabels is true.
selectormapNoLabel selector used to identify system nodes instead of specifying individual node names. Mutually exclusive with nodes when manageLabels is true.

OpenShift

Applies to tenant clusters only, when install.kubernetesDistribution: openshift. The NVIDIA Run:ai control plane runs on Kubernetes. Skip this section for every other supported distribution.

OpenShift Configuration

Configures OpenShift-specific installer settings for a tenant cluster.

openshift:
olmCatalog:
source: my-mirrored-catalog
sourceNamespace: openshift-marketplace
FieldTypeRequiredDescription
olmCatalog.sourcestringNoName of the OperatorHub CatalogSource used for all OLM-based operator installations. Any OpenShift install can point at a custom catalog, such as a mirrored or vetted internal one. Omit to use the default public catalogs.
olmCatalog.sourceNamespacestringNoNamespace containing the CatalogSource.

Per-Component OpenShift Fields

Set under any prerequisite’s or feature’s own openshift block (for example, gpuOperator.openshift) when that component installs via OperatorHub (OLM) instead of Helm. This is separate from the OpenShift Configuration section, above, which determines the catalog source these operators are pulled from in the first place - these fields configure how each operator behaves once it is installed from that catalog.

FieldTypeRequiredDescription
installPlanApprovalstringNoOLM upgrade strategy: manual (default; pins the operator to the installed version and requires manual approval to upgrade) or automatic (lets OLM upgrade the operator automatically when a new version is available in the channel).
customResourcemapNoValues merged into the operator’s primary OpenShift custom resource spec. For example, ClusterPolicy for the GPU Operator, NicClusterPolicy for the Network Operator. Mirrors the approach an OpenShift admin uses to customize an OLM-installed operator by editing its CR rather than Helm values.
subscriptionConfig.envmapNoEnvironment variables set on the operator pod via the OLM Subscription’s spec.config. For settings that have no custom resource field, such as the NIM Operator’s ENABLE_WEBHOOKS.