# 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/self-hosted/2.21/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/self-hosted/2.21/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>                                                                                                                                                                                                                                                                               |
| `spec.researcherService.ingress.tlsSecret` *(string)* | <p>Existing secret key where cluster <a href="../system-requirements#tls-certificate">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="../system-requirements#tls-certificate">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>                                                                                                                                                                                                                          |
| `controlPlane.existingSecret`                         | Specifies the name of the existing Kubernetes secret where the cluster’s `clientSecret` used for secure connection with the control plane is stored.                                                                                                                                                                                                    |
| `controlPlane.secretKeys.clientSecret`                | Specifies the key within the `controlPlane.existingSecret` that stores the cluster’s `clientSecret` used for secure connection with the control plane.                                                                                                                                                                                                  |
