--- /dev/null
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: rabbitmq
+ namespace: default
+spec:
+ serviceName: rabbitmq
+ replicas: 3
+ selector:
+ matchLabels:
+ app: rabbitmq
+ template:
+ metadata:
+ labels:
+ app: rabbitmq
+ spec:
+ serviceAccountName: rabbitmq
+ terminationGracePeriodSeconds: 10
+ nodeSelector:
+ kubernetes.io/os: linux
+ containers:
+ - name: rabbitmq-k8s
+ image: rabbitmq:3.7-management-alpine
+ volumeMounts:
+ - name: config-volume
+ mountPath: /etc/rabbitmq
+ ports:
+ - name: http
+ protocol: TCP
+ containerPort: 15672
+ - name: amqp
+ protocol: TCP
+ containerPort: 5672
+ livenessProbe:
+ exec:
+ command: ["rabbitmq-diagnostics", "status"]
+ initialDelaySeconds: 60
+ periodSeconds: 60
+ timeoutSeconds: 15
+ readinessProbe:
+ exec:
+ command: ["rabbitmq-diagnostics", "status"]
+ initialDelaySeconds: 20
+ periodSeconds: 60
+ timeoutSeconds: 10
+ imagePullPolicy: Always
+ env:
+ - name: MY_POD_NAME
+ valueFrom:
+ fieldRef:
+ apiVersion: v1
+ fieldPath: metadata.name
+ - name: MY_POD_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: RABBITMQ_USE_LONGNAME
+ value: "true"
+ - name: K8S_SERVICE_NAME
+ value: rabbitmq
+ - name: RABBITMQ_NODENAME
+ # yamllint disable rule:line-length
+ value: rabbit@$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local
+ # yamllint enable rule:line-length
+ - name: K8S_HOSTNAME_SUFFIX
+ value: .$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local
+ - name: RABBITMQ_ERLANG_COOKIE
+ value: "dW5pcXVlLWVybGFuZy1jb29raWU="
+ volumes:
+ - name: config-volume
+ configMap:
+ name: rabbitmq-config
+ items:
+ - key: rabbitmq.conf
+ path: rabbitmq.conf
+ - key: enabled_plugins
+ path: enabled_plugins