# 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](https://run-ai-docs.nvidia.com/multi-tenant/infrastructure-setup/advanced-setup/control-plane-config).

## 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](https://run-ai-docs.nvidia.com/multi-tenant/infrastructure-setup/advanced-setup/cluster-config).

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="../../../organization-life-cycle/organization-onboarding/system-requirements#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="../../../organization-life-cycle/organization-onboarding/system-requirements#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="../../infrastructure-setup/advanced-setup/node-roles">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> |
