I have used following life cycle hook for enabling plugin:
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "rabbitmq-plugins --offline enable rabbitmq_management rabbitmq_peer_discovery_k8s rabbitmq_prometheus"]
Need to use --offline
flag to wait for rabbitmq to start and then enable.
Mounting didn't work for me. I was getting error in rabbitmq that not able to write file in the /etc/rabbitmq
. Couldn't resolve it because of this https://github.com/kubernetes/kubernetes/pull/58720
Here you can see one sample manifest:
---
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
namespace: develop
spec:
type: ClusterIP
selector:
app: rabbitmq
tier: core
ports:
- name: port-5672-tcp
port: 5672
- name: port-15672-tcp
port: 15672
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq
namespace: develop
spec:
replicas: 2
selector:
matchLabels:
app: rabbitmq
tier: core
template:
metadata:
labels:
app: rabbitmq
tier: core
spec:
restartPolicy: Always
terminationGracePeriodSeconds: 30
volumes:
- name: rabbitmq-storage
persistentVolumeClaim:
claimName: rabbitmq-pvc
containers:
- name: rabbitmq
image: rabbitmq:3.8-management
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "rabbitmq-plugins --offline enable rabbitmq_management rabbitmq_peer_discovery_k8s rabbitmq_prometheus"]
resources:
requests:
memory: 2Gi
cpu: 1
limits:
memory: 2Gi
cpu: 1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5672
- containerPort: 15672
volumeMounts:
- name: rabbitmq-storage
mountPath: "/var/lib/rabbitmq/"
env:
- name: RABBITMQ_DEFAULT_USER
valueFrom:
secretKeyRef:
name: rabbitmq-username
key: RABBITMQ__USERNAME
- name: RABBITMQ_DEFAULT_PASS
valueFrom:
secretKeyRef:
name: rabbitmq-password
key: RABBITMQ__PASSWORD
nodeSelector:
type: ultrafastest