🔎 To search this document for specific values, use dot-notation to search, i.e. coordinator.volumeSize.
ℹ️ In all code examples, [...] denotes additional values that have been omitted.
Type: String
By default, the image is set to dremio/dremio-oss, the community edition of Dremio.
The image refers to the location to retrieve the specific container image for Dremio. In some cases, the image value may vary in corporate environments where there may be a private container registry that is used.
Type: String
By default, the value is set to latest.
The imageTag refers to the tag/version of the container image for Dremio.
Note: It is strongly recommended to pin the version of Dremio that we are deploying by setting the imageTag to a precise version and not leave the value as latest. If you are directly consuming Dremio's images from Docker Hub, when specifying which version to use, it is recommended to use the full version tag in the form X.Y.Z (i.e. 21.1.0), as image tags in the form X.Y (i.e. 21.1) are continually updated with the latest patch version released. Since Dremio versions are not backwards compatible, leaving it as latest or in the form X.Y may automatically upgrade Dremio during pod creation.
Type: Array
By default, this value is not set.
In some environments, an internal mirror may be used that requires authentication. For enterprise users, you may need to specify the imagePullSecret for the Kubernetes cluster to have access to the Dremio enterprise image. Please refer to the documentation Pull an Image from a Private Repository provided by Kubernetes on how to create an image pull secret.
Type: String
By default, this value is not set and will use the default service account configured for the Kubernetes cluster.
This value can be independently overridden in each section (coordinator, executor, zookeeper).
More Info: See the Service Accounts documentation for Kubernetes.
Type: String
By default, this value is not set and will use the default storage class configured for the Kubernetes cluster.
Storage class has a direct impact on the performance of the Dremio cluster. Optionally set this value to use the same storage class for all persistent volumes created. This value can be independently overridden in each section (coordinator, executor, zookeeper).
More Info: See the Storage Classes documentation for Kubernetes.
By default, these values are set to empty. These values can be independently overridden in each section (coordinator, executor, zookeeper).
Type: Dictionary
The annotations set at this root level are used by all StatefulSet resources unless overridden in their respective configuration sections.
For example, you can set annotations as follows:
annotations:
example-annotation-one: "example-value-one"
example-annotation-two: "example-value-two"
[...]More Info: See the Annotations documentation for Kubernetes.
Type: Dictionary
The pod annotations set at this root level are used by all Pod resources unless overridden in their respective configuration sections.
For example, you can set pod annotations as follows:
podAnnotations:
example-pod-annotation-one: "example-value-one"
example-pod-annotation-two: "example-value-two"
[...]More Info: See the Annotations documentation for Kubernetes.
Type: Dictionary
The labels set at this root level are used by all StatefulSet resources unless overridden in their respective configuration sections.
For example, you can set labels as follows:
labels:
example-label-one: "example-value-one"
example-label-two: "example-value-two"
[...]More Info: See the Labels and Selectors documentation for Kubernetes.
Type: Dictionary
The pod labels set at this root level are inherited by all Pod resources unless overridden in their respective configuration sections.
For example, you can set pod labels as follows:
podLabels:
example-pod-label-one: "example-value-one"
example-pod-label-two: "example-value-two"
[...]More Info: See the Labels and Selectors documentation for Kubernetes.
Type: Dictionary
The node selectors set at this root level are inherited by all Pod resources unless overridden in their respective configuration sections.
For example, you can set the node selector to select nodes that have a label diskType of value ssd as follows:
nodeSelector:
diskType: "ssd"
[...]More Info: See the nodeSelector section of Assigning Pods to Nodes documentation for Kubernetes.
Type: Array
The tolerations set at this root level are inherited by all Pod resources unless overridden in their respective configuration sections.
For example, if there is a node with the taint example-key=example-value:NoSchedule, you can set the tolerations to allow the pod to be scheduled as follows:
tolerations:
- key: "example-key"
operator: "Exists"
effect: "NoSchedule"
[...]More Info: See the Taints and Tolerations documentation for Kubernetes.
Type: Boolean
By default, logs are written to stdout. To write logs to a file on disk, set this value to true.
For example, to write logs to a file:
writeLogsToFile: trueType: Dictionary
This section controls the deployment of coordinator instance(s). See the Coordinator Values section.
Type: Dictionary
This section controls the deployment of executor instance(s). See the Executor Values section.
Type: Dictionary
This section controls Dremio's distributed storage configuration. See the Distributed Storage Values section.
Type: Dictionary
This section controls Dremio's Kubernetes service which is exposed to end users of Dremio. See the Service Values section.
Type: Dictionary
This section controls the deployment of Zookeeper in Kubernetes. See the Zookeeper Values section.
Type: String
By default, this value is not set.
This value controls additional parameters passed to the Dremio process.
For example, to pass an additional system property to the java process, you can specify the following:
extraStartParams: >-
-DsomeTestKey=someValue
[...]Type: String
By default, this value is not set.
This value controls additional initContainers that are started as part of the initialization process for Dremio's pods. The value specified here may reference values specified in the built-in Values object in Helm.
For example, to have an initContainer with the Dremio image, you can specify the following:
extraInitContainers: |
- name: dremio-hello-world
image: {{ $.Values.image }}:{{ $.Values.imageTag }}
command: ["echo", "Hello World"]
[...]Type: Array
By default, this value is not set.
This value controls additional environment variables that are set in Dremio's pods.
For example, to set environment variables:
extraEnvs:
- name: EXAMPLE_ENVIRONMENT_VARIABLE
value: example_valueType: Array
By default, this value is not set.
This value controls additional volumes that are attached to the Dremio's pods. This specifies additional volumes that should be mountable to the containers in Dremio's pods. This value is typically used in conjunction with extraVolumeMounts.
For example, if you have a ConfigMap named cm-dremio-additional-files with additional files that you want to include in the running Dremio pods, you can specify the following:
extraVolumes:
- name: dremio-additional-files
configMap:
name: cm-dremio-additional-files
[...]Type: Array
By default, this value is not set.
This value controls the additional volumes that should be mounted to the Dremio containers and the paths that each volume should be mounted at. This value is typically used in conjunction with extraVolumes.
For example, if you have set the above extraVolumes value as shown in the example, you can map this volume into the path /additional-files as follows:
extraVolumeMounts:
- name: dremio-additional-files
mountPath: "/additional-files"
[...]Type: Integer
By default, the value of cpu is 15 and the value of memory is 122800 (MB).
The values for cpu and memory control the amount of CPU and memory in MB being requested for each coordinator instance for the purposes of scheduling a coordinator to a specific node in the Kubernetes cluster.
Note: While the values specified are not upper bounds, the value of memory specified here is used by the chart to calculate the allocation of heap and direct memory used by Dremio.
Type: Integer
By default, the value is set to 0.
Increasing this number controls the secondary coordinators that are launched as part of the deployment. Regardless of this value, at minimum one master coordinator is launched as part of the deployment. The total number of coordinator instances launched will always be coordinator.count + 1.
Type: String
By default, the value is set to 512Gi.
The coordinator volume is used to store the RocksDB KV store and requires a performant disk. In most hosted Kubernetes environments, disk performance is determined by the size of the volume.
Type: Integer
By default, the value is set to 9047.
To change the port that Dremio listens on, change the port to a desired value. The valid range of ports is 1 to 65535.
Type: Boolean
By default, the value is set to false.
To enable TLS on the web UI, set this value to true. Also, provide a value for coordinator.web.tls.secret that corresponds with the TLS secret that should be used.
Type: String
By default, the value is set to dremio-tls-secret-ui.
This value is ignored if coordinator.web.tls.enabled is not set to true. This value should reference the TLS secret object in Kubernetes that contains the certificate for the client JDBC/ODBC connections.
For example, to have TLS enabled for the web UI using a certificate created called dremio-tls-secret-ui, you can set the configuration as follows:
coordinator:
[...]
web:
tls:
enabled: true
secret: dremio-tls-secret-ui
[...]To create a secret, use the following command: kubectl create secret tls ${TLS_SECRET_NAME} --key ${KEY_FILE} --cert ${CERT_FILE} providing appropriate values for TLS_SECRET_NAME, KEY_FILE, CERT_FILE.
Note: Dremio does not support auto-rotation of secrets. To update the secret used by Dremio, restart the coordinator pods to have the new TLS secret take effect.
More Info: See the Creating your own Secrets section of the Secrets documentation for Kubernetes.
Type: Integer
By default, the value is set to 300.
This value controls the maximum failures allowed before the pod is restarted.
Max timeout for the startupProbe is calculated as coordinator.startupProbe.failureThreshold * coordinator.startupProbe.periodSeconds
Type: Integer
By default, the value is set to 1.
This value controls the probe polling frequency expressed in seconds.
Type: Integer
By default, the value is set to 120.
This value controls the maximum failures allowed before the pod is restarted.
Max timeout for the startupProbe is calculated as coordinator.readinessProbe.failureThreshold * coordinator.readinessProbe.periodSeconds
Type: Integer
By default, the value is set to 1. This value controls the probe polling frequency expressed in seconds.
Type: Boolean
By default, the value is set to false. This is an enterprise only feature and should not be set to true when using a community edition of Dremio.
To enable TLS on the client ODBC/JDBC port, set this value to true. Also, provide a value for coordinator.client.tls.secret that corresponds with the TLS secret that should be used.
Type: String
By default, the value is set to dremio-tls-secret-client.
This value is ignored if coordinator.client.tls.enabled is not set to true. This value should reference the TLS secret object in Kubernetes that contains the certificate for the client JDBC/ODBC connections.
For example, to have TLS enabled for the client JDBC/ODBC connections using a certificate created called dremio-tls-secret-client, you can set the configuration as follows:
coordinator:
[...]
client:
tls:
enabled: true
secret: dremio-tls-secret-client
[...]To create a secret, use the following command: kubectl create secret tls ${TLS_SECRET_NAME} --key ${KEY_FILE} --cert ${CERT_FILE} providing appropriate values for TLS_SECRET_NAME, KEY_FILE, CERT_FILE.
Note: Dremio does not support auto-rotation of secrets. To update the secret used by Dremio, restart the coordinator pods to have the new TLS secret take effect.
More Info: See the Creating your own Secrets section of the Secrets documentation for Kubernetes.
Type: Boolean
By default, the value is set to false.
To enable TLS on the Flight port, set this value to true. Also, provide a value for coordinator.flight.tls.secret that corresponds with the TLS secret that should be used.
Type: String
By default, the value is set to dremio-tls-secret-flight.
This value is ignored if coordinator.flight.tls.enabled is not set to true. This value should reference the TLS secret object in Kubernetes that contains the certificate for the Flight connections.
For example, to have TLS enabled for the Flight connections using a certificate created called dremio-tls-secret-flight, you can set the configuration as follows:
coordinator:
[...]
flight:
tls:
enabled: true
secret: dremio-tls-secret-flight
[...]To create a secret, use the following command: kubectl create secret tls ${TLS_SECRET_NAME} --key ${KEY_FILE} --cert ${CERT_FILE} providing appropriate values for TLS_SECRET_NAME, KEY_FILE, CERT_FILE.
Note: Dremio does not support auto-rotation of secrets. To update the secret used by Dremio, restart the coordinator pods to have the new TLS secret take effect.
More Info: See the Creating your own Secrets section of the Secrets documentation for Kubernetes.
By default, these values are not set. If the value is omitted or set to an empty array/dictionary, this value will be inherited from the top level equivalent. For more information about these configuration values, please refer to the top level equivalents of these values.
Type: Dictionary
The annotations set are used by all coordinator StatefulSet resources.
For example, you can set annotations as follows:
coordinator:
[...]
annotations:
example-annotation-one: "example-value-one"
[...]More Info: Refer to the annotations section of this reference.
Type: Dictionary
The pod annotations set are used by all Pod(s) created by the coordinator StatefulSet(s).
For example, you can set pod annotations as follows:
coordinator:
[...]
podAnnotations:
example-pod-annotation-one: "example-value-one"
[...]More Info: Refer to the podAnnotations section of this reference.
Type: Dictionary
The labels set are used by all coordinator StatefulSet resources.
For example, you can set labels as follows:
coordinator:
[...]
labels:
example-label-one: "example-value-one"
[...]More Info: Refer to the labels section of this reference.
Type: Dictionary
The pod labels set are used by all Pod(s) created by the coordinator StatefulSet(s).
For example, you can set pod labels as follows:
coordinator:
[...]
podLabels:
example-pod-label-one: "example-value-one"
[...]More Info: Refer to the podLabels section of this reference.
Type: Array
The node selectors set are used by all Pod(s) created by the coordinator StatefulSet(s).
For example, you can set node selectors as follows:
coordinator:
[...]
nodeSelector:
diskType: "ssd"
[...]More Info: Refer to the nodeSelector section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level storageClass.
Storage class has a direct impact on the performance of the Dremio cluster. On the master coordinator node, RocksDB is stored on the persistent volume created with this storage class.
More Info: Refer to the storageClass section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level logStorageClass.
By default, logs are written to stdout. To write logs to a file on disk, set this value to true. If this value is omitted or set to an empty string, this value will be inherited from the top level writeLogsToFile.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level serviceAccount.
This service account will also be used by the Dremio admin pod.
More Info: Refer to the serviceAccount section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level extraStartParams.
This value controls additional parameters passed to the Dremio process.
For example, to pass an additional system property to the java process, you can specify the following:
coordinator:
[...]
extraStartParams: >-
-DsomeTestKey=someValue
[...]More Info: Refer to the extraStartParams section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level extraInitContainers.
This value controls additional initContainers that are started as part of the initialization process for Dremio's coordinator pods. The value specified here may reference values specified in the values.yaml file.
For example, to have an initContainer with the Dremio image, you can specify the following:
coordinator:
[...]
extraInitContainers: |
- name: dremio-hello-world
image: {{ $.Values.image }}:{{ $.Values.imageTag }}
command: ["echo", "Hello World"]
[...]More Info: Refer to the extraInitContainers section of this reference.
Type: Array
By default, this value is not set. If this value is omitted or set to an empty array, this value will be inherited from the top level extraVolumes.
This value controls additional volumes that are attached to the Dremio coordinator pod. This specifies additional volumes that should be mountable to the containers in the Dremio coordinator pod. This value is typically used in conjunction with coordinator.extraVolumeMounts.
For example, if you have a ConfigMap named cm-dremio-additional-files with additional files that you want to include in the running Dremio coordinator pods, you can specify the following:
coordinator:
[...]
extraVolumes:
- name: dremio-additional-files
configMap:
name: cm-dremio-additional-files
[...]More Info: Refer to the extraVolumes section of this reference.
Type: Array
By default, this value is not set. If this value is omitted or set to an empty array, this value will be inherited from the top level extraVolumeMounts.
This value controls the additional volumes that should be mounted to the Dremio coordinator container and the paths that the volume should be mounted at. This value is typically used in conjunction with coordinator.extraVolumes.
For example, if you have set the above coordinator.extraVolumes value as shown in the example, you can map this volume into the path /additional-files as follows:
coordinator:
[...]
extraVolumeMounts:
- name: dremio-additional-files
mountPath: "/additional-files"
[...]More Info: Refer to the extraVolumeMounts section of this reference.
Type: Integer
By default, the value of cpu is 15 and the value of memory is 122800 (MB). This value can be set on a per-engine basis, see the Per-Engine Configuration section.
The values for cpu and memory control the amount of CPU and memory in MB being requested for each executor instance for the purposes of scheduling an executor to a specific node in the Kubernetes cluster.
Note: While the values specified are not upper bounds, the value of memory specified here is used by the chart to calculate the allocation of heap and direct memory used by Dremio.
Type: Array
By default, the value is ["default"].
By adding additional values to this list, additional sets of executors are launched. By default, each set of executors will start with executor.count number of pods. See the Per-Engine Overrides section of this reference to customize the number of executors are started.
Type: Integer
By default, the value is set to 3. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
Increasing this number controls the number of executors that are launched as part of the engine. Without per-engine overrides, the total number of executor pods started is calculated as the length(executor.engines) * executor.count.
Type: String
By default, the value is set to 128Gi. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
The executor volume is used to store results of queries run. If the distStore.type is set to local, additional resources such as accelerations may be stored in the volume. In most hosted Kubernetes environments, disk performance is determined by the size of the volume.
Type: Boolean
By default, the value is set to true. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
Columnar cloud cache (C3) is enabled by default on executors. To turn off cloud cache, set this value to false.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from executor.storageClass or its parent value storageClass. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
C3 is designed for usage with local NVMe storage devices. If available, it is recommended to setup a local storage provisioner to allow Dremio to utilize local NVMe storage on the Kubernetes nodes.
Type: Array
By default, the value is set to [{size: 100Gi}]. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
By specifying more than one item in the list, additional volumes are provisioned for C3. Each volume must specify a size and optionally a name and custom storageClass. If the volume omits the storageClass, the value of executor.cloudCache.storageClass or its parent values are used.
For example, if the Kubernetes nodes that are provisioned have three local NVMe storage devices available, then we can create three C3 cache volumes each using a different size and combination of custom name and storageClass values:
executor:
[...]
cloudCache:
volumes:
- size: 300Gi
- name: "executor-c3-0"
size: 100Gi
storageClass: "local-nvme"
- size: 50Gi
storageClass: "local-nvme"
[...]By default, these values are not set. If the value is omitted or set to an empty array/dictionary, this value will be inherited from the top level equivalent. For more information about these configuration values, please refer to the top level equivalents of these values.
Type: Dictionary
The annotations set are used by all executor StatefulSet resources. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
For example, you can set annotations as follows:
executor:
[...]
annotations:
example-annotation-one: "example-value-one"
[...]More Info: Refer to the annotations section of this reference.
Type: Dictionary
The pod annotations set are used by all Pod(s) created by the executor StatefulSet(s). This value can be set on a per-engine basis, see the Per-Engine Configuration section.
For example, you can set pod annotations as follows:
executor:
[...]
podAnnotations:
example-pod-annotation-one: "example-value-one"
[...]More Info: Refer to the podAnnotations section of this reference.
Type: Dictionary
The labels set are used by all executor StatefulSet resources. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
For example, you can set labels as follows:
executor:
[...]
labels:
example-label-one: "example-value-one"
[...]More Info: Refer to the labels section of this reference.
Type: Dictionary
The pod labels set are used by all Pod(s) created by the executor StatefulSet(s). This value can be set on a per-engine basis, see the Per-Engine Configuration section.
For example, you can set pod labels as follows:
executor:
[...]
podLabels:
example-pod-label-one: "example-value-one"
[...]More Info: Refer to the podLabels section of this reference.
Type: Array
The node selectors set are used by all Pod(s) created by the executor StatefulSet(s). This value can be set on a per-engine basis, see the Per-Engine Configuration section.
For example, you can set node selectors as follows:
executor:
[...]
nodeSelector:
diskType: "ssd"
[...]More Info: Refer to the nodeSelector section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level storageClass. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
More Info: Refer to the storageClass section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level logStorageClass.
By default, logs are written to stdout. To write logs to a file on disk, set this value to true. If this value is omitted or set to an empty string, this value will be inherited from the top level writeLogsToFile.
This value can be set on a per-engine basis, see the Per-Engine Configuration section.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level serviceAccount. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
More Info: Refer to the serviceAccount section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level extraStartParams. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
This value controls additional parameters passed to the Dremio process.
For example, to pass an additional system property to the java process, you can specify the following:
coordinator:
[...]
extraStartParams: >-
-DsomeTestKey=someValue
[...]More Info: Refer to the extraStartParams section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level extraInitContainers. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
This value controls additional initContainers that are started as part of the initialization process for Dremio's executor pods. The value specified here may reference values specified in the values.yaml file.
For example, to have an initContainer with the Dremio image, you can specify the following:
coordinator:
[...]
extraInitContainers: |
- name: dremio-hello-world
image: {{ $.Values.image }}:{{ $.Values.imageTag }}
command: ["echo", "Hello World"]
[...]More Info: Refer to the extraInitContainers section of this reference.
Type: Array
By default, this value is not set. If this value is omitted or set to an empty array, this value will be inherited from the top level extraVolumes. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
This value controls additional volumes that are attached to the Dremio executor pod. This specifies additional volumes that should be mountable to the containers in the Dremio executor pod. This value is typically used in conjunction with executor.extraVolumeMounts.
For example, if you have a ConfigMap named cm-dremio-additional-files with additional files that you want to include in the running Dremio executor pods, you can specify the following:
executor:
[...]
extraVolumes:
- name: dremio-additional-files
configMap:
name: cm-dremio-additional-files
[...]More Info: Refer to the extraVolumes section of this reference.
Type: Array
By default, this value is not set. If this value is omitted or set to an empty array, this value will be inherited from the top level extraVolumeMounts. This value can be set on a per-engine basis, see the Per-Engine Configuration section.
This value controls the additional volumes that should be mounted to the Dremio executor container and the paths that the volume should be mounted at. This value is typically used in conjunction with executor.extraVolumes.
For example, if you have set the above executor.extraVolumes value as shown in the example, you can map this volume into the path /additional-files as follows:
executor:
[...]
extraVolumeMounts:
- name: dremio-additional-files
mountPath: "/additional-files"
[...]More Info: Refer to the extraVolumeMounts section of this reference.
DEPRECATION NOTICE: The nodeLifecycleService feature has been deprecated and is no longer supported.
Type: Dictionary
Prerequisite: To use this feature, Prometheus Adapter must be installed in your cluster.
To enable this service with minimum configuration and all default values, set executor.nodeLifeCycleService to:
executor:
[...]
nodeLifecycleService:
enabled: true
scalingMetrics:
default:
enabled: true
scalingBehavior:
scaleDown:
defaultPolicy:
enabled: true
scaleUp:
defaultPolicy:
enabled: true
[...]Here's an example of a full configuration:
executor:
[...]
nodeLifecycleService:
enabled: true
maxEngines: 10
metricsPort: 9010
terminationGracePeriodSeconds: 60
scalingMetrics:
default:
enabled: true
cpuAverageUtilization: 50
memoryAverageUtilization: 50
userDefinedMetrics:
- pods:
metric:
name: threads_waiting_count
target:
averageValue: "20"
type: AverageValue
type: Pods
scalingBehavior:
scaleDown:
defaultPolicy:
enabled: true
value: 1
periodSeconds: 30
userDefinedPolicies:
- type: Pods
value: 2
periodSeconds: 10
scaleUp:
defaultPolicy:
enabled: true
value: 900
periodSeconds: 60
userDefinedPolicies:
- type: Percent
value: 30
periodSeconds: 30
[...]executor.nodeLifecycleService.enabled
Type: Boolean
To enable dynamic scaling, this key must be present and set to true.
executor.nodeLifecycleService.metricsPort
Type: Integer
By default, this value is set to 9010. This is the port where the /metrics endpoint is available for a pod.
executor.nodeLifecycleService.terminationGracePeriodSeconds
Type: Integer
By default, this value is set to 600. The Dremio process will wait this period to allow for running work to complete. After this,
time has passed, any running work will be canceled.
executor.nodeLifecycleService.maxEngines
Type: Integer
By default, this value is set to 50
executor.nodeLifecycleService.scalingMetrics
Type: Dictionary
The calculation of the desired number of engines is based on scaling metrics and a target value for this metric.
executor.nodeLifecycleService.scalingMetrics.default
Type: Boolean
By default, default scaling metrics are enabled. The default metrics are based on CPU and Memory average utilization.
executor.nodeLifecycleService.scalingMetrics.cpuAverageUtilization
By default, this value is omitted. If left omitted, this value will default to 70. To configure this value, this key must be present. Example:
executor:
[...]
nodeLifecycleService:
enabled: true
scalingMetrics:
default:
enabled: true
cpuAverageUtilization: 50
[...]executor.nodeLifecycleService.scalingMetrics.memoryAverageUtilization
By default this value is omitted. If left omitted, this value will default to 70. To configure this value, this key must be present. Example:
executor:
[...]
nodeLifecycleService:
enabled: true
scalingMetrics:
default:
enabled: true
memoryAverageUtilization: 50
[...]executor.nodeLifecycleService.scalingMetrics.userDefinedMetrics
Type: Array
By default, this value is omitted. Below is an example of adding a user defined scaling metric:
executor:
[...]
nodeLifecycleService:
enabled: true
scalingMetrics:
default:
enabled: true
userDefinedMetrics:
- pods:
metric:
name: threads_waiting_count
target:
averageValue: "10"
type: AverageValue
type: Pods
[...]executor.nodeLifecycleService.scalingBehavior.scaleDown.stabilizationWindowSeconds
Type: Int
By default, this is set to 300 seconds. This value indicates the amount of time the HPA controller should consider
previous recommendations to prevent flapping of the number of replicas
executor.nodeLifecycleService.scalingBehavior.scaleDown.defaultPolicy.enabled
Type: Boolean
By default, default scale down behavior is enabled. The default behavior is scale down 1 engine every 10 minutes.
executor.nodeLifecycleService.scalingBehavior.scaleDown.defaultPolicy.value
Type: Integer
By default, this is set to scale down 1 engine at a time. Example of configuring this value:
executor:
[...]
nodeLifecycleService:
enabled: true
[...]
scalingBehavior:
scaleDown:
defaultPolicy:
enabled: true
value: 3
[...]
[...]executor.nodeLifecycleService.scalingBehavior.scaleDown.defaultPolicy.value
Type: Integer
By default, this value is set trigger a scale down event every 600 seconds. Example of configuring this value:
executor:
[...]
nodeLifecycleService:
enabled: true
[...]
scalingBehavior:
scaleDown:
defaultPolicy:
enabled: true
periodSeconds: 30
[...]
[...]executor.nodeLifecycleService.scalingBehavior.scaleDown.userDefinedPolicies
Type: Array
By default, this value is omitted. Example of adding user defined scale down policies:
executor:
[...]
nodeLifecycleService:
enabled: true
[...]
scalingBehavior:
scaleDown:
userDefined:
- type: Pods
value: 2
periodSeconds: 10
[...]
[...]executor.nodeLifecycleService.scalingBehavior.scaleUp.stabilizationWindowSeconds
Type: Int
By default, this is set to 300 seconds. This value indicates the amount of time the HPA controller should consider
previous recommendations to prevent flapping of the number of replicas
executor.nodeLifecycleService.scalingBehavior.scaleUp.defaultPolicy.enabled
Type: Boolean
The default scale up policy designed to respond to a traffic increase quickly. This is the default scale up policy:
executor:
[...]
nodeLifecycleService:
enabled: true
[...]
scalingBehavior:
scaleUp:
defaultPolicy:
- type: Percent
value: 900
periodSeconds: 60
[...]
[...]The 900 implies that 9 times the current number of pods can be added, effectively making the number of replicas 10 times the current size. If the application is started with 1 pod, it will scale up with the following number of pods:
1 -> 10 -> 100 -> 1000
executor.nodeLifecycleService.scalingBehavior.scaleUp.defaultPolicy.value
Type: Integer
By default, this value is set to 900. See executor.nodeLifecycleService.scalingBehavior.scaleUp.defaultPolicy.enabled
for more information.
executor.nodeLifecycleService.scalingBehavior.scaleUp.defaultPolicy.periodSeconds
By default, this value is set to 60. See executor.nodeLifecycleService.scalingBehavior.scaleUp.defaultPolicy.enabled
for more information.
executor.nodeLifecycleService.scalingBehavior.scaleUp.userDefinedPolicies
Type: Array
By default, this value is omitted. Example of adding user defined scale up policies:
executor:
[...]
nodeLifecycleService:
enabled: true
[...]
scalingBehavior:
scaleUp:
userDefined:
- type: Percent
value: 100
periodSeconds: 60
[...]
[...]Type: Dictionary
By default, this value is not set.
Engine overrides use the name of the engine provided in the executor.engines array to allow customization on a per-engine basis. The value of <engine-name> should be the name of an engine provided in executor.engines.
For example, the following shows all the supported override values being set (which override the shared values from executor):
executor:
[...]
engineOverride:
<engine-name>:
cpu: 4
memory: 144800
count: 2
annotations:
example-annotation-one: "example-value-one"
example-annotation-two: "example-value-two"
podAnnotations:
example-pod-annotation-one: "example-value-one"
example-pod-annotation-two: "example-value-two"
labels:
example-label-one: "example-value-one"
example-label-two: "example-value-two"
podLabels:
example-pod-label-one: "example-value-one"
example-pod-label-two: "example-value-two"
nodeSelector:
diskType: "ssd"
tolerations:
- key: "example-key"
operator: "Exists"
effect: "NoSchedule"
serviceAccount: "internal"
extraStartParams: >-
-DsomeTestKey=someValue
extraInitContainers: |
- name: dremio-hello-world
image: {{ $.Values.image }}:{{ $.Values.imageTag }}
command: ["echo", "Hello World"]
extraEnvs:
- name: EXAMPLE_ENVIRONMENT_VARIABLE
value: example_value
extraVolumes:
- name: dremio-additional-files
configMap:
name: cm-dremio-additional-files
extraVolumeMounts:
- name: dremio-additional-files
mountPath: "/additional-files"
volumeSize: 50Gi
storageClass: "managed-premium"
cloudCache:
enabled: true
storageClass: "local-nvme"
volume:
- size: 300Gi
- name: "executor-c3-0"
size: 100Gi
storageClass: "local-nvme"
- size: 50Gi
storageClass: "local-nvme"
nodeLifecycleService:
enabled: true
scalingMetrics:
default:
enabled: true
scalingBehavior:
scaleDown:
defaultPolicy:
enabled: true
scaleUp:
defaultPolicy:
enabled: true
[...]Type: String
By default, this value is not set.
When set, this will be the volume claim name used for the persistent volume by an engine. Unless moving from an old Helm chart with existing volume claims that must be retained, this value should not be used. This value should only be used for the default engine as persistent volume claims are pod name dependent as well and non-default engines will not match the pod name required.
For example, if moving from an old Helm chart that used dremio-executor-volume, you can continue to use the volumes for the default engine by specifying the following:
executor:
[...]
engineOverride:
default:
volumeClaimName: dremio-executor-volume
[...]Type: String
By default, this value is set to local.
Note: 'local' has been deprecated in Dremio 21.0.0+.
The valid values for distStorage.type are local (not recommended, not supported in Dremio 21.0.0+), aws, azure, azureStorage or gcp. For specific configuration values for each, see the associated sections:
aws(S3): AWS S3azure(Azure ADLS Gen 1): Azure ADLS Gen 1azureStorage(Azure Storage Gen2): Azure Storage Gen2gcp(Google Cloud Storage): Google Cloud Storage
For example, to use AWS S3 as the distributed storage location, you can specify the following:
distStorage:
[...]
type: "aws"
[...]Type: String
By default, this value is set to AWS Bucket Name and must be changed to a valid bucket name.
Specify a valid bucket name that Dremio has write access to. For the required permissions, please see the Amazon S3 section of the Configuration Distributed Storage documentation for Dremio.
Type: String
By default, this value is set to /.
Dremio will write to the root path of the provided bucket. Set this value to an alternative path if you would like Dremio to write its contents to a subdirectory.
Type: String
The valid values for distStorage.aws.authentication are:
metadata(default) - Dremio will attempt to use the instance profile of the EKS node to authenticate to the S3 bucket.accessKeySecret- The valuesdistStorage.aws.credentials.accessKeyanddistStorage.aws.credentials.secretare used to authenticate.awsProfile- ThedistStorage.aws.credentials.awsProfileNamevalue is used to authenticate.
Note: Dremio does not support service account IAM roles on EKS.
When providing credentials, both distStorage.aws.credentials.accessKey and distStorage.aws.credentials.secret should be provided.
For example, the following distStorage configuration may be used:
distStorage:
[...]
aws:
bucketName: "demo.dremio.com"
path: "/"
authentication: "accessKeySecret"
credentials:
accessKey: "SOME_VALID_KEY"
secret: "SOME_VALID_SECRET"
[...]Type: String
By default, this value is not set.
For Dremio to authenticate via access key and secret, provide a valid access key value.
Type: String
By default, this value is not set.
For Dremio to authenticate via access key and secret, provide a valid secret value.
When using awsProfile for distStorage.aws.authentication, a folder containing a valid AWS credentials file needs to be mounted to /opt/dremio/aws.
If using a profile that uses the credentials_process option, the target process needs to be mounted to the location specified in the credentials file. The script must also be marked as executable. If using a ConfigMap along with the defaultMode option, use a decimal value 511 which corresponds to octal 0777.
Type: String
By default, this value is not set.
Specifies the AWS profile name to use for AWS profile authentication.
Type: String
By default, this value is not set.
This value can be used to specify additional properties to core-site.xml which is used to configure properties for the distributed storage source.
For example, to set the S3 endpoint, you can do the following:
distStorage:
aws:
[...]
extraProperties: |
<property>
<name>fs.s3a.endpoint</name>
<value>s3.us-west-2.amazonaws.com</value>
</property>
[...]Type: String
By default, this value is set to Azure Datalake Store Name and must be changed to a valid ADLS datalake store name.
Specify a valid datalake store name that Dremio has write access to. For the required permissions, please see the Azure Configuration section of the Azure Data Lake Storage Gen1 documentation for Dremio.
Type: String
By default, this value is set to /.
Dremio will write to the root path of the provided datalake store. Set this value to an alternative path if you would like Dremio to write its contents to a subdirectory.
Type: String
By default, this value is set to Azure Application ID and must be changed to a valid Azure Application ID.
For Dremio to authenticate to the datalake store, provide a valid application ID.
Type: String
By default, this value is set to Azure Application Secret and must be changed to a valid Azure Application Secret.
For Dremio to authenticate to the datalake store, provide a valid secret value.
Type: String
By default, this value is set to Azure OAuth2 Endpoint and must be changed to a valid Azure OAuth2 endpoint.
For Dremio to authenticate to the datalake store, provide a valid OAuth2 endpoint.
Type: String
By default, this value is not set.
This value can be used to specify additional properties to core-site.xml which is used to configure properties for the distributed storage source.
For example, to disable the cache (this value should not be set in production), you can do the following:
distStorage:
aws:
[...]
extraProperties: |
<property>
<name>fs.adl.impl.disable.cache</name>
<value>true</value>
</property>Type: String
By default, this value is set to Azure Storage Account Name and must be changed to a valid Azure Storage account name.
Specify a valid datalake store name that Dremio has write access to. For the required permissions, please see the Granting Azure Data Lake Store access section of the Azure Data Lake Storage Gen1 documentation for Dremio.
Type: String
By default, this value is set to Azure Storage Account Blob Container and must be changed to a valid Azure Storage blob container.
Specify a valid Azure Storage blob container that Dremio has write access to.
Type: String
By default, this value is set to /.
Dremio will write to the root path of the provided Azure Storage blob container. Set this value to an alternative path if you would like Dremio to write its contents to a subdirectory.
Type: String
Dremio supports authentication using an access key or Microsoft EntraID.
The valid values for distStorage.azureStorage.authentication are accessKey or entraID.
By default, this value is set to accessKey.
Type: String
By default, this value is set to Azure Storage Account Access Key and must be changed to a valid access key.
For Dremio to authenticate to the provided Azure Storage blob container via access key, provide a valid access key.
Type: String
By default, this value is set to Azure Application Client ID and must be changed to a valid application client ID.
For Dremio to authenticate to the provided Azure Storage blob container via Entra ID, provide a valid application client ID.
Type: String
By default, this value is set to Azure Entra ID Token Endpoint and must be changed to a valid token endpoint.
For Dremio to authenticate to the provided Azure Storage blob container via Entra ID, provide a valid token endpoint.
Type: String
By default, this value is set to Azure Application Client Secret and must be changed to a valid client secret.
For Dremio to authenticate to the provided Azure Storage blob container via Entra ID, provide a valid client secret.
Type: String
By default, this value is not set.
This value can be used to specify additional properties to core-site.xml which is used to configure properties for the distributed storage source.
For example, to disable SSL connections (this value should not be set in production), you can do the following:
distStorage:
aws:
[...]
extraProperties: |
<property>
<name>dremio.azure.secure</name>
<value>false</value>
</property>
[...]Type: String
By default, this value is set to GCS Bucket Name and must be changed to a valid bucket name.
Specify a valid bucket name that Dremio has write access to.
Type: String
By default, this value is set to /.
Dremio will write to the root path of the provided bucket. Set this value to an alternative path if you would like Dremio to write its contents to a subdirectory.
Type: String
By default, this value is set to auto.
The valid values for distStorage.gcp.authentication are auto or serviceAccountKeys. When set to auto, Dremio will use Google Application Default Credentials to authenticate to the GCS bucket.
Note: On GKE clusters with Workload Identity enabled, we recommend creating a Kubernetes Service Account and setting serviceAccount to reference the Kubernetes service account. If specifying different service accounts for coordinators/executors, ensure that all service accounts have access to the GCS bucket.
When set to serviceAccountKeys, the values distStorage.gcp.credentials.projectId, distStorage.gcp.credentials.clientId, distStorage.gcp.credentials.clientEmail, distStorage.gcp.credentials.privateKeyId and distStorage.gcp.credentials.privateKey are used to authenticate to the GCS bucket.
For example, to use service account credential keys, you can do the following:
distStorage:
[...]
gcp:
bucketName: "demo-bucket.dremio.com"
path: "/"
authentication: "serviceAccountKeys"
credentials:
projectId: "dremio-demo-project"
clientId: "000000000"
clientEmail: "demo-service-account@dremio-demo-project.iam.gserviceaccount.com"
privateKeyId: "0000000000000000000000000000000000000000"
privateKey: |-
-----BEGIN PRIVATE KEY-----\nPRIVATE KEY\n-----END PRIVATE KEY-----\n
[...]Alternatively, for example, to use a Kubernetes Service Account on GKE with Workload Identity:
serviceAccount: "k8s-service-account-name"
distStorage:
[...]
gcp:
bucketName: "demo-bucket.dremio.com"
path: "/"
authentication: "auto"
[...]Type: String
By default, this value is not set.
For Dremio to authenticate with service account credential keys, provide the project ID for the service account.
Type: String
By default, this value is not set.
For Dremio to authenticate with service account credential keys, provide the client ID for the service account.
Type: String
By default, this value is not set.
For Dremio to authenticate with service account credential keys, provide the client email for the service account.
Type: String
By default, this value is not set.
For Dremio to authenticate with service account credential keys, provide the private key ID for the service account.
Type: String
By default, this value has a partial snippet of a private key.
For Dremio to authenticate with service account credential keys, provide the private key for the service account. Ensure this value is provided in one line. You can directly copy the value as-is from the credentials JSON file, including any special characters, but without surrounding quotes.
Type: String
By default, this value is not set.
This value can be used to specify additional properties to core-site.xml which is used to configure properties for the distributed storage source.
Type: String
By default, this value is set to LoadBalancer.
In some environments, a LoadBalancer may not be available. You may alternatively set the type to ClusterIP for cluster-only usage of Dremio or NodePort to make the service available via the port on the Kubernetes node.
For example, to make Dremio only accessible in the Kubernetes cluster, you can do the following:
service:
[...]
type: ClusterIP
[...]Type: Boolean
By default, this value is not set, which defaults to false.
To enable session affinity, set this value to ClientIP. Session affinity is critical for the web UI when there coordinator.count is greater than 0.
If utilizing Flight, please see Important Setup Considerations for more information about enabling session affinity.
By default, these values are not set. If the value is omitted or set to an empty array/dictionary, this value will be inherited from the top level equivalent. For more information about these configuration values, please refer to the top level equivalents of these values.
Type: Dictionary
The annotations set are used by the Service resource.
For example, you can set annotations as follows:
service:
[...]
annotations:
example-annotation-one: "example-value-one"
[...]More Info: Refer to the annotations section of this reference.
Type: Dictionary
The labels set are used by the Service resource.
For example, you can set labels as follows:
coordinator:
[...]
labels:
example-label-one: "example-value-one"
[...]More Info: Refer to the labels section of this reference.
Type: Boolean
By default, this value is not set, which defaults to false.
When enabling this property, additional annotations are added to the pod for using an internal IP for the load balancer. Specifically, the following annotations are added which provide support for AWS, AKS, and GKE load balancers:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"cloud.google.com/load-balancer-type: "Internal"service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
If these values are not applicable for your Kubernetes cluster, use the service.annotations value to provide a custom annotation that applies to your load balancer.
Type: String
By default, this value is not set.
When setting this property, the load balancer attempts to use the provided IP address instead of dynamically allocating one. This IP address should be a static IP address that is usable by Kubernetes.
Type: String
By default, the value is set to zookeeper.
The image refers to the location to retrieve the specific container image for Zookeeper. In some cases, the zookeeper.image value may vary in corporate environments where there may be a private container registry that is used.
Type: String
By default, the value is set to 3.8.0.
The version of Zookeeper set has been validated by Dremio to work with the Dremio software. Changing this version is not recommended unless the tag is different due to a private container registry name difference.
Type: Integer
By default, the value of cpu is 0.5 and the value of memory is 1024 (MB).
The values for cpu and memory control the amount of CPU and memory in MB being requested for each Zookeeper instance for the purposes of scheduling a Zookeeper to a specific node in the Kubernetes cluster.
Type: Integer
By default, the value is set to 3.
This number sets the number of instances of Zookeeper to deploy. It is recommended to have a minimum of 3 to maintain a quorum. Changing the value below 3 may cause instability in the cluster.
Type: String
By default, the value is set to 10Gi.
The Zookeeper volume is used for the WAL (Write Ahead Log) used by Zookeeper in the event of a crash.
By default, these values are not set. If the value is omitted or set to an empty array/dictionary, this value will be inherited from the top level equivalent. For more information about these configuration values, please refer to the top level equivalents of these values.
Type: Dictionary
The annotations set are used by the Zookeeper StatefulSet resource.
For example, you can set annotations as follows:
zookeeper:
[...]
annotations:
example-annotation-one: "example-value-one"
[...]More Info: Refer to the annotations section of this reference.
Type: Dictionary
The pod annotations set are used by all Pod(s) created by the Zookeeper StatefulSet.
For example, you can set pod annotations as follows:
zookeeper:
[...]
podAnnotations:
example-pod-annotation-one: "example-value-one"
[...]More Info: Refer to the podAnnotations section of this reference.
Type: Dictionary
The labels set are used by the Zookeeper StatefulSet .
For example, you can set labels as follows:
zookeeper:
[...]
labels:
example-label-one: "example-value-one"
[...]More Info: Refer to the labels section of this reference.
Type: Dictionary
The pod labels set are used by all Pod(s) created by the Zookeeper StatefulSet.
For example, you can set pod labels as follows:
zookeeper:
[...]
podLabels:
example-pod-label-one: "example-value-one"
[...]More Info: Refer to the podLabels section of this reference.
Type: Array
The node selectors set are used by all Pod(s) created by the Zookeeper StatefulSet.
For example, you can set node selectors as follows:
zookeeper:
[...]
nodeSelector:
diskType: "ssd"
[...]More Info: Refer to the nodeSelector section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level storageClass.
Storage class has an impact on the performance of the Zookeeper instances when writing the WAL and reading back data in the event of a crash. A more performant storage class may impact recovery times in the event of such a crash.
More Info: Refer to the storageClass section of this reference.
Type: String
By default, this value is not set. If this value is omitted or set to an empty string, this value will be inherited from the top level serviceAccount.
More Info: Refer to the serviceAccount section of this reference.