Apache Druid Helm Chart can be used to deploy a Druid cluster on Kubernetes with following commands:
# Add repository
$ helm repo add druid-helm https://asdf2014.github.io/druid-helm/
# Install chart
$ helm install my-druid druid-helm/druid --version 31.0.4
In addition to the above method, also you can install this local Druid Helm Chart.
First, you need update the dependencies:
$ helm dependency update .
To install the Druid Chart into your Kubernetes cluster:
$ helm install druid . --namespace dev --create-namespace
After installation succeeds, you can get a status of Chart:
$ helm status druid -n dev
If you want to delete your Chart, use this command:
$ helm uninstall druid -n dev
The following table lists the configurable parameters of the Druid Helm Chart and their default values.
Parameter | Description | Default |
---|---|---|
image.repository |
container image name | apache/druid |
image.tag |
container image tag | 31.0.0 |
image.pullPolicy |
container pull policy | IfNotPresent |
image.pullSecrets |
image pull secrets for private repository | [] |
configMap.enabled |
enable druid configuration as configmap | true |
configVars |
druid configuration variables for all components | `` |
gCloudStorage.enabled |
look for secret to set google cloud credentials | false |
gCloudStorage.secretName |
secretName to be mounted as google cloud credentials | false |
rbac.create |
Create roles and roleBindings for service Accounts | true |
Parameter | Description | Default |
---|---|---|
router.enabled |
enable router | true |
router.name |
router component name | router |
router.replicaCount |
router node replicas (deployment) | 1 |
router.port |
port of router component | 8888 |
router.serviceType |
service type for service | ClusterIP |
router.serviceAccount.create |
Create a service account for router service | true |
router.serviceAccount.name |
Service account name | Derived from the name of service |
router.serviceAccount.annotations |
Annotations applied to created service account | {} |
router.serviceAccount.labels |
Labels applied to created service account | {} |
router.serviceAccount.automountServiceAccountToken |
Automount API credentials for the Service Account | true |
router.resources |
router node resources requests & limits | {} |
router.podAnnotations |
router Deployment annotations | {} |
router.nodeSelector |
node labels for router pod assignment | {} |
router.tolerations |
router tolerations | [] |
router.config |
router private config such as JAVA_OPTS |
|
router.affinity |
router affinity policy | {} |
router.ingress.enabled |
enable ingress | false |
router.ingress.hosts |
hosts for the router api | [ "chart-example.local" ] |
router.ingress.path |
path of the router api | / |
router.ingress.annotations |
annotations for the router api ingress | {} |
router.ingress.tls |
TLS configuration for the ingress | [] |
Parameter | Description | Default |
---|---|---|
broker.enabled |
enable broker | true |
broker.name |
broker component name | broker |
broker.replicaCount |
broker node replicas (deployment) | 1 |
broker.port |
port of broker component | 8082 |
broker.serviceAccount.create |
Create a service account for broker service | true |
broker.serviceAccount.name |
Service account name | Derived from the name of service |
broker.serviceAccount.annotations |
Annotations applied to created service account | {} |
broker.serviceAccount.labels |
Labels applied to created service account | {} |
broker.serviceAccount.automountServiceAccountToken |
Automount API credentials for the Service Account | true |
broker.serviceType |
service type for service | ClusterIP |
broker.resources |
broker node resources requests & limits | {} |
broker.podAnnotations |
broker deployment annotations | {} |
broker.nodeSelector |
Node labels for broker pod assignment | {} |
broker.tolerations |
broker tolerations | [] |
broker.config |
broker private config such as JAVA_OPTS |
|
broker.affinity |
broker affinity policy | {} |
broker.ingress.enabled |
enable ingress | false |
broker.ingress.hosts |
hosts for the broker api | [ "chart-example.local" ] |
broker.ingress.path |
path of the broker api | / |
broker.ingress.annotations |
annotations for the broker api ingress | {} |
broker.ingress.tls |
TLS configuration for the ingress | [] |
Parameter | Description | Default |
---|---|---|
overlord.enabled |
enable overlord | true |
overlord.name |
overlord component name | overlord |
overlord.replicaCount |
overlord node replicas (deployment) | 1 |
overlord.port |
port of overlord component | 8081 |
overlord.serviceType |
service type for service | ClusterIP |
overlord.serviceAccount.create |
Create a service account for overlord service | true |
overlord.serviceAccount.name |
Service account name | Derived from the name of service |
overlord.serviceAccount.annotations |
Annotations applied to created service account | {} |
overlord.serviceAccount.labels |
Labels applied to created service account | {} |
overlord.serviceAccount.automountServiceAccountToken |
Automount API credentials for the Service Account | true |
overlord.resources |
overlord node resources requests & limits | {} |
overlord.podAnnotations |
overlord Deployment annotations | {} |
overlord.nodeSelector |
node labels for overlord pod assignment | {} |
overlord.tolerations |
overlord tolerations | [] |
overlord.config |
overlord private config such as JAVA_OPTS |
|
overlord.affinity |
overlord affinity policy | {} |
overlord.ingress.enabled |
enable ingress | false |
overlord.ingress.hosts |
hosts for the overlord api | [ "chart-example.local" ] |
overlord.ingress.path |
path of the overlord api | / |
overlord.ingress.annotations |
annotations for the overlord api ingress | {} |
overlord.ingress.tls |
TLS configuration for the ingress | [] |
Parameter | Description | Default |
---|---|---|
coordinator.enabled |
enable coordinator | true |
coordinator.name |
coordinator component name | coordinator |
coordinator.replicaCount |
coordinator node replicas (deployment) | 1 |
coordinator.port |
port of coordinator component | 8081 |
coordinator.serviceType |
service type for service | ClusterIP |
coordinator.serviceAccount.create |
Create a service account for coordinator service | true |
coordinator.serviceAccount.name |
Service account name | Derived from the name of service |
coordinator.serviceAccount.annotations |
Annotations applied to created service account | {} |
coordinator.serviceAccount.labels |
Labels applied to created service account | {} |
coordinator.serviceAccount.automountServiceAccountToken |
Automount API credentials for the Service Account | true |
coordinator.resources |
coordinator node resources requests & limits | {} |
coordinator.podAnnotations |
coordinator Deployment annotations | {} |
coordinator.nodeSelector |
node labels for coordinator pod assignment | {} |
coordinator.tolerations |
coordinator tolerations | [] |
coordinator.config |
coordinator private config such as JAVA_OPTS |
|
coordinator.affinity |
coordinator affinity policy | {} |
coordinator.ingress.enabled |
enable ingress | false |
coordinator.ingress.hosts |
hosts for the coordinator api | [ "chart-example.local" ] |
coordinator.ingress.path |
path of the coordinator api | / |
coordinator.ingress.annotations |
annotations for the coordinator api ingress | {} |
coordinator.ingress.tls |
TLS configuration for the ingress | [] |
Parameter | Description | Default |
---|---|---|
middleManager.enabled |
enable middleManager | true |
middleManager.name |
middleManager component name | middleManager |
middleManager.replicaCount |
middleManager node replicas (statefulset) | 1 |
middleManager.port |
port of middleManager component | 8091 |
middleManager.serviceType |
service type for service | ClusterIP |
middleManager.serviceAccount.create |
Create a service account for middleManager service | true |
middleManager.serviceAccount.name |
Service account name | `` |
middleManager.serviceAccount.annotations |
Annotations applied to created service account | {} |
middleManager.serviceAccount.labels |
Labels applied to created service account | {} |
middleManager.serviceAccount.automountServiceAccountToken |
Automount API credentials for the Service Account | true |
middleManager.resources |
middleManager node resources requests & limits | {} |
middleManager.podAnnotations |
middleManager Deployment annotations | {} |
middleManager.nodeSelector |
Node labels for middleManager pod assignment | {} |
middleManager.securityContext |
custom security context for middleManager containers | { fsGroup: 1000 } |
middleManager.tolerations |
middleManager tolerations | [] |
middleManager.config |
middleManager private config such as JAVA_OPTS |
|
middleManager.persistence.enabled |
middleManager persistent enabled/disabled | true |
middleManager.persistence.size |
middleManager persistent volume size | 4Gi |
middleManager.persistence.storageClass |
middleManager persistent volume Class | nil |
middleManager.persistence.accessMode |
middleManager persistent Access Mode | ReadWriteOnce |
middleManager.antiAffinity |
middleManager anti-affinity policy | soft |
middleManager.nodeAffinity |
middleManager node affinity policy | {} |
middleManager.autoscaling.enabled |
enable horizontal pod autoscaling | false |
middleManager.autoscaling.minReplicas |
middleManager autoscaling min replicas | 2 |
middleManager.autoscaling.maxReplicas |
middleManager autoscaling max replicas | 5 |
middleManager.autoscaling.metrics |
middleManager autoscaling metrics | [] |
middleManager.ingress.enabled |
enable ingress | false |
middleManager.ingress.hosts |
hosts for the middleManager api | [ "chart-example.local" ] |
middleManager.ingress.path |
path of the middleManager api | / |
middleManager.ingress.annotations |
annotations for the middleManager api ingress | {} |
middleManager.ingress.tls |
TLS configuration for the ingress | [] |
Parameter | Description | Default |
---|---|---|
historical.enabled |
enable historical | true |
historical.name |
historical component name | historical |
historical.replicaCount |
historical node replicas (statefulset) | 1 |
historical.port |
port of historical component | 8083 |
historical.serviceType |
service type for service | ClusterIP |
historical.serviceAccount.create |
Create a service account for historical service | true |
historical.serviceAccount.name |
Service account name | Derived from the name of service |
historical.serviceAccount.annotations |
Annotations applied to created service account | {} |
historical.serviceAccount.labels |
Labels applied to created service account | {} |
historical.serviceAccount.automountServiceAccountToken |
Automount API credentials for the Service Account | true |
historical.resources |
historical node resources requests & limits | {} |
historical.livenessProbeInitialDelaySeconds |
historical node liveness probe initial delay in seconds | 60 |
historical.readinessProbeInitialDelaySeconds |
historical node readiness probe initial delay in seconds | 60 |
historical.podAnnotations |
historical Deployment annotations | {} |
historical.nodeSelector |
node labels for historical pod assignment | {} |
historical.securityContext |
custom security context for historical containers | { fsGroup: 1000 } |
historical.tolerations |
historical tolerations | [] |
historical.config |
historical node private config such as JAVA_OPTS |
|
historical.persistence.enabled |
historical persistent enabled/disabled | true |
historical.persistence.size |
historical persistent volume size | 4Gi |
historical.persistence.storageClass |
historical persistent volume Class | nil |
historical.persistence.accessMode |
historical persistent Access Mode | ReadWriteOnce |
historical.antiAffinity |
historical anti-affinity policy | soft |
historical.nodeAffinity |
historical node affinity policy | {} |
historical.ingress.enabled |
enable ingress | false |
historical.ingress.hosts |
hosts for the historical api | [ "chart-example.local" ] |
historical.ingress.path |
path of the historical api | / |
historical.ingress.annotations |
annotations for the historical api ingress | {} |
historical.ingress.tls |
TLS configuration for the ingress | [] |
Parameter | Description | Default |
---|---|---|
postgresql.enabled |
enable PostgreSQL | true |
postgresql.auth.username |
PostgreSQL username | druid |
postgresql.auth.password |
PostgreSQL password | druid |
postgresql.auth.database |
PostgreSQL database | druid |
postgresql.service.port |
PostgreSQL service port | 5432 |
Parameter | Description | Default |
---|---|---|
prometheus.enabled |
Support scraping from prometheus | false |
prometheus.port |
expose prometheus port | 9090 |
prometheus.annotation |
pods annotation to notify prometheus scraping | {prometheus.io/scrape: "true", prometheus.io/port: "9090"} |
Full and up-to-date documentation can be found in the comments of the values.yaml
file.
Druid configuration can be changed by using environment variables from Docker image.
See the Druid Docker entry point for more information.
The Chart provides ingress configuration to allow customization the installation by adapting the values.yaml
depending on your setup. Please read the comments in the values.yaml
file for more details on how to configure your reverse proxy or load balancer.
MiddleManagers and Historicals use StatefulSet. Persistence has been enabled by default.