Skip to content

Apache Druid

Deploy Apache Druid on Kubernetes — a high-performance, real-time analytics database designed for fast slice-and-dice analytics on large datasets, commonly used for BI dashboards and real-time data exploration.

Key Features

  • 6-component architecture — coordinator, overlord, broker, router, historical, middlemanager
  • Router web console — built-in Druid console accessible via ingress
  • PostgreSQL metadata store — bundled subchart or external PostgreSQL/MySQL
  • ZooKeeper coordination — bundled subchart or external ZooKeeper
  • Deep storage — local or S3-compatible (MinIO, AWS S3)
  • Persistent volumes — segment cache (historical) and task storage (middlemanager)
  • Per-component scaling — independent replica counts and JVM tuning
  • Health probes — liveness on /status/health, readiness on /status/selfDiscovered
  • Ingress support — configurable class (traefik, nginx, etc.)

Installation

HTTPS repository:

helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install druid helmforge/druid -f values.yaml

OCI registry:

helm install druid oci://ghcr.io/helmforgedev/helm/druid -f values.yaml

Basic Example

coordinator:
  enabled: true

broker:
  enabled: true

router:
  enabled: true

historical:
  enabled: true
  persistence:
    size: 20Gi

ingress:
  enabled: true
  ingressClassName: traefik
  hosts:
    - host: druid.example.com
      paths:
        - path: /
          pathType: Prefix

S3 Deep Storage

deepStorage:
  type: s3
  s3:
    bucket: my-druid-bucket
    baseKey: druid/segments
    region: us-east-1
    accessKey: 'AKIAIOSFODNN7EXAMPLE'
    secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'

External Services

metadata:
  mode: external
  external:
    type: postgresql
    host: postgres.example.internal
    port: 5432
    name: druid
    username: druid
    existingSecret: druid-db

zookeeperConfig:
  mode: external
  external:
    hosts: 'zk1.example.internal:2181,zk2.example.internal:2181'

postgresql:
  enabled: false

zookeeper:
  enabled: false

Key Values

KeyDefaultDescription
image.repositoryapache/druidDruid container image
coordinator.enabledtrueEnable coordinator
coordinator.javaOpts-Xms256m -Xmx512mCoordinator JVM options
overlord.enabledtrueEnable overlord
broker.enabledtrueEnable broker
broker.javaOpts-Xms512m -Xmx1gBroker JVM options
router.enabledtrueEnable router (web console)
historical.enabledtrueEnable historical node
historical.persistence.size10GiSegment cache volume size
middleManager.enabledtrueEnable middle manager
middleManager.workerCapacity2Tasks per middle manager
metadata.modesubchartMetadata mode: subchart or external
zookeeperConfig.modesubchartZooKeeper mode: subchart or external
deepStorage.typelocalDeep storage: local or s3
ingress.enabledfalseEnable ingress

Operational Notes

  • Druid is memory-intensive — all 6 components together require 2GB+ RAM minimum
  • tune JVM heap per component via javaOpts for production sizing
  • the router component serves the web console and is the default ingress target
  • use S3 deep storage for production; local deep storage is only suitable for development
  • historical nodes cache segments on disk — size the PVC based on data volume

More Information

See the source code and full values reference on GitHub.