druid/helm/druid
Jason Witkowski f7a5fcf30f
helm: Add serviceAccounts, rbac, and small fixes (#13747)
Update suggested segment-cache path, Allow for per-service serviceAccounts in druid helm chart and finer-grained RBAC, and add a default annotation to historical statefulset.
2023-02-23 11:42:03 +05:30
..
templates helm: Add serviceAccounts, rbac, and small fixes (#13747) 2023-02-23 11:42:03 +05:30
Chart.yaml helm: Add serviceAccounts, rbac, and small fixes (#13747) 2023-02-23 11:42:03 +05:30
README.md helm: Add serviceAccounts, rbac, and small fixes (#13747) 2023-02-23 11:42:03 +05:30
values.yaml helm: Add serviceAccounts, rbac, and small fixes (#13747) 2023-02-23 11:42:03 +05:30

README.md

Apache Druid

Apache Druid is a high performance real-time analytics database.

Dependency Update

Before you install the Druid Chart, update the dependencies :

helm dependency update helm/druid

Install Chart

To install the Druid Chart into your Kubernetes cluster :

helm install druid helm/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

Helm ingresses

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.

Chart Prefix

This Helm automatically prefixes all names using the release name to avoid collisions.

URL prefix

This chart exposes 6 endpoints:

  • Druid Overlord
  • Druid Broker
  • Druid Coordinator
  • Druid Historical
  • Druid Middle Manager
  • Druid Router

Druid configuration

Druid configuration can be changed by using environment variables from Docker image.

See the Druid Docker entry point for more informations

Middle Manager and Historical Statefulset

Middle Managers and Historicals uses StatefulSet. Persistence is enabled by default.

Helm chart Configuration

The following table lists the configurable parameters of the Druid chart and their default values.

Parameter Description Default
image.repository container image name apache/druid
image.tag container image tag 0.19.0
image.pullPolicy container pull policy IfNotPresent
image.pullSecrets image pull secrest for private repositoty []
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
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 []
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 []
overlord.enabled enable overlord false
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 []
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 []
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 []
router.enabled enable router false
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 []
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.