> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Install configuration reference

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`schema`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>YAML schema version.</p></td>
      <td><p>✓</p></td>
      <td><p>`1.16`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Unique deployment name. This must contain the name of the deployment owner.</p></td>
      <td><p>✓</p></td>
      <td><p>`[a-zA-Z0-9_-]+`</p><p>NOTE: On data plane installs, this will be the subdomain of the data plane, i.e. the `data-plane` of `data-plane.domino.example.com`.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`version`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Domino version to install.</p></td>
      <td><p>✓</p></td>
      <td><p>Supported versions: `6.2.0`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`hostname`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Hostname Domino application will be accessed at.</p></td>
      <td><p>✓</p></td>
      <td><p>Valid fully qualified domain name (FQDN)</p><p>NOTE: On data plane installs, this is the `hostname` of the control plane.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`ssl_enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Should Domino only be accessible with HTTPS.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`ssl_redirect`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Should Domino only be accessible with HTTPS.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`request_resources`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Create Kubernetes <a href="https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/">resource requests and limits</a> for services.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`enable_network_policies`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Use <a href="https://kubernetes.io/docs/concepts/services-networking/network-policies/">network policies</a> for fine-grained service access.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p><p>NOTE: Requires a compatible CNI plugin, for example, Calico.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`external_docker_registry`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>A URL to ECR (Amazon Elastic Container Registry), ACR (Azure Container Registry), GCR (Google Container Registry) or GAR (Google Artifact Registry). The node must have permissions to the registry.</p></td>

      <td />

      <td><p>NOTE: Either `external_docker_registry` or `internal_docker_registry` must be configured.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`custom_certificates`</p></td>
    </tr>

    <tr>
      <td />

      <td><p><a href="/6.3/admin/security-and-compliance/custom-certificates">Custom Certificates</a></p></td>
      <td><p>✓</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`minimal_resources`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Use the minimum amount of nodes and resources to run Domino. This may not be a stable configuration and should be used with caution.</p></td>

      <td />

      <td><p>`false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`cluster_domain`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The Kubernetes cluster domain name.</p></td>

      <td />

      <td><p>`cluster.local`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`aws_account_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS account ID in which Domino is deployed.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`operator_role_arn`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>IAM role arn.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`operator_service_account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Kubernetes service account name.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Control and data planes

This section configures whether Domino is a "control plane" or "data plane" install.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`control_plane`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>If `true`, install the control plane. This currently always includes a local data plane.</p></td>

      <td />

      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`data_plane.type`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Which type of data plane to install. When performing a data plane-only install, this should be `remote`.</p></td>

      <td />

      <td><p>`local`, `remote`</p></td>
    </tr>
  </tbody>
</table>

<Note>
  * To perform a standard "control plane" install, you can omit both of these sections. The defaults are a "control plane" and a `local` data plane type.

  * To perform a "data plane" install, you should configure the following:

  ```YAML theme={null}
  control_plane: false
  data_plane:
    type: remote
  ```
</Note>

## Istio

