Modular Helm charts for deploying Danube messaging platform on Kubernetes.
| Chart | Description |
|---|---|
| danube-envoy | Envoy gRPC proxy for routing clients to the correct broker |
| danube-core | Core components: brokers (StatefulSet), etcd, Prometheus |
Additional charts (coming soon): Admin UI, connectors (Qdrant, DeltaLake, SurrealDB, MQTT, Webhook).
charts/
├── danube-envoy/ # Envoy gRPC proxy (Deployment + NodePort/LoadBalancer)
└── danube-core/ # Brokers, etcd, Prometheus
└── examples/ # Broker configs + values-minimal.yaml for Kind
scripts/ # Helper scripts
setup_local_machine.md # Step-by-step local deployment guide
- Kubernetes 1.19+
- Helm 3.0+
- PersistentVolume provisioner support (for production deployments)
The deployment uses two charts: install the proxy first, discover its address, then install the core with that address.
kubectl create namespace danube
helm install danube-envoy ./charts/danube-envoy -n danubePROXY_PORT=$(kubectl get svc danube-envoy -n danube \
-o jsonpath='{.spec.ports[?(@.name=="grpc")].nodePort}')
NODE_IP=$(kubectl get nodes \
-o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')
echo "Proxy address: ${NODE_IP}:${PROXY_PORT}"kubectl create configmap danube-broker-config \
--from-file=danube_broker.yml=./charts/danube-core/examples/danube_broker.yml \
-n danube
helm install danube-core ./charts/danube-core -n danube \
-f ./charts/danube-core/examples/values-minimal.yaml \
--set broker.externalAccess.connectUrl="${NODE_IP}:${PROXY_PORT}"danube-cli produce -s http://${NODE_IP}:${PROXY_PORT} \
-t /default/test_topic -m "Hello from Danube" -c 5For the full walkthrough (Kind cluster setup, verification, consumer testing), see setup_local_machine.md.
- Setup Local Machine — Complete local deployment guide with Kind
- Danube Core Chart — Configuration reference for brokers, etcd, Prometheus
- Envoy Proxy Example — Reference for custom Envoy configurations
helm install danube-core ./charts/danube-core -n danube \
--set broker.replicaCount=5helm install danube-core ./charts/danube-core -n danube \
--set broker.resources.requests.memory=2Gi \
--set broker.resources.limits.memory=4Gi# Create a ConfigMap from your custom config
kubectl create configmap my-envoy-config \
--from-file=envoy.yaml=my-envoy.yaml -n danube
# Install with the custom ConfigMap
helm install danube-envoy ./charts/danube-envoy -n danube \
--set existingConfigMap=my-envoy-confighelm install danube-core ./charts/danube-core -n danube \
-f my-custom-values.yamlhelm uninstall danube-core -n danube
helm uninstall danube-envoy -n danubeNote: PersistentVolumeClaims are not automatically deleted. Clean them up by deleting the namespace:
kubectl delete namespace danubeGet pod status:
kubectl get pods -n danubeView logs:
# Broker logs
kubectl logs -l app.kubernetes.io/component=broker -n danube
# ETCD logs
kubectl logs -l app.kubernetes.io/component=etcd -n danube
# Envoy proxy logs
kubectl logs -l app.kubernetes.io/name=danube-envoy -n danubeFor more details, see the Troubleshooting section in the setup guide.
This Helm chart is licensed under the Apache 2.0 License. See the LICENSE file for more details.