apiVersion: apps/v1 kind: StatefulSet metadata: name: rmq-cluster namespace: public-service labels: app: rmq-cluster spec: replicas: 3 selector: matchLabels: app: rmq-cluster serviceName: rmq-cluster template: metadata: labels: app: rmq-cluster spec: serviceAccountName: rmq-cluster terminationGracePeriodSeconds: 30 containers: - name: rabbitmq image: rabbitmq:3.7-management imagePullPolicy: IfNotPresent ports: - containerPort: 15672 name: http protocol: TCP - containerPort: 5672 name: amqp protocol: TCP command: - sh args: - -c - cp -v /etc/rabbitmq/rabbitmq.conf ${RABBITMQ_CONFIG_FILE}; exec docker-entrypoint.sh rabbitmq-server env: - name: RABBITMQ_DEFAULT_USER valueFrom: secretKeyRef: key: username name: rmq-cluster-secret - name: RABBITMQ_DEFAULT_PASS valueFrom: secretKeyRef: key: password name: rmq-cluster-secret - name: RABBITMQ_ERLANG_COOKIE valueFrom: secretKeyRef: key: cookie name: rmq-cluster-secret - name: K8S_SERVICE_NAME value: rmq-cluster - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RABBITMQ_USE_LONGNAME value: "true" - name: RABBITMQ_NODENAME value: rabbit@$(POD_NAME).rmq-cluster.$(POD_NAMESPACE).svc.cluster.local - name: RABBITMQ_CONFIG_FILE value: /var/lib/rabbitmq/rabbitmq.conf livenessProbe: exec: command: - rabbitmqctl - status initialDelaySeconds: 30 timeoutSeconds: 10 readinessProbe: exec: command: - rabbitmqctl - status initialDelaySeconds: 10 timeoutSeconds: 10 volumeMounts: - name: config-volume mountPath: /etc/rabbitmq readOnly: false - name: rabbitmq-storage mountPath: /var/lib/rabbitmq readOnly: false volumes: - name: config-volume configMap: items: - key: rabbitmq.conf path: rabbitmq.conf - key: enabled_plugins path: enabled_plugins name: rmq-cluster-config - name: rabbitmq-storage persistentVolumeClaim: claimName: rabbitmq-cluster-storage