rabbitmq-statefulset helm chart
An example helm chart of RabbitMQ on Kubernetes (GKE) using StatefulSet.
Caveats:
- This example is GKE specific (it uses Persistent Volume Claims). There are no plans to support other providers.
- Does not support SSL for now.
Build/push your image:
docker build -t gcr.io/your-project/rabbitmq .
gcloud docker -- push gcr.io/your-project/rabbitmq
Install using helm
# First make sure you configure your chart values, etc.. to your own liking then:
helm upgrade -i rmq --set environment=production charts/rabbitmq/
Check that you have them
$ kubectl get storageclass standard
NAME TYPE
standard kubernetes.io/gce-pd
# kubectl get service rmq
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rmq None <none> 4369/TCP,5672/TCP,15672/TCP,25672/TCP 1s
Check everything is working as expected
# check that they are up and then check their logs.
kubectl get pod
kubectl logs rmq-0
kubectl logs rmq-1
kubectl logs rmq-2
# in case they are not up check the master logs to see what's happening
kubectl describe pod rmq-0
Config
Environment variables can be used to configure your cluster.
RABBITMQ_USERNAME
- create a username if it doesn't exist (useful for testing, but not recommended in production - do it manually or use secrets)RABBITMQ_PASSWORD
- username's passwordRABBITMQ_VHOST
- a vhost to which the username will be attached.RABBITMQ_ERLANG_COOKIE
- make sure you specify this in your values.yaml
An important note about hosts
Make sure your app connects to the right hosts because of the domain name prefix that is added to StatefulSets. Example:
amqp://USERNAME:PASSWORD@rmq-0.rmq.default.svc.cluster.local:5672/VHOST
amqp://USERNAME:PASSWORD@rmq-1.rmq.default.svc.cluster.local:5672/VHOST
amqp://USERNAME:PASSWORD@rmq-2.rmq.default.svc.cluster.local:5672/VHOST