All tools / Kubernetes examples
RabbitMQ on Kubernetes
RabbitMQ with the management UI, as a StatefulSet with a persistent volume and credentials in a Secret.
Customize names, versions and passwords →
rabbitmq.yaml
apiVersion: v1
kind: Secret
metadata:
name: rabbitmq
namespace: default
type: Opaque
stringData:
RABBITMQ_DEFAULT_USER: "admin"
RABBITMQ_DEFAULT_PASS: "change-me"
---
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
namespace: default
spec:
selector:
app: rabbitmq
ports:
- name: amqp
port: 5672
- name: management
port: 15672
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbitmq
namespace: default
spec:
serviceName: rabbitmq
replicas: 1
selector:
matchLabels:
app: rabbitmq
template:
metadata:
labels:
app: rabbitmq
spec:
securityContext:
fsGroup: 999
containers:
- name: rabbitmq
image: rabbitmq:4.1-management
ports:
- name: amqp
containerPort: 5672
- name: management
containerPort: 15672
envFrom:
- secretRef:
name: rabbitmq
readinessProbe:
exec:
command: ["rabbitmq-diagnostics", "-q", "ping"]
initialDelaySeconds: 20
periodSeconds: 15
timeoutSeconds: 10
livenessProbe:
exec:
command: ["rabbitmq-diagnostics", "-q", "status"]
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 15
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
memory: 1Gi
volumeMounts:
- name: data
mountPath: /var/lib/rabbitmq
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
Passwords here are placeholders (change-me). The generator creates random ones for you.
How to use it
Commands
kubectl apply -f rabbitmq.yaml kubectl -n default get pods -w
- Apps connect to amqp://admin:<password>@rabbitmq.default:5672. Open the UI with kubectl -n default port-forward svc/rabbitmq 15672:15672.
- For a cluster of several nodes, use the RabbitMQ Cluster Operator instead.
Prefer Docker Compose? See the RabbitMQ Docker Compose version.