# Customized Installation

This section explains the available configurations for customizing the NVIDIA Run:ai control plane and cluster installation.

## Control Plane Helm Chart Values

The NVIDIA Run:ai control plane installation can be customized to support your environment via Helm [values files](https://helm.sh/docs/chart_template_guide/values_files/) or [Helm install](https://helm.sh/docs/helm/helm_install/) flags. See [Advanced control plane configurations](/multi-tenant/2.22/infrastructure-setup/advanced-setup/control-plane-config.md).

## Cluster Helm Chart Values

The NVIDIA Run:ai cluster installation can be customized to support your environment via Helm [values files](https://helm.sh/docs/chart_template_guide/values_files/) or [Helm install](https://helm.sh/docs/helm/helm_install/) flags.

These configurations are saved in the `runaiconfig` Kubernetes object and can be edited post-installation as needed. For more information, see [Advanced cluster configurations](/multi-tenant/2.22/infrastructure-setup/advanced-setup/cluster-config.md).

The following table lists the available Helm chart values that can be configured to customize the NVIDIA Run:ai cluster installation.

| Key                                                   | Description                                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `global.image.registry` *(string)*                    | <p>Global Docker image registry<br>Default: <code>""</code></p>                                                                                                                                                                                                                                                                                               |
| `global.additionalImagePullSecrets` *(list)*          | <p>List of image pull secrets references<br>Default: <code>\[]</code></p>                                                                                                                                                                                                                                                                                     |
| `global.additionalJobLabels` *(object)*               | <p>Set NVIDIA Run:ai and 3rd party services' <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/">Pod Labels</a> in a format of key/value pairs<br>Default: <code>""</code></p>                                                                                                                                                |
| `global.additionalJobAnnotations` *(object)*          | <p>Set NVIDIA Run:ai and 3rd party services' <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/">Annotations</a> in a format of key/value pairs<br>Default: <code>""</code></p>                                                                                                                                          |
| `spec.researcherService.ingress.tlsSecret` *(string)* | <p>Existing secret key where cluster <a href="/pages/Xy5tdSm1e1RSqAgCdXen#tls-certificates">TLS certificates</a> are stored (non-OpenShift)<br>Default: <code>runai-cluster-domain-tls-secret</code></p>                                                                                                                                                      |
| `spec.researcherService.route.tlsSecret` *(string)*   | <p>Existing secret key where cluster <a href="/pages/Xy5tdSm1e1RSqAgCdXen#tls-certificates">TLS certificates</a> are stored (OpenShift only)<br>Default: <code>""</code></p>                                                                                                                                                                                  |
| `spec.prometheus.spec.image` *(string)*               | <p>Due to a <a href="https://github.com/prometheus-community/helm-charts/issues/4734">known issue</a> In the Prometheus Helm chart, the <code>imageRegistry</code> setting is ignored. To pull the image from a different registry, you can manually specify the Prometheus image reference.<br>Default: <code>quay.io/prometheus/prometheus</code></p>       |
| `spec.prometheus.spec.imagePullSecrets` *(string)*    | <p>List of image pull secrets references in the <code>runai</code> namespace to use for pulling Prometheus images (relevant for air-gapped installations).<br>Default: <code>\[]</code></p>                                                                                                                                                                   |
| `global.customCA.enabled`                             | Enables the use of a custom Certificate Authority (CA) in your deployment. When set to `true`, the system is configured to trust a user-provided CA certificate for secure communication.                                                                                                                                                                     |
| `openShift.securityContextConstraints.create`         | <p>Enables the deployment of Security Context Constraints (SCC). Disable for CIS compliance.<br>Default: <code>true</code></p>                                                                                                                                                                                                                                |
| `global.tolerations` *(list)*                         | Configure [Kubernetes tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for NVIDIA Run:ai system-level services                                                                                                                                                                                                     |
| `global.affinity` *(object)*                          | <p>Sets the system nodes where NVIDIA Run:ai system-level services are scheduled. Using <code>global.affinity</code> will overwrite the <a href="/pages/PESnVPqtquNQQ0YRGnAk">node roles</a> set using the Administrator CLI (runai-adm).<br>Default: Prefer to schedule on nodes that are labeled with <code>node-role.kubernetes.io/runai-system</code></p> |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://run-ai-docs.nvidia.com/multi-tenant/2.22/getting-started/installation/custom-install.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
