Apache Druid OLAP Cluster
Scaffolds an Apache Druid OLAP cluster as a Helm chart for Kubernetes. Includes all six Druid services (router, broker, coordinator, overlord, historical, task) as StatefulSets with per-component runtime properties, JVM tuning, and resource limits. Uses Kubernetes-native service discovery (no ZooKeeper), configurable metadata storage and deep storage backends, optional cert-manager TLS certificates, and optional Prometheus metrics emitter.
| Name | infra-druid |
| Version | 0.1.0 |
| Category | infrastructure |
| License | Apache-2.0 |
| Persona | engineering |
| Tags | druid, olap, analytics, kubernetes, helm, infrastructure |
| Source | templates/infra-druid |
Render it
Three front doors, one catalog. Pick whichever suits the caller.
# CLI
npx @nanohype/sdk render infra-druid --out ./my-app
# SDK
import { LocalSource, renderTemplate } from "@nanohype/sdk";
const result = await renderTemplate(source, "infra-druid", variables);
# MCP — from an agent
get_template({ name: "infra-druid" })Prerequisites
| Tool | Version | Why |
|---|---|---|
kubectl | — | Kubernetes CLI for cluster access and manifest debugging |
helm | >=3.0 | Helm CLI for installing and upgrading the Druid chart |
cert-manager (optional) | — | Kubernetes certificate management (only needed if TLS is enabled) |
Variables
Required
ProjectNamestring- Kebab-case project name, used as Helm release name and resource prefix Must be lowercase kebab-case starting with a letter.
Optional
Descriptionstring — defaults toApache Druid OLAP cluster- Short project description for README and chart metadata
DruidVersionstring — defaults to37.0.0- Apache Druid version for the container image
MetadataDriverstring — defaults topostgresql- Metadata storage driver (postgresql, mysql, derby)
DeepStorageTypestring — defaults tos3- Deep storage backend (s3, hdfs, local)
IncludeMonitoringbool — defaults totrue- Include Prometheus metrics emitter configuration and annotations
IncludeTlsbool — defaults totrue- Include cert-manager Certificate for internal mTLS
What it produces
26 files. Placeholder names such as __APP_NAME__ are what the renderer substitutes into.
.env.example
.gitignore
chart/Chart.yaml
chart/templates/_helpers.tpl
chart/templates/broker/configmap.yaml
chart/templates/broker/service.yaml
chart/templates/broker/statefulset.yaml
chart/templates/certificate.yaml
chart/templates/configmap.yaml
chart/templates/coordinator/configmap.yaml
chart/templates/coordinator/service.yaml
chart/templates/coordinator/statefulset.yaml
chart/templates/historical/configmap.yaml
chart/templates/historical/service.yaml
chart/templates/historical/statefulset.yaml
chart/templates/networkpolicy.yaml
chart/templates/overlord/configmap.yaml
chart/templates/overlord/service.yaml
chart/templates/overlord/statefulset.yaml
chart/templates/router/configmap.yaml
chart/templates/router/service.yaml
chart/templates/router/statefulset.yaml
chart/templates/serviceaccount.yaml
chart/templates/task/pod-template.yaml
chart/values.yaml
README.mdComposes with
- Pairs with
monitoring-stack - Pairs with
k8s-deploy - Nests inside
monorepo