This section configures how and if an [Istio Service Mesh](https://istio.io) is deployed by or integrated to Domino. A Domino-deployed Istio is for Domino use only. These configurations must only be installed and/or enabled if [intra-cluster encryption in transit](/6.3/admin/security-and-compliance/ca-certificates) is required.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`istio.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Istio in deployment (that is, sidecar injection).</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`istio.install`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Install Istio service with Domino.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`istio.cni`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Configures whether Istio installation is done with a CNI.</p> <p>If `true`, the installation is done with a CNI and requires fewer permissions; this is our preferred and recommended setting. If `false`, the installation will add required capabilities to every pod security policy: `NET_ADMIN`, and `NET_RAW`.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Ingress controller

This section configures the [NGINX ingress controller](https://github.com/kubernetes/ingress-nginx) deployed by the `fleetcommand-agent`.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`ingress_controller.install`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Install the NGINX ingress controller.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`ingress_controller.gcp_static_ip_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>On Google Cloud Platform (GCP), use a static IP address to expose nginx.</p></td>

      <td />

      <td><p>The `name` of the IP address</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`ingress_controller.class_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Name of the ingress class for Domino.</p></td>
      <td><p>✓</p></td>
      <td><p>`nginx`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`ingress_controller.istio_annotations`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Include annotations related to Istio.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`,`false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`ingress_controller.allowed_cidrs`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>List of allowed ingress CIDR blocks.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Namespaces

Use [Namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) to virtually segment Kubernetes executions. Domino creates namespaces according to the specifications in this section. The installer requires that these namespaces do not exist at installation.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`namespaces.platform.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Namespace to place Domino services.</p></td>
      <td><p>✓</p></td>
      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names">Kubernetes Names</a></p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`namespaces.compute.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Namespace for user executions.</p></td>
      <td><p>✓</p></td>
      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names">Kubernetes Names</a></p><p>NOTE: Might be the same as the platform namespace.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`namespaces.system.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Namespace for deployment metadata.</p></td>
      <td><p>✓</p></td>
      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names">Kubernetes Names</a></p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`namespaces.istio.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Namespace for Istio.</p></td>
      <td><p>✓</p></td>
      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names">Kubernetes Names</a></p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`namespaces.*.annotations`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Optional annotations to apply to each namespace.</p></td>

      <td />

      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations">Kubernetes Annotation</a></p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`namespaces.*.labels`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Optional labels to apply to each namespace.</p></td>

      <td />

      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels">Kubernetes Labels and Selectors</a></p></td>
    </tr>
  </tbody>
</table>

## Storage classes

[Storage Classes](https://kubernetes.io/docs/concepts/storage/storage-classes/) are a way to abstract the dynamic provisioning of volumes in Kubernetes.

Domino requires the following storage classes:

1. `block` storage for Domino services and user executions that need fast I/O.

2. `shared` storage that can be shared between multiple executions.

Domino supports pre-created storage classes, although the installer can create a `shared` storage class backed by NFS or a cloud NFS analog as long as the cluster can access the NFS system for read and write, and the installer can create several types of `block` storage classes backed cloud block storage systems like Amazon EBS.

### Block

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`storage_classes.block.create`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether to create the block storage class.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.block.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The block storage class name.</p></td>
      <td><p>✓</p></td>
      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/">Kubernetes Name</a></p><p>NOTE: Always required due to platform limitations. Cannot be `""` which indicates the default storage class.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.block.type`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Type of the block storage class to use.</p></td>
      <td><p>✓</p></td>
      <td><p>For example,</p> <ul> <li><p>`ebs`</p></li> <li><p>`hostpath`</p></li> <li><p>`gce`</p></li> <li><p>`azure-disk`</p></li> <li><p>`ceph-rdb`</p></li> </ul></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.block.base_path`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Base path to use on nodes with `hostpath` volumes.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.block.default`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether to set this <a href="https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/">storage class as the default</a>.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

### Shared

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`storage_classes.shared.create`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether to create the shared storage class.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The shared storage class name.</p></td>
      <td><p>✓</p></td>
      <td><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/">Kubernetes Name</a></p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.type`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Type of the shared storage class to use.</p></td>
      <td><p>✓</p></td>
      <td><p>For example,</p> <ul> <li><p>`efs`</p></li> <li><p>`nfs`</p></li> <li><p>`azure-file` Azure File requires outbound port 445 to be open from your Azure cluster.</p></li> <li><p>`cephfs`</p></li> </ul></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.efs.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>EFS store AWS region.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.efs.filesystem_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>EFS filesystem ID.</p></td>

      <td />

      <td><p>For example, `fs-7a535bd1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.efs.access_point_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Access Point ID.</p></td>

      <td />

      <td><p>For example, `fsap-01234567`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.nfs.server`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>NFS server IP or hostname.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.nfs.mount_path`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Base path to use on the server when you create shared storage volumes.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.nfs.mount_options`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>YAML List of additional NFS mount options.</p></td>

      <td />

      <td><p>For example, `- mfsymlinks`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`storage_classes.shared.azure_file.storage_account`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure storage account to create file stores.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Blob storage

Domino can store long-term, unstructured data in blob storage buckets. Only the `shared` storage class described previously (NFS and S3) are supported for `logs`.

`projects` also support Azure storage, and `backups` also supports both Azure and Google Cloud Storage (GCS) storage.

### S3

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`blob_storage.*.s3.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region of the S3 bucket store.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`blob_storage.*.s3.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>S3 bucket name.</p></td>

      <td />

      <td><p>For example, `domino-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`blob_storage.*.s3.sse_kms_key_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>KMS Key ARN.</p></td>

      <td />

      <td><p>For example, `arn:aws:kms:us-west-2:890728157128:key/mrk-eb66487f9d674b46b3ca3c8b934ddd4b`</p></td>
    </tr>
  </tbody>
</table>

### Azure

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`blob_storage.*.azure.account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure storage account name.</p></td>

      <td />

      <td><p>For example, `mystorage`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`blob_storage.*.azure.account_key`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Access key for the storage account.</p></td>

      <td />

      <td><p>For example, `domino-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`blob_storage.*.azure.container`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Name of the container in the storage account.</p></td>

      <td />

      <td><p>For example, `backups`</p></td>
    </tr>
  </tbody>
</table>

### GCS (Google Cloud Storage)

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`blob_storage.backups.gcs.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The bucket name.</p></td>

      <td />

      <td><p>For example, `domino-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`blob_storage.backups.gcs.service_account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The service account name with write access to the bucket.</p></td>

      <td />

      <td><p>For example, `bucket-sa`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`blob_storage.backups.gcs.project_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The service account’s project name.</p></td>

      <td />

      <td><p>For example, `myproject`</p></td>
    </tr>
  </tbody>
</table>

## Autoscaler

For Kubernetes clusters without native cluster scaling in response to new user executions, Domino supports the use of the [cluster autoscaler](https://github.com/kubernetes/autoscaler).

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`autoscaler.cloud_provider`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Cloud provider Domino is deployed with.</p></td>

      <td />

      <td><p>For example, `aws`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.aws.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region Domino is deployed into.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.azure.resource_group`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure resource group Domino is deployed into.</p></td>

      <td />

      <td><p><a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/deploy-to-resource-group?tabs=azure-cli">Azure resource group</a></p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.azure.subscription_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure subscription ID Domino is deployed with.</p></td>

      <td />

      <td><p><a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/deploy-to-resource-group?tabs=azure-cli">Azure subscription ID</a></p></td>
    </tr>
  </tbody>
</table>

### AWS Auto Discovery

The cluster autoscaler supports [Auto Discovery](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler/cloudprovider/aws#auto-discovery-setup) on AWS. Without any explicit configuration of specific autoscaling groups, it detects all ASGs that have the appropriate tags and refreshes them if their settings are updated directly. All ASGs must be listed with accurate min/max settings (or not listed at all) is not required as referenced below in the Groups section. ASG settings can be updated directly in AWS. The cluster-autoscaler configuration doesn’t need to be updated, and you don’t need to rerun the installer.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`autoscaler.auto_discovery.cluster_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>K8s Cluster Name.</p></td>

      <td />

      <td><p>Must <strong>exactly</strong> match the name in AWS</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.auto_discovery.tags`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Optional: If filled in, `cluster_name` is ignored.</p></td>

      <td />

      <td><p>For example, `- my.tag` or `[]`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.groups`</p></td>
    </tr>

    <tr>
      <td />

      <td />

      <td />

      <td><p>Must be set to `[]` if using `auto_discovery`</p></td>
    </tr>
  </tbody>
</table>

By default, if no `autoscaler.groups` and `autoscaler.auto_discovery.tags` are specified, the `cluster_name` will be used to look for the following AWS tags:

* `k8s.io/cluster-autoscaler/enabled`

* `k8s.io/cluster-autoscaler/{{ cluster_name }}`

The `tags` setting can be used to explicitly specify which resource tags the autoscaler service must look for.

To disable auto-discovery and use specific `groups`, ensure that `auto_discovery.cluster_name` is an empty value.

### Groups

Autoscaling groups are not dynamically discovered. Each autoscaling group must be individually specified, along with the minimum and maximum scaling size.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`autoscaler.groups.*.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Autoscaling group name.</p></td>

      <td />

      <td><p>Must <strong>exactly</strong> match the name in the cloud provider</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.groups.*.min_size`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Minimum scaling size.</p></td>

      <td />

      <td><p>For example, `0`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`autoscaler.groups.*.max_size`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Maximum scaling size.</p></td>

      <td />

      <td><p>For example, `10`</p></td>
    </tr>
  </tbody>
</table>

## External DNS

Domino can automatically configure your cloud DNS provider. See [external-dns](https://github.com/kubernetes-sigs/external-dns) for more information.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`external_dns.provider`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Cloud DNS provider.</p></td>

      <td />

      <td><p>For example, `aws`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`external_dns.domain_filters`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Only allow access to domains that match this filter.</p></td>

      <td />

      <td><p>For example, `my-domain.example.com`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`external_dns.zone_id_filters`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Only allow updates to specific <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html">hosted zones</a>.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`txt_owner_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The owner ID in the TXT record.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Email notifications

Domino supports SMTP to send email notifications in response to user actions and run results.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`email_notifications.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether Domino must send email notifications.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`email_notifications.server`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>SMTP server hostname or IP.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`email_notifications.port`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>SMTP server port.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`email_notifications.enable_ssl`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether the SMTP server uses SSL encryption.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`email_notifications.from_address`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Email address to send emails from Domino with.</p></td>

      <td />

      <td><p>For example, `domino @example.com`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`email_notifications.authentication.username`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>If you use SMTP authentication, the username.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`email_notifications.authentication.password`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>If you use SMTP authentication, the password.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Monitoring

Domino supports in-cluster monitoring with Prometheus as well as more detailed, external monitoring through New Relic APM and Infrastructure.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`monitoring.prometheus_metrics`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Install Prometheus monitoring.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.node_exporter`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Node Exporter to generate and expose hardware and OS metrics.</p></td>

      <td />

      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.kube_state_metrics`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Kube-State-Metrics to generate and expose cluster-level metrics.</p></td>

      <td />

      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.newrelic.apm`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable New Relic APM.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.newrelic.infrastructure`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable New Relic Infrastructure.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.newrelic.license_key`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>New Relic account license key.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.newrelic.managed_controlplane`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Configure New Relic for Kubernetes clusters with managed control planes, i.e. EKS, AKS, and GKE.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`monitoring.gpu_metrics`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable GPU metrics.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Grafana Alerts

Domino supports in-cluster alerting with Grafana. To enable in-cluster alerting, a Grafana contact point needs to be defined to receive alert notifications.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="3"><p>`grafana_alerts.slack.name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The display name of the Slack contact point in the Grafana UI.</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="3"><p>`grafana_alerts.slack.channel`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The name of the Slack channel to send alerts to.</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="3"><p>`grafana_alerts.slack.token`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The Slack app token used to authenticate to your Slack workspace.</p></td>

      <td />
    </tr>
  </tbody>
</table>

## Helm

Configuration for the [Helm](https://helm.sh/) repository that stores Domino’s charts.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`helm.version`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Which version of Helm to use.</p></td>
      <td><p>✓</p></td>
      <td><p>`2` or `3`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`helm.host`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Hostname of the chart repository.</p></td>
      <td><p>✓</p></td>
      <td><p>For Helm 2 this must be `quay.io` or the address of your private app server. For Helm 3 it must be `gcr.io`.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`helm.namespace`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Namespace to find charts in the repository.</p></td>

      <td />

      <td><p>Helm repo namespace. When you use official Domino repositories this must be `domino`. For Helm 3 with `gcr.io` or `mirrors.domino.tech`, use `domino-eng-service-artifacts`.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`helm.username`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Username for chart repository if authentication is required. When you use Helm 3 with charts hosted in GCR this must be `_json_key`.</p></td>

      <td />

      <td><p>Username</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`helm.password`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Password for chart repository if authentication is required.</p></td>

      <td />

      <td><p>For Helm 3 this is the base64 encoded JSON key that was provided by Domino.</p></td>
    </tr>
  </tbody>
</table>

### Image registries

List of [Docker](https://www.docker.com/) registries for Domino components.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`helm.image_registries.*.server`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Docker registry host.</p></td>
      <td><p>✓</p></td>
      <td><p>For example,</p> <ul> <li><p>`quay.io`</p></li> <li><p>`mirrors.domino.tech`</p></li> </ul></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`helm.image_registries.*.username`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Docker registry username.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`helm.image_registries.*.password`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Docker registry password.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>
  </tbody>
</table>

## Internal Docker registry

The recommended configuration for the internal Docker registry deployed with Domino. Use override values to allow the registry to use S3, GCS, or Azure blob store as a backend store. GCS requires a service account already be bound into the Kubernetes cluster with configuration to ensure the `docker-registry` service account is properly mapped.

<Note>
  Either `internal_docker_registry` or `external_docker_registry` must be configured.
</Note>

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`internal_docker_registry.s3_override.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region of the S3 bucket store.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.s3_override.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>S3 bucket name.</p></td>

      <td />

      <td><p>For example, `domino-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.s3_override.sse_kms_key_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>KMS Key ARN.</p></td>

      <td />

      <td><p>For example, `arn:aws:kms:us-west-2:890728157128:key/mrk-eb66487f9d674b46b3ca3c8b934ddd4b`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.gcs_override.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>GCS bucket name.</p></td>

      <td />

      <td><p>For example, `domino-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.gcs_override.service_account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>GCS service account with access to the bucket.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.gcs_override.project_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>GCP project name that Domino is deployed into.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.azure_blobs_override.account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure blobstore account name.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.azure_blobs_override.account_key`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure blobstore account key.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`internal_docker_registry.azure_blobs_override.container`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure blobstore container name.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Telemetry

Domino supports user telemetry data to help improve the product.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`mixpanel.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Mixpanel. Defaults to `true`. Set to `false` to disable telemetry. <em>See the note below.</em></p></td>

      <td />

      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`mixpanel.redacted_mode`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>When enabled, telemetry data will be redacted to remove potentially sensitive information.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

<Note>
  To set a `customer_name` or `deployment_name` so Domino Support can identify your deployment, see [Deployment identification](/6.3/admin/configuration/deployment-identification) — that's a separate setting from the `mixpanel` block on this page.
</Note>

<Note>
  * As of Domino 6.2.0, `mixpanel.enabled` defaults to `true`. In Domino 6.1.x, this setting had to be explicitly set to enable telemetry.

  * As of Domino 6.1.0, the `mixpanel.token` field was removed from `deploy.yaml`. Do not set this value yourself - a static default token is applied automatically. Setting it will cause a validation error: `Extra inputs are not permitted in telemetry.mixpanel.token`.
</Note>

## Support

Domino supports customer service tools to improve customer experience.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`zendesk.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Zendesk.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`zendesk.token`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Zendesk API token.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>
  </tbody>
</table>

## Domino Governance

Configuration for Domino Governance.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`ai_governance.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Domino Governance.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Audit Trail

Domino’s Audit Trail feature captures user-generated events to be queried and viewed in the UI.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`audit_trail.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable Audit Trail.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## GPU

If using NVIDIA-based GPU compute nodes, enable the following configuration setting to install the required components:

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`gpu.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable GPU support.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Neuron

If using Neuron Trainium GPU compute nodes, enable the following configuration setting to install the required components:

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`neuron.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable GPU support.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Fleetcommand

Domino supports minor patch upgrades through an internal tool named **Fleetcommand**. To learn more about the telemetry being sent back to Domino, see [Deployments Telemetry](/6.3/admin/configuration/deployment-telemetry).

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`fleetcommand.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable ability for Domino staff to apply minor patches.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`fleetcommand.url`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The URL to fleetcommand, Domino staff will provide this.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`fleetcommand.api_token`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Deployment-specific API token (Domino staff will provide this).</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Node selectors

Domino will by default deploy some DaemonSets on all available nodes in the host cluster. When you run Domino in a multi-tenant Kubernetes cluster, where some nodes must not be used by Domino, you can label nodes for Domino with a single, consistent label. Then, provide that label to `fleetcommand-agent` with the below configuration to apply a selector to all Domino resources for that label.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`global_node_selectors`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>List of key/value pairs to use as the label for the selector.</p></td>
      <td><p>Optional</p></td>
      <td><p>Example:</p><pre><code>{"global_node_selectors:\n  domino-owned: \"true\""}</code></pre><p>This example applies a selector for `domino-owned=true` to all Domino deployment resources.</p></td>
    </tr>
  </tbody>
</table>

## Pod configurations

Global pod configuration that applies to all pods which Domino deploys.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`global_pod_annotations`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>List of key and value pairs to use as annotations that apply to all pods.</p></td>
      <td><p>Optional</p></td>
      <td><p>Example:</p><pre><code>{"global_pod_annotation:\n  my-annotation: \"abc\""}</code></pre><p>This example adds an annotation `my-annotation` to all Domino pod resources.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`global_pod_labels`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>List of key and value pairs to use as labels that apply to all pods.</p></td>
      <td><p>Optional</p></td>
      <td><p>Example:</p><pre><code>{"global_pod_labels:\n  my-label: \"abc\""}</code></pre><p>This example adds a label `my-label` to all Domino pod resources.</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`global_pod_environment`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>List of name and value pairs to use as environment variables that apply to all pods.</p></td>
      <td><p>Optional</p></td>
      <td><p>Example:</p><pre><code>{"global_pod_environment:\n  - name: MY_ENV\n    value: VALUE"}</code></pre><p>This example adds an environment variable `MY_ENV` to all Domino pod resources.</p></td>
    </tr>
  </tbody>
</table>

## Image caching

These settings control the Domino image caching service, which runs as a privileged pod and uses the host Docker socket to pre-pull popular Domino environment images onto compute workers. It can be disabled.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`image_caching.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether or not to deploy the image caching service.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Certificate management

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`certificate_management.install`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether to install cert-manager. Domino requires cert-manager, but only one instance of cert-manager can be installed in any given Kubernetes cluster. If your Kubernetes cluster already has cert-manager installed, this should be false.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Teleport Kubernetes agent

No teleport support is installed if `teleport_kube_agent` is not present.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`teleport_kube_agent.proxyAddr`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The teleport address.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`teleport_kube_agent.authToken`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>The authentication token for Teleport.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>
  </tbody>
</table>

## Elasticsearch

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`elasticsearch.enable_sysctl`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>To disable the `sysctlInitContainer` (which runs as root), set the `sysctl vm.max_map_count` correctly through some other method.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## Image building

A builder will use a storage cache as large as the amount specified by the `cache_storage_size`. When a build completes, the storage cache is reduced to the `cache_storage_retention` amount. The `cache_storage_retention` value must not be greater than the `cache_storage_size`.

When the underlying OS does not support user namespace mapping, like EKS, you might have to disable rootless building for deployment targets. Running rootless in an environment that does not support it defaults to using the native filesystem snapshotter and causes image building performance to drop significantly.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`image_building.verbose`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enable verbose logging.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.rootless`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Run as a non-root user.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.concurrency`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Maximum number of concurrent image builds.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.cache_storage_size`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Size of each image builder’s cache.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.cache_storage_retention`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Amount of storage to keep during garbage collection.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.builder_node_selector`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>List of key/value pairs to use as the label for the selector.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.pool_sync_wait_time`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Duration after which builder cluster is inspected for idle pods.</p></td>

      <td />

      <td><p>Examples: `1h`, `5m`, `30s`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.pool_max_idle_time`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Duration after which idle build pods are terminated.</p></td>

      <td />

      <td><p>Examples: `1h`, `5m`, `30s`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.fetch_and_extract_timeout`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Duration the build waits to fetch and extract the remote Docker context.</p></td>

      <td />

      <td><p>Examples: `1h`, `5m`, `30s`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.pool_endpoint_watch_timeout`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Number of seconds the worker pool waits for a buildkit pod to become ready for traffic.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

### Registries

Configures buildkit/hephaestus to support HTTP-only and/or self-signed registries.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`image_building.registries.*.http`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Registry only supports HTTP.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.registries.*.insecure`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Registry uses a self-signed certificate and is considered insecure.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

### Cloud registry authentication

Set up cloud authentication so that the image builder can pull images from and push images to cloud container registries.

#### Azure

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`image_building.cloud_registry_auth.azure.tenant_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure AD Directory (tenant) ID.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.cloud_registry_auth.azure.client_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure AD Application (client) ID.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.cloud_registry_auth.azure.client_secret`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure AD Application secret, required when using a Service Principal.</p></td>

      <td />

      <td />
    </tr>

    <tr>
      <td colSpan="4"><p>`image_building.cloud_registry_auth.azure.workload_identity`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure AD Application (client) ID represents a Workload Identity.</p></td>
      <td><p>✓</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

#### Google Cloud Platform (GCP)

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`image_building.cloud_registry_auth.gcp.service_account`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Service account with access to target GCR/GAR registry.</p></td>
      <td><p>✓</p></td>

      <td />
    </tr>
  </tbody>
</table>

## Service host prefixes

Certain services (currently only apps) can be configured with a separate subdomain.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>

      <th />
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`service_host_prefixes.app`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Optional subdomain prefix for apps.</p></td>

      <td />

      <td />
    </tr>
  </tbody>
</table>

## Admin Toolkit

The Domino Admin Toolkit compiles troubleshooting data for debugging and support.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>

      <th />
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`admin_toolkit.enable_report_uploads`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Upload toolkit report to Domino.</p></td>

      <td />

      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

## FIPS

Control whether Domino is FIPS 140-2 compliant.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`fips`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Enables a FIPS compliant configuration.</p></td>
      <td><p>Optional</p></td>
      <td><p>`true`, `false`</p></td>
    </tr>
  </tbody>
</table>

<Note>
  Enabling FIPS compliance will require the following:

  1. The Kubernetes node image must have FIPS enabled.

  2. To ensure compliance with the fips-140-2 policy, a FIPS enabled version of Istio must be installed and enabled. This can be achieved by setting `fips=true` and `istio.install=true`. Otherwise, if you’re providing your own version of Istio, it must be FIPS compliant.

  3. For EKS, the following must be added to [global\_pod\_environment](#pod-configurations).

  ```YAML theme={null}
  global_pod_environment:
    - name: AWS_USE_FIPS_ENDPOINT
      value: "true"
  ```
</Note>

## Domino Flows

Domino Flows enables efficient orchestration and monitoring of multi-step processes while ensuring full lineage and reliable reproducibility. Domino Flows is implemented on top of Flyte, which is an open-source task orchestrator that facilitates building production-grade data and ML pipelines. The orchestrator stores task data (inputs and outputs) and task metadata in blob storage. Configure the following so that Domino Flows has appropriate access to blob storage.

### AWS

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`flyte.metadata_storage.s3.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region of the Flyte metadata S3 bucket.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.metadata_storage.s3.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Flyte metadata S3 bucket name.</p></td>

      <td />

      <td><p>For example, `domino-flyte-metadata-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.metadata_storage.s3.sse_kms_key_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>KMS key ID associated with the Flyte metadata S3 bucket.</p></td>

      <td />

      <td><p>For example, `2f38143f-a42e-4f11-9ebb-162f11a6c350`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.data_storage.s3.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region of the Flyte data S3 bucket.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.data_storage.s3.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Flyte data S3 bucket name.</p></td>

      <td />

      <td><p>For example, `domino-flyte-data-bucket-1`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.data_storage.s3.sse_kms_key_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>KMS key ID associated with the Flyte data S3 bucket.</p></td>

      <td />

      <td><p>For example, `2f38143f-a42e-4f11-9ebb-162f11a6c350`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.eks.aws_account_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS account ID associated with the Flyte S3 buckets.</p></td>

      <td />

      <td><p>For example, `012345678901`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.eks.controlplane_role_arn`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>ARN for the AWS role that has access to the Flyte metadata S3 bucket.</p></td>

      <td />

      <td><p>For example, `arn:aws:iam::012345678901:role/domino-flyte-controlplane`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.eks.dataplane_role_arn`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>ARN for the AWS role that has access to the Flyte data S3 bucket.</p></td>

      <td />

      <td><p>For example, `arn:aws:iam::012345678901:role/domino-flyte-dataplane`</p></td>
    </tr>
  </tbody>
</table>

### Azure

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`flyte.metadata_storage.azure.account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure storage account name for the Flyte metadata container.</p></td>

      <td />

      <td><p>For example, `domino-flyte-account-name`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.metadata_storage.azure.account_key`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Access key for the Flyte metadata storage account.</p></td>

      <td />

      <td><p>For example, `[to come]`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.metadata_storage.azure.container`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Name of the Flyte metadata container in the storage account.</p></td>

      <td />

      <td><p>For example, `domino-flyte-metadata-container`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.data_storage.azure.account_name`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure storage account name for the Flyte data container.</p></td>

      <td />

      <td><p>For example, `[to come]`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.data_storage.azure.account_key`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Access key for the Flyte data storage account.</p></td>

      <td />

      <td><p>For example, `[to come]`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.data_storage.azure.container`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Name of the Flyte data container in the storage account.</p></td>

      <td />

      <td><p>For example, `domino-flyte-data-container`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.aks.tenant_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>ID of the tenant associated with the storage containers.</p></td>

      <td />

      <td><p>For example, `fc04e151-a39c-40a1-96d9-3913aa8a4a46`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.aks.subscription_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure subscription ID associated with the storage containers.</p></td>

      <td />

      <td><p>For example, `f914720b-d639-4832-bc9c-4d6f2cdebce4`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.aks.controlplane_client_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure client ID associated with the metadata storage.</p></td>

      <td />

      <td><p>For example, `3831e719-05b8-470f-a171-a3b34ca50af9`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`flyte.cluster_config.aks.dataplane_client_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Azure client ID associated with the data storage.</p></td>

      <td />

      <td><p>For example, `01770221-a803-49fb-bda4-94033a87638e`</p></td>
    </tr>
  </tbody>
</table>

## Workspace File Audit

Enable the Workspace File Audit service during installation or upgrade. You provision two AWS S3 buckets for audit data storage and enable the service flags in the installer.

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Description</th>
      <th>Required</th>
      <th>Values</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colSpan="4"><p>`workspace_audit.enabled`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Whether the workspace audit feature should be enabled.</p></td>

      <td />

      <td><p>For example, `true`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.cloud_provider`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Cloud storage provider to be used for the workspace audit feature.</p></td>

      <td />

      <td><p>For example, `aws`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.event_archive_storage_aws.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Name of the workspace audit archive S3 bucket.</p></td>

      <td />

      <td><p>For example, `domino-workspace-audit-archive-bucket`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.event_archive_storage_aws.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region of the workspace audit archive S3 bucket.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.event_archive_storage_aws.s3.sse_kms_key_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>KMS key ID associated with the workspace audit archive S3 bucket.</p></td>

      <td />

      <td><p>For example, `2f38143f-a42e-4f11-9ebb-162f11a6c350`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.event_working_storage_aws.bucket`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>Name of the workspace audit working S3 bucket.</p></td>

      <td />

      <td><p>For example, `domino-workspace-audit-working-bucket`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.event_working_storage_aws.region`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>AWS region of the workspace audit working S3 bucket.</p></td>

      <td />

      <td><p>For example, `us-west-2`</p></td>
    </tr>

    <tr>
      <td colSpan="4"><p>`workspace_audit.event_working_storage_aws.sse_kms_key_id`</p></td>
    </tr>

    <tr>
      <td />

      <td><p>KMS key ID associated with the workspace audit working S3 bucket.</p></td>

      <td />

      <td><p>For example, `2f38143f-a42e-4f11-9ebb-162f11a6c350`</p></td>
    </tr>
  </tbody>
</table>
