apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq replicas: 4 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: serviceAccountName: rabbitmq initContainers: - name: config image: busybox command: ['/bin/sh', '-c', 'cp /tmp/config/rabbitmq.conf /config/rabbitmq.conf && ls -l /config/ && cp /tmp/config/enabled_plugins /etc/rabbitmq/enabled_plugins'] volumeMounts: - name: config mountPath: /tmp/config/ readOnly: false - name: config-file mountPath: /config/ - name: plugins-file mountPath: /etc/rabbitmq/ containers: - name: rabbitmq image: rabbitmq:3.8-management ports: - containerPort: 4369 name: discovery - containerPort: 5672 name: amqp env: - name: RABBIT_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: RABBIT_POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RABBITMQ_NODENAME value: rabbit@$(RABBIT_POD_NAME).rabbitmq.$(RABBIT_POD_NAMESPACE).svc.cluster.local - name: RABBITMQ_USE_LONGNAME value: "true" - name: RABBITMQ_CONFIG_FILE value: "/config/rabbitmq" - name: RABBITMQ_ERLANG_COOKIE valueFrom: secretKeyRef: name: rabbit-secret key: RABBITMQ_ERLANG_COOKIE - name: K8S_HOSTNAME_SUFFIX value: .rabbitmq.$(RABBIT_POD_NAMESPACE).svc.cluster.local volumeMounts: - name: data mountPath: /var/lib/rabbitmq readOnly: false - name: config-file mountPath: /config/ - name: plugins-file mountPath: /etc/rabbitmq/ volumes: - name: config-file emptyDir: {} - name: plugins-file emptyDir: {} - name: config configMap: name: rabbitmq-config defaultMode: 0755 volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "standard" resources: requests: storage: 50Mi --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: clusterIP: None ports: - port: 4369 targetPort: 4369 name: discovery - port: 5672 targetPort: 5672 name: amqp selector: app: rabbitmq