Configure a Kubernetes Deployment
You can configure your Dremio Kubernetes deployment by editing a values override file and passing it to Helm during installation. Dremio's Helm chart defines default configurations in values.yaml. Dremio recommends maintaining your customizations in a separate values-overrides.yaml file — this makes it simpler to carry your configuration forward during Helm chart updates.
Configure Your Values
-
Download the
values-overrides.yamlconfiguration file and save it locally. -
Edit the
values-overrides.yamlfile. The sections below walk through each required setting.
If you are deploying on OpenShift, you must also download the values-openshift-overrides.yaml file and pass it to Helm alongside your values-overrides.yaml. Without it, Dremio will fail to start. See Deploy Dremio on Kubernetes — Prerequisites for the download link and setup instructions.
Configure the License
Provide your license key. To obtain a license, see Licensing.
License key configurationdremio:
license: "<your-license-key>"
...
Configure the Pull Secret
Provide the secret used to pull images from Quay.io.
-
Log in to Quay.io, select your account name at the top right corner, and select Account Settings.
-
Click Generate Encrypted Password, enter your password, and click Verify.
-
On the next dialog, select Kubernetes Secret, and follow steps 1 and 2 to download the secret and submit it to the cluster.
-
Add the configuration as follows:
Pull secret configurationimagePullSecrets:
- <your-quayio-secret-name>
Configure the Coordinator
Configure Resources
Configure the coordinator's CPU request, memory request, memory limit, and volume size. Refer to the sizing tables in Size Your Deployment for recommended values.
Coordinator resource configurationcoordinator:
resources:
requests:
cpu: 15
memory: 30Gi
volumeSize: 100Gi
...
Configure Authentication
By default, Dremio uses internal authentication (type: "internal"). To configure an external identity provider, set the authentication type and provide the corresponding configuration file.
| Type | Identity provider |
|---|---|
azuread | Microsoft Entra ID |
ldap | LDAP |
oauth | OpenID Connect |
oauth+ldap | Hybrid OpenID+LDAP |
coordinator:
web:
auth:
type: <your-auth-type>
...
You can embed the identity provider configuration file directly in values-overrides.yaml using the ssoFile option:
coordinator:
web:
auth:
enabled: true
type: "azuread"
ssoFile: |
{
"oAuthConfig": {
"clientId": "<your-client-id>",
"clientSecret": "<your-secret>",
"redirectUrl": "<your-redirect-url>",
"authorityUrl": "https://login.microsoftonline.com/<your-tenant-id>/v2.0",
"scope": "openid profile",
"jwtClaims": {
"userName": "<your-preferred-username>"
}
}
}
...
For examples for other identity provider types, see Identity Providers.
Configure TLS (Optional)
You can enable TLS for the coordinator's web interface, JDBC/ODBC client connections, and Arrow Flight connections. For full instructions, see Configure TLS.
Configure Distributed Storage
Distributed storage is required for Dremio to be operational. It stores metadata, Reflections, uploaded files, and backups.
Distributed storage is also used to store Open Catalog backups. Some authentication methods require two sets of credentials — one for Dremio and one for the backup service. Where applicable, this is noted in the relevant section below.
Set distStorage.type to your storage provider and complete the authentication configuration for that provider.
- Amazon S3 and S3-Compatible
- Azure Storage
- Google Cloud Storage
Set distStorage.type to "aws" for Amazon S3 or S3-compatible storage, then select your authentication method:
Use only one authentication method in your YAML configuration. Do not mix metadata, accessKeySecret, and awsProfile in the same block. Multiple authentication methods will prevent Dremio from starting.
- Metadata
- Access Key
- AWS Profile
- EKS Pod Identity
Dremio uses the Identity and Access Management (IAM) role to retrieve credentials. Metadata authentication is only supported in Amazon Web Services Elastic Kubernetes Service (AWS EKS) and requires that the EKS worker node IAM role has sufficient access rights.
Metadata authentication for distributed storagedistStorage:
type: "aws"
aws:
bucketName: "<your-bucket-name>"
path: "/"
authentication: "metadata"
region: "<your-bucket-region>"
#extraProperties: |
# <property>
# <name>the-property-name</name>
# <value>the-property-value</value>
# </property>
Where:
bucketName— The name of your S3 bucket for distributed storage.path— The path relative to your bucket to create Dremio's directories.region— The AWS region in which your bucket resides. Required for Amazon S3 and optional for S3-compatible storage.extraProperties— Additional parameters to configure distributed storage in the generatedcore-site.xmlfile. Important for S3-compatible and customer-managed KMS encryption.
Dremio uses a configured Amazon Web Services (AWS) access key and secret to authenticate.
distStorage.aws.tls is deprecated. Use distStorage.aws.tlsVerification instead.
distStorage:
type: "aws"
aws:
bucketName: "<your-bucket-name>"
path: "/"
authentication: "accessKeySecret"
region: "<your-bucket-region>"
#endpoint: "https://example.com"
#s3Compatible: false
#pathStyleAccess: false
#tlsVerification: true
credentials:
accessKey: "<your-access-key>"
secret: "<your-access-key-secret>"
#extraProperties: |
# <property>
# <name>the-property-name</name>
# <value>the-property-value</value>
# </property>
Where:
bucketName— The name of your S3 bucket for distributed storage.path— The path relative to your bucket to create Dremio's directories.region— The AWS region in which your bucket resides. Required for Amazon S3 and optional for S3-compatible storage.endpoint— Optional for Amazon S3 and required whens3Compatibleistrue. Use the endpoint URL, for examplehttps://minio.example.com:9000, without a path.s3Compatible— Set totruewhen using S3-compatible storage such as MinIO. When set totrue, provideendpoint.pathStyleAccess— Optional override for path-style bucket access. Set only if your storage requires it.tlsVerification— Controls TLS certificate verification for the S3 endpoint. Set tofalseto skip verification, for example when using a self-signed certificate.credentials.accessKey— Your AWS access key ID.credentials.secret— Your AWS access key secret.extraProperties— Additional parameters for the generatedcore-site.xmlfile. For S3-compatible storage,fs.s3a.endpointuseshost[:port]without a scheme or path, andfs.s3a.connection.ssl.enabledcontrols HTTP or HTTPS.
Dremio uses the default Amazon Web Services (AWS) profile to retrieve credentials. To store Open Catalog backups, you also need to add an AWS access key.
distStorage.aws.tls is deprecated. Use distStorage.aws.tlsVerification instead.
distStorage:
type: "aws"
aws:
bucketName: "<your-bucket-name>"
path: "/"
authentication: "awsProfile"
region: "<your-bucket-region>"
#endpoint: "https://example.com:9000"
#s3Compatible: false
#pathStyleAccess: false
#tlsVerification: true
credentials:
awsProfileName: "default"
#accessKey: "<your-access-key>" for Open Catalog Backup and S3-compatible MongoDB backups
#secret: "<your-access-key-secret>" for Open Catalog Backup and S3-compatible MongoDB backups
#extraProperties: |
# <property>
# <name>the-property-name</name>
# <value>the-property-value</value>
# </property>
Where:
bucketName— The name of your S3 bucket for distributed storage.path— The path relative to your bucket to create Dremio's directories.region— The AWS region in which your bucket resides. Required for Amazon S3 and optional for S3-compatible storage.endpoint— Optional for Amazon S3 and required whens3Compatibleistrue. Use the endpoint URL, for examplehttps://minio.example.com:9000, without a path.s3Compatible— Set totruewhen using S3-compatible storage such as MinIO. When set, provideendpoint.pathStyleAccess— Optional override for path-style bucket access. Set only if your storage requires it.tlsVerification— Controls TLS certificate verification for the S3 endpoint. Set tofalseto skip verification, for example when using a self-signed certificate.credentials.awsProfileName— Set as"default".credentials.accessKey— AWS access key ID for Open Catalog backup and S3-compatible MongoDB backups whens3Compatibleistrue.credentials.secret— AWS access key secret for Open Catalog backup and S3-compatible MongoDB backups whens3Compatibleistrue.extraProperties— Additional parameters for the generatedcore-site.xmlfile.
EKS Pod Identities allow Kubernetes service accounts to be associated with an IAM role. Dremio uses this IAM role to retrieve credentials. Both coordinators and engines require access to distributed storage, so both ServiceAccounts must be associated with an IAM role with sufficient access rights. By default, these are dremio-coordinator, dremio-engine-executor for Managed Engines, and (optional) dremio-executor for classic engines.
distStorage:
type: "aws"
aws:
bucketName: "<your-bucket-name>"
path: "/"
authentication: "podIdentity"
region: "<your-bucket-region>"
#extraProperties: |
# <property>
# <name>the-property-name</name>
# <value>the-property-value</value>
# </property>
Where:
bucketName— The name of your S3 bucket for distributed storage.path— The path relative to your bucket to create Dremio's directories.region— The AWS region in which your bucket resides.extraProperties— Additional parameters for the generatedcore-site.xmlfile.
Add Extra Properties for Amazon S3 and S3-Compatible
Use extraProperties to pass additional parameters to the generated core-site.xml file.
extraProperties: |
<property>
<name>fs.s3a.endpoint</name>
<value>0.0.0.0</value>
</property>
<property>
<name>fs.s3a.connection.ssl.enabled</name>
<value>false</value>
</property>
extraProperties: |
<property>
<name>fs.s3a.connection.ssl.enabled</name>
<value>true</value>
</property>
<property>
<name>fs.s3a.server-side-encryption-algorithm</name>
<value>SSE-KMS</value>
</property>
<property>
<name>fs.s3a.server-side-encryption.key</name>
<value>KEY_ARN</value>
</property>
Set distStorage.type to "azureStorage" for Azure Storage, then select your authentication method:
- Access Key
- Entra ID
Dremio uses the configured Azure Storage account access key to authenticate.
Access Key authentication for distributed storagedistStorage:
type: "azureStorage"
azureStorage:
accountName: "<your-account-name>"
authentication: "accessKey"
filesystem: "<your-blob-container>"
path: "/"
credentials:
accessKey: "<your-access-key>"
#extraProperties: |
# <property>
# <name>the-property-name</name>
# <value>the-property-value</value>
# </property>
Where:
accountName— The name of your storage account.filesystem— The name of your blob container within the storage account.path— The path relative to the filesystem to create Dremio's directories.credentials.accessKey— Your Azure Storage account access key.extraProperties— Additional parameters for the generatedcore-site.xmlfile.
Dremio uses the configured Azure client ID (application ID), Microsoft Entra ID token endpoint, and Azure client secret (application password) to authenticate.
You need to add an Azure access key to store Open Catalog backups.
distStorage:
type: "azureStorage"
azureStorage:
accountName: "<your-account-name>"
authentication: "entraID"
filesystem: "<your-blob-container>"
path: "/"
credentials:
clientId: "<your-application-client-id>"
tokenEndpoint: "<your-token-endpoint>"
clientSecret: "<your-client-secret>"
#accessKey: "<your-access-key>" for Open Catalog Backup
#extraProperties: |
# <property>
# <name>the-property-name</name>
# <value>the-property-value</value>
# </property>
Where:
accountName— The name of your storage account.filesystem— The name of your blob container within the storage account.path— The path relative to the filesystem to create Dremio's directories.credentials.clientId— Your Azure client ID (application ID).credentials.tokenEndpoint— Your Microsoft Entra ID token endpoint.credentials.clientSecret— Your Azure client secret (application password).credentials.accessKey— Your access key for Open Catalog backup.extraProperties— Additional parameters for the generatedcore-site.xmlfile.
Add Extra Properties for Azure Storage
Azure Government Cloud endpoint extra propertiesextraProperties: |
<property>
<name>fs.azure.endpoint</name>
<description>The azure storage endpoint to use.</description>
<value>dfs.core.usgovcloudapi.net</value>
</property>
Set distStorage.type to "gcp" for Google Cloud Storage (GCS), then select your authentication method:
- Automatic
- Service Account
Dremio uses Google Application Default Credentials to authenticate. This is platform-dependent and may not be available in all Kubernetes clusters.
You need to add a service account key to store Open Catalog backups.
distStorage:
type: "gcp"
gcp:
bucketName: "<your-bucket-name>"
path: "/"
authentication: "auto"
#credentials: for Open Catalog backup
# clientEmail: "<your-email-for-the-service-account>"
# privateKey: |-
# -----BEGIN PRIVATE KEY-----\n <your-full-private-key-value> \n-----END PRIVATE KEY-----\n
Where:
bucketName— The name of your GCS bucket for distributed storage.path— The path relative to the bucket to create Dremio's directories.credentials.clientEmail— Your service account email, for Open Catalog backup.credentials.privateKey— Your full private key value, for Open Catalog backup.
Dremio uses a JSON key file generated from the GCP console to authenticate.
Service Account authentication for distributed storagedistStorage:
type: "gcp"
gcp:
bucketName: "<your-bucket-name>"
path: "/"
authentication: "serviceAccountKeys"
credentials:
projectId: "<your-project-id>"
clientId: "<your-client-id>"
clientEmail: "<your-email-for-the-service-account>"
privateKeyId: "<your-private-key-id>"
privateKey: |-
-----BEGIN PRIVATE KEY-----\n <your-full-private-key-value> \n-----END PRIVATE KEY-----\n
Where:
bucketName— The name of your GCS bucket for distributed storage.path— The path relative to your bucket to create Dremio's directories.credentials.projectId— Your GCP project ID that the GCS bucket belongs to.credentials.clientId— Your client ID for the service account that has access to the GCS bucket.credentials.clientEmail— Your service account email that has access to the GCS bucket.credentials.privateKeyId— Your private key ID for the service account.credentials.privateKey— Your full private key value.
When using a GCS bucket on Google Kubernetes Engine (GKE), Dremio recommends enabling Workload Identity and configuring a Kubernetes service account for Dremio with an associated workload identity that has access to the GCS bucket.
Configure Open Catalog
Configure Storage
Configuring Open Catalog storage is required. This is where Iceberg tables created in the catalog are written.
The catalog.storage.location property can be a single URI or a list of URIs.
Single location — all catalog folders store data under the same base URI:
catalog.storage.location as a single URI
catalog:
storage:
location: s3://<your-bucket>/<your-folder>
Multiple locations — assign different catalog folders to different URIs, for example to separate data by environment, region, or business unit:
catalog.storage.location as a list of URIs
catalog:
storage:
location:
- s3://<your-bucket>/<your-folder>
- s3://<your-additional-bucket>/<your-folder>
When using a list, the catalog base URI must be the first element and is immutable. To add locations to an existing cluster, update catalog.storage.location and run a Helm upgrade. For more information, see Multiple Storage Locations.
Select the tab for your storage provider and follow the steps to complete the configuration.
- Amazon S3
- S3-Compatible
- Azure Storage
- Google Cloud Storage
-
Configure access to the storage, as described in Configure Storage Access. Creating a Kubernetes secret may be required.
-
Configure the Open Catalog in your
Open Catalog storage configuration for Amazon S3values-overrides.yamlfile:catalog:
storage:
location: s3://<your-bucket>/<your-folder>
type: S3
s3:
region: <bucket_region>
roleArn: <dremio_catalog_iam_role>
userArn: <dremio_catalog_user_arn>
externalId: <dremio_catalog_external_id>
useAccessKeys: false
... -
If using EKS Pod Identities, ensure the catalog's Kubernetes
ServiceAccount(default:dremio-catalog-server) is associated with theuserArnprovided above.
-
Configure access to the storage, as described in Configure Storage Access. Creating a Kubernetes secret is required.
-
Select the tab for whether your S3-compatible storage has STS support:
- Has STS support
- No STS support
The Open Catalog uses STS to perform credentials vending.
Open Catalog storage for S3-compatible with STS supportwarningroleArnmust be provided even when using S3-compatible storage. Use the dummy value shown in the example below.catalog:
storage:
location: s3://<your-bucket>/<your-folder>
type: S3
s3:
region: <your-bucket-region>
roleArn: arn:aws:iam::000000000000:role/catalog-access-role
endpoint: <s3-compatible-server-url>
stsEndpoint: <s3-compatible-sts-server-url>
pathStyleAccess: true
useAccessKeys: true
...Vended credentials are not available without STS support. Select Use master storage credentials in the Dremio console and provide explicit access keys for external engines where required.
Open Catalog storage for S3-compatible without STS supportwarningroleArnmust be provided even when using S3-compatible storage. Use the dummy value shown in the example below.catalog:
storage:
location: s3://<your-bucket>/<your-folder>
type: S3
s3:
region: <your-bucket-region>
roleArn: arn:aws:iam::000000000000:role/catalog-access-role
endpoint: <s3-compatible-server-url>
pathStyleAccess: true
skipSts: true
useAccessKeys: true
...
-
Configure access to the storage, as described in Configure Storage Access.
-
Configure the Open Catalog in your
Open Catalog storage configuration for Azure Storagevalues-overrides.yamlfile:catalog:
storage:
location: abfss://<your-container-name>@<your-storage-account>.dfs.core.windows.net/<path>
type: azure
azure:
tenantId: <your-azure-directory-tenant-id>
multiTenantAppName: ~
useClientSecrets: true
...
-
Configure access to the storage, as described in Configure Storage Access.
-
Configure the Open Catalog in your
Open Catalog storage configuration for Google Cloud Storagevalues-overrides.yamlfile:catalog:
storage:
location: gs://<your-bucket>/<your-path>
type: GCS
gcs:
useCredentialsFile: True
Configure MongoDB Backup
MongoDB is the backing store for Open Catalog. Backup is enabled by default and writes to your distributed storage location. The configuration below performs a backup every day at midnight and retains the last three backups.
MongoDB backup configurationmongodb:
backup:
enabled: true
schedule: "0 0 * * *"
keep: 3
To disable backup, set enabled: false.
Enable External Access (Optional)
Enable external access to connect to the Open Catalog from engines outside the namespace that support Iceberg REST, such as Spark.
Open Catalog external access configurationcatalog:
externalAccess:
enabled: true
...
To require TLS for external access, see Configure TLS for Open Catalog External Access.
If you also enable TLS on the coordinator's web interface, additional configuration is required. See Configure Open Catalog When Coordinator Web Uses TLS.
Size Your Deployment
Before deploying, determine the appropriate resource sizes for your environment.
- Production Configuration
- Minimal Configuration
Dremio recommends the following configuration values for production environments:
| Dremio Component | Memory | CPU | Volume Size | Pod Count |
|---|---|---|---|---|
| Coordinator | 64Gi | 32 | 512Gi | 1 |
| Catalog Server | 8Gi | 4 | - | 1 |
| Catalog Server (External) | 8Gi | 4 | - | 1 |
| Catalog Service Server | 8Gi | 4 | - | 1 |
| Engine Operator | 1Gi | 1 | - | 1 |
| OpenSearch | 16Gi | 2 | 100Gi | 3 |
| MongoDB | 4Gi | 8 | 512Gi1 | 3 |
| NATS | 1Gi | 700m | - | 3 |
| ZooKeeper | 1Gi | 500m | - | 3 |
| Open Telemetry | 1Gi | 1 | - | 1 |
| M Engine | 120Gi | 16 | 521Gi | 4 |
1 You can use a smaller volume size if you do not heavily use Iceberg.
The following configuration deploys a functional Dremio platform sized to fit a modest cluster. It is appropriate for a single user evaluating Dremio's features with sample data. For multi-user or performance-oriented evaluation, use the Production Configuration.
| Dremio Component | Memory | CPU | Volume Size | Pod Count |
|---|---|---|---|---|
| Coordinator | 8Gi | 2 | 20Gi | 1 |
| Catalog Server | 1Gi | 1 | - | 1 |
| Catalog Server (External) | 1Gi | 1 | - | 1 |
| Catalog Service Server | 1Gi | 1 | - | 1 |
| Engine Operator | 1Gi | 1 | - | 1 |
| OpenSearch | 3Gi | 1500m | 10Gi | 3 |
| MongoDB | 1Gi | 1 | 10Gi | 3 |
| NATS | 1Gi | 700m | - | 3 |
| ZooKeeper | 1Gi | 500m | - | 1 |
| Open Telemetry | 1Gi | 1 | - | 1 |
| XS Engine | 8Gi | 2 | 20Gi | 1 |
Deploy
After saving your values-overrides.yaml file, deploy Dremio to Kubernetes. See Deploy Dremio on Kubernetes.
Download Dremio's Helm Charts
You can download Dremio's Helm charts to implement configurations beyond those outlined in this topic.
Modifications to chart files without a clear understanding of their structure can lead to unexpected behavior and limit Dremio Support's ability to assist. Dremio recommends engaging with the Professional Services team through your Account Executive or Customer Success Manager before making manual chart modifications.
helm pull oci://quay.io/dremio/dremio-helm --version <tag> --untar
Where --version <tag> is optional — for example, --version 3.0.0. If not specified, the latest version is pulled. The command creates a local directory called dremio-helm containing the Helm charts.
For more information, see Helm Pull in the Helm documentation.
Override Additional Values
After downloading the charts:
- Open
values.yamland identify the settings you want to override. - Copy those settings to your
values-overrides.yamland configure them. - Save the
values-overrides.yamlfile.
Apply Manual Chart Modifications
For modifications to chart files to take effect, you must install Dremio using a local version of the Helm charts. The helm install command must reference a local folder, not the OCI repository. For more information, see Helm install.
After downloading, you can edit the charts directly. This is typically necessary for deployment-specific modifications not available through values-overrides.yaml — usually in files under the /config directory. Customizations propagate to all pods on install or upgrade.