Preparations
This page prepares your environment for installing the NVIDIA Run:ai control plane and cluster: setting up your installer machine, creating the namespaces and TLS/CA secrets each install needs, and retrieving software artifacts and registry access.
System Requirements
Complete the System Requirements section before starting. It covers:
- Infrastructure Requirements - Hardware, operating system, Kubernetes distribution, storage, and permissions required in your Kubernetes environment.
- Networking Setup - Load balancer and ingress requirements, FQDNs, TLS certificates and private keys, and a local CA chain if your certificates are privately signed. The exact requirements depend on your deployment model, routing configuration, and the workload types you plan to support.
- Third-Party Services - The third-party services deployed as part of the installation.
- External Access to Critical Services - The inbound and outbound connectivity required to reach those services and NVIDIA registries.
Gov-ready
For a Gov-ready installation, also review Gov-Ready Third-Party Services and the Gov-ready outbound access to Docker Hub, which replace the standard third-party services images.
Your deployment model determines how the installation steps are applied. In a same-cluster deployment, the control plane and NVIDIA Run:ai cluster are installed on the same Kubernetes cluster. In a multi-cluster deployment, control plane setup is completed once, and cluster setup is repeated for each NVIDIA Run:ai cluster.
General Setup
This section covers what you set up once, before installing anything: your installer machine and the registry credentials needed to pull NVIDIA Run:ai images. None of it depends on your deployment model or on whether you are installing the control plane, the cluster, or both.
Installer Machine
The machine you run Helm from needs:
- At least 50GB of free space
- Docker installed
- Helm 3.14 or later
Note
If you are installing air-gapped, the machine running airgap pack and the machine running airgap load each need at least 20GB of free space.
Note
Helm 4 defaults to server-side apply when installing a new chart release, which can conflict with resources managed by the NVIDIA Run:ai operator. Append --server-side=false to your helm upgrade command. NVIDIA Run:ai clusters originally installed with Helm 3.x are unaffected.
Registry Credentials
NVIDIA Run:ai Support-Entitled Release installations require an NGC Personal Key to authenticate to the NVIDIA Run:ai container registry (nvcr.io), for connected installs. Generate a Personal Key from the NGC Personal Keys page.
Personal Keys begin with nvapi-. NGC authenticates using the literal username $oauthtoken with the key as the password. The Personal Key is used during installation, to pull the NVIDIA Run:ai container images. Use this key to create the runai-reg-creds secret described in Software Artifacts below.
For connected installs, NVIDIA Run:ai’s telemetry for Support-Entitled Release installations is not associated with your organization by default. To associate it with your NCA ID, generate an NGC Service API Key. In the Service field, select both NVIDIA Run:ai Self-Hosted and NGC Catalog. The Personal Key is used during installation. The Service API Key is used at runtime, after installation, by the NVIDIA Run:ai control plane to report telemetry. Pass the resulting key as telemetryService.telemetryAuth.token during installation, or reference a secret you create yourself beforehand via telemetryService.telemetryAuth.existingSecret/secretKey. Create the runai-backend namespace first, as described in Control Plane Namespace, then create the secret:
Control Plane Setup
This section covers what you set up for the NVIDIA Run:ai control plane: its namespace and TLS certificate and local CA secrets. A deployment has only one control plane, whether same-cluster or multi-cluster. Set it up on the control plane’s own Kubernetes cluster - the same Kubernetes cluster as the first NVIDIA Run:ai cluster in a same-cluster deployment, or a dedicated Kubernetes cluster in a multi-cluster deployment. See Deployment Model.
Control Plane Namespace
The NVIDIA Run:ai control plane uses a namespace or project (OpenShift) called runai-backend. Use the following to create the namespace/project:
Kubernetes
OpenShift
Control Plane Certificate
This certificate secures the NVIDIA Run:ai control plane FQDN you prepared in FQDN and DNS. Before creating the secret below, see TLS Certificates to confirm which certificate you need and why.
-
Kubernetes - You must have a TLS certificate that is associated with the FQDN for HTTPS access. Create a Kubernetes Secret named
runai-backend-tlsin therunai-backendnamespace and include the path to the TLS--certand its corresponding private--keyby running the following:- Replace
/path/to/fullchain.pemwith the actual path to your TLS certificate. - Replace
/path/to/private.pemwith the actual path to your private key.
- Replace
-
OpenShift - NVIDIA Run:ai uses the OpenShift default Ingress router for serving. The TLS certificate configured for this router must be issued by a trusted CA. For more details, see the OpenShift documentation on configuring certificates.
Control Plane Local CA
If your TLS certificates are signed by a private or local CA rather than a publicly trusted one, you need to provide that CA’s certificate chain as part of installation. See Local Certificate Authority (CA) for details.
- Add the public key to the
runai-backendnamespace:
Kubernetes
OpenShift
- When installing the control plane, make sure the following flag is added to the helm command
--set global.customCA.enabled=true. See Install control plane.
Cluster Setup
This section covers what you set up for each NVIDIA Run:ai cluster: its namespace, TLS certificates, host-based routing, and local CA secrets. Set it up on the Kubernetes cluster where the NVIDIA Run:ai cluster will run - the same Kubernetes cluster as the control plane in a same-cluster deployment, or a separate Kubernetes cluster per NVIDIA Run:ai cluster in a multi-cluster deployment. In a multi-cluster deployment, repeat this section once per cluster. See Deployment Model.
Note
If you are deploying the NVIDIA Run:ai cluster on the same Kubernetes cluster as the NVIDIA Run:ai control plane, the control plane’s FQDN, TLS certificate, and CA secrets already satisfy the cluster’s requirements - you do not need to repeat them.
Cluster Namespace
The NVIDIA Run:ai cluster must be installed in a namespace or project (OpenShift) called runai. Use the following to create the namespace/project:
Kubernetes
OpenShift
Pod Security Admission
NVIDIA Run:ai supports restricted policy for Pod Security Admission (PSA) on OpenShift only. Other Kubernetes distributions are only supported with privileged policy.
For NVIDIA Run:ai on OpenShift to run with PSA restricted policy:
-
Label the
runainamespace as described in Pod Security Admission with the following labels: -
The workloads submitted through NVIDIA Run:ai should comply with the restrictions of PSA restricted policy. This can be enforced using Policies.
Cluster TLS Certificates
These certificates secure the NVIDIA Run:ai cluster, workspaces, training, distributed inference, and standard inference FQDNs you prepared in FQDN and DNS. Before creating the secrets below, see TLS Certificates to confirm which certificates you need and why. The workspaces, training, and distributed inference wildcard certificate is only needed for the default host-based routing - see Host-Based Routing (Ingress Resource) below for the matching Ingress setup. If you are using path-based routing instead, skip that certificate.
Cluster Domain Certificates (Single-Domain)
-
Kubernetes - To enable secure communication between the NVIDIA Run:ai control plane and the cluster, configure a TLS certificate associated with the cluster’s main domain (e.g.
runai.mycorp.local). This certificate should be stored as a secret namedrunai-cluster-domain-tls-secretin therunainamespace.- Replace
/path/to/fullchain.pemwith the actual path to your TLS certificate. - Replace
/path/to/private.pemwith the actual path to your private key.
- Replace
-
OpenShift - NVIDIA Run:ai uses the OpenShift default Ingress router for serving. The TLS certificate configured for this router must be issued by a trusted CA. For more details, see the OpenShift documentation on configuring certificates.
Workspaces, Training, and Distributed Inference Wildcard Certificate
Note
For path-based routing, this certificate is not required.
- Kubernetes - To allow secure access to workspace, training, and distributed inference workloads via subdomains, configure a wildcard TLS certificate that matches the cluster domain (e.g.
*.runai.mycorp.local). This certificate should be stored as a secret namedrunai-cluster-domain-star-tls-secretin therunainamespace.-
Replace
/path/to/fullchain.pemwith the actual path to your TLS certificate. -
Replace
/path/to/private.pemwith the actual path to your private key.
-
- OpenShift - A wildcard TLS certificate for Workspace and Training workloads is not required. OpenShift Routes handle TLS termination for workspace and training endpoints using the platform’s built-in routing and certificate management.
Standard Inference Wildcard Certificate
Note
The inference wildcard certificate is only required for standard inference (Knative, single-node) workloads exposed externally via wildcard FQDN. Other inference workloads (for example, distributed inference using serving frameworks such as LWS, Dynamo, KServe, or others) do not require this certificate. For cluster-local standard inference, skip this section.
-
Kubernetes - To securely expose inference services over HTTPS, configure a wildcard TLS certificate for the inference domain (e.g.
*.runai-inference.mycorp.local). This certificate should be stored as a secret namedrunai-cluster-inference-tls-secretin theknative-servingnamespace.- Replace
/path/to/fullchain.pemwith the actual path to your TLS certificate. - Replace
/path/to/private.pemwith the actual path to your private key.
- Replace
-
OpenShift - A wildcard TLS certificate for Inference workloads is not required. OpenShift Routes handle TLS termination for inference endpoints using the platform’s built-in routing and certificate management.
Host-Based Routing (Ingress Resource)
Note
- The following steps are required for Kubernetes only. For OpenShift, no additional configuration is required.
- NVIDIA Run:ai also supports path-based routing. If you prefer to use it instead of the default host-based routing, disable host-based routing by setting
clusterConfig.global.subdomainSupport: falseduring the Helm installation. See Advanced cluster configurations. - If you choose path-based routing, skip the steps below.
Host-based routing binds together the configured domains (FQDN), TLS certificates, and ingress rules to expose workloads externally. With NVIDIA Run:ai host-based routing, workloads are exposed using subdomains, so each workload is assigned its own URL. For example:
Host-based routing relies on:
- The FQDN structure defined earlier
- The TLS certificates configured for those domains
-
Ensure that:
- Wildcard DNS records are configured (see FQDN and DNS)
- TLS certificates are created and stored as Kubernetes secrets (see Cluster TLS Certificates above)
-
Create the ingress resource
-
Run the following:
Cluster Local CA
If your TLS certificates are signed by a private or local CA rather than a publicly trusted one, you need to provide that CA’s certificate chain as part of installation. See Local Certificate Authority (CA) for details.
1. Add the public key to the required namespace:
Kubernetes
OpenShift
- When installing the cluster, make sure the following flag is added to the helm command
--set global.customCA.enabled=true. See Install the cluster.
Note
For Git and S3 data source integrations, NVIDIA Run:ai supports the following options:
- Use the same custom CA defined during cluster installation by setting:
--set global.customCAGit.enabled=trueor
--set global.customCAS3.enabled=true. - Use a different CA certificate specifically for Git or S3 by enabling the setting and providing a custom secret name:
--set global.customCAGit.enabled=true
--set global.customCAGit.secret.name=<git-ca-cert>or
--set global.customCAS3.enabled=true
--set global.customCAS3.secret.name=<s3-ca-cert>
For more details, see Advanced cluster configurations.
Software Artifacts
This section describes how to prepare the software artifacts required for installing the NVIDIA Run:ai control plane and cluster. The steps depend on:
- Platform distribution - Kubernetes or OpenShift
- On-premise environment type - connected or air-gapped (i.e. not connected)
Kubernetes
Connected
Connected
In connected environments, Kubernetes pulls NVIDIA Run:ai container images directly from a remote registry at runtime.
Note
This section applies only to NVIDIA Run:ai Support-Entitled Release installations. NVIDIA Run:ai Open Source images are served publicly from nvcr.io with no authentication, so no registry secret is needed.
For Support-Entitled Release, you must create a Kubernetes secret for registry access. NVIDIA Run:ai container images are hosted in the NVIDIA NGC container registry under nvidia/runai-oss. Using the NGC Personal Key from Registry Credentials above, create the required secret:
Note
Creating this secret alone does not configure the control plane to use it - you must also add --set global.imagePullSecrets[0].name=runai-reg-creds to the helm upgrade command. See Install the Control Plane.
Gov-ready
A Gov-ready installation also pulls the hardened third-party images from Docker Hub, which requires a separate Docker Hub access token and image pull secret in the runai-backend and runai namespaces. Refer to Docker Hub Credentials for how to create them and reference them in the Helm values.
Air-gapped
Air-gapped
In air-gapped environments, the cluster cannot pull container images from external registries during runtime. Instead, use the runai-installer binary’s airgap pack command to build a bundle containing every image your release needs on a connected machine, transfer it into your air-gapped network, then use its airgap load command to push those images to your internal registry and generate the Helm values that point to it.
Pack the Bundle (Connected Machine)
Packing happens on a separate connected machine - any machine with outbound internet access.
On that connected machine, download the runai-installer binary and use its airgap pack command to build a single tarball containing every image your release needs - NVIDIA Run:ai platform images and third-party service images (PostgreSQL, Keycloak, and others) alike. See Third-Party Services.
-
Download the
runai-installerbinary for your operating system and CPU architecture, on each machine you run the installer from. Replace<VERSION>with the NVIDIA Run:ai version you are installing, for example3.0.17: -
Create a pack configuration file (
airgap-pack.yaml) and runairgap packagainst it:settings- Required. Your target NVIDIA Run:ai version, architecture, and output path.imageOverrides- Points specific third-party service images (for example, Keycloak) at your own source instead of the default one. Each entry also acceptsgroup, required only whennameexists in more than one image group - seeimageOverridesin the Configuration Reference.registryAuth- Authenticates to your own registry hosting animageOverridessource.- Third-party services - Add an entry to
imageOverridesfor each hardened third-party image, and an entry toregistryAuthfordocker.iowith your Docker Hub credentials. See Gov-Ready Third-Party Services for the full example. Gov-ready
-
Transfer the resulting tarball into the air-gapped network.
Load the Bundle (Air-Gapped Network)
Loading happens once the tarball is in the air-gapped network, on any machine there with access to both the tarball and your internal mirror registry.
- Extract the
runai-installerbinary from the transferredrunai-airgap-<RUNAI_VERSION>.tar.gzbundle. - Create a load configuration file (
airgap-load.yaml) and runairgap loadagainst it:
This extracts the bundle, pushes every image to <REGISTRY_URL>, and writes control-plane-airgap-values.yaml and cluster-airgap-values.yaml into valuesDir.
Pass these as -f <VALUES_DIR>/control-plane-airgap-values.yaml and -f <VALUES_DIR>/cluster-airgap-values.yaml to the helm upgrade commands in Install the Control Plane and Install the Cluster.
<VALUES_DIR> is the valuesDir path you set in airgap-load.yaml above.
Private Docker Registry
To access the organization’s docker registry, set the registry’s credentials (imagePullSecret).
Create the secret named runai-reg-creds in the runai-backend namespace based on your existing credentials. The configuration will be copied over to the runai namespace at cluster install. For more information, see Pull an Image from a Private Registry.
OpenShift
Connected
Connected
In connected environments, OpenShift pulls NVIDIA Run:ai container images directly from a remote registry at runtime.
Note
This section applies only to NVIDIA Run:ai Support-Entitled Release installations. NVIDIA Run:ai Open Source images are served publicly from nvcr.io with no authentication, so no registry secret is needed.
For Support-Entitled Release, you must create a Kubernetes secret for registry access. NVIDIA Run:ai container images are hosted in the NVIDIA NGC container registry under nvidia/runai-oss. Using the NGC Personal Key from Registry Credentials above, create the required secret:
Note
Creating this secret alone does not configure the control plane to use it - you must also add --set global.imagePullSecrets[0].name=runai-reg-creds to the helm upgrade command. See Install the Control Plane.
Gov-ready
A Gov-ready installation also pulls the hardened third-party images from Docker Hub, which requires a separate Docker Hub access token and image pull secret in the runai-backend and runai namespaces. Refer to Docker Hub Credentials for how to create them and reference them in the Helm values.
Air-gapped
Air-gapped
In air-gapped environments, the cluster cannot pull container images from external registries during runtime. Instead, use the runai-installer binary’s airgap pack command to build a bundle containing every image your release needs on a connected machine, transfer it into your air-gapped network, then use its airgap load command to push those images to your internal registry and generate the Helm values that point to it.
Pack the Bundle (Connected Machine)
Packing happens on a separate connected machine - any machine with outbound internet access.
On that connected machine, download the runai-installer binary and use its airgap pack command to build a single tarball containing every image your release needs - NVIDIA Run:ai platform images and third-party service images (PostgreSQL, Keycloak, and others) alike. See Third-Party Services.
-
Download the
runai-installerbinary for your operating system and CPU architecture, on each machine you run the installer from. Replace<VERSION>with the NVIDIA Run:ai version you are installing, for example3.0.17: -
Create a pack configuration file (
airgap-pack.yaml) and runairgap packagainst it:settings- Required. Your target NVIDIA Run:ai version, architecture, and output path.imageOverrides- Points specific third-party service images (for example, Keycloak) at your own source instead of the default one. Each entry also acceptsgroup, required only whennameexists in more than one image group - seeimageOverridesin the Configuration Reference.registryAuth- Authenticates to your own registry hosting animageOverridessource.- Third-party services - Add an entry to
imageOverridesfor each hardened third-party image, and an entry toregistryAuthfordocker.iowith your Docker Hub credentials. See Gov-Ready Third-Party Services for the full example. Gov-ready
-
Transfer the resulting tarball into the air-gapped network.
Load the Bundle (Air-Gapped Network)
Loading happens once the tarball is in the air-gapped network, on any machine there with access to both the tarball and your internal mirror registry.
- Extract the
runai-installerbinary from the transferredrunai-airgap-<RUNAI_VERSION>.tar.gzbundle. - Create a load configuration file (
airgap-load.yaml) and runairgap loadagainst it:
This extracts the bundle, pushes every image to <REGISTRY_URL>, and writes control-plane-airgap-values.yaml and cluster-airgap-values.yaml into valuesDir.
Pass these as -f <VALUES_DIR>/control-plane-airgap-values.yaml and -f <VALUES_DIR>/cluster-airgap-values.yaml to the helm upgrade commands in Install the Control Plane and Install the Cluster.
<VALUES_DIR> is the valuesDir path you set in airgap-load.yaml above.
Private Docker Registry
To access the organization’s docker registry, set the registry’s credentials (imagePullSecret).
Create the secret named runai-reg-creds in the runai-backend namespace based on your existing credentials. The configuration will be copied over to the runai namespace at cluster install. For more information, see Allowing pods to reference images from other secured registries.
Next Steps
With your environment prepared, continue to Prerequisites and Features to install the GPU Operator, Prometheus, and any workload-specific features (such as distributed training or inference) the NVIDIA Run:ai cluster needs.