97 lines
3.5 KiB
YAML
97 lines
3.5 KiB
YAML
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: rabbitmq
|
|
spec:
|
|
serviceName: rabbitmq
|
|
# Three nodes is the recommended minimum. Some features may require a majority of nodes
|
|
# to be available.
|
|
replicas: 3
|
|
volumeClaimTemplates: []
|
|
selector:
|
|
matchLabels:
|
|
app: rabbitmq
|
|
template:
|
|
spec:
|
|
# serviceAccountName: rabbitmq
|
|
terminationGracePeriodSeconds: 10
|
|
nodeSelector:
|
|
# Use Linux nodes in a mixed OS kubernetes cluster.
|
|
# Learn more at https://kubernetes.io/docs/reference/kubernetes-api/labels-annotations-taints/#kubernetes-io-os
|
|
kubernetes.io/os: linux
|
|
containers:
|
|
- name: rabbitmq-k8s
|
|
image: rabbitmq:3.8
|
|
volumeMounts:
|
|
- name: config-volume
|
|
mountPath: /etc/rabbitmq
|
|
# Learn more about what ports various protocols use
|
|
# at https://www.rabbitmq.com/networking.html#ports
|
|
ports:
|
|
- name: http
|
|
protocol: TCP
|
|
containerPort: 15672
|
|
- name: amqp
|
|
protocol: TCP
|
|
containerPort: 5672
|
|
livenessProbe:
|
|
exec:
|
|
# This is just an example. There is no "one true health check" but rather
|
|
# several rabbitmq-diagnostics commands that can be combined to form increasingly comprehensive
|
|
# and intrusive health checks.
|
|
# Learn more at https://www.rabbitmq.com/monitoring.html#health-checks.
|
|
#
|
|
# Stage 2 check:
|
|
command: ["rabbitmq-diagnostics", "status"]
|
|
initialDelaySeconds: 60
|
|
# See https://www.rabbitmq.com/monitoring.html for monitoring frequency recommendations.
|
|
periodSeconds: 60
|
|
timeoutSeconds: 15
|
|
readinessProbe:
|
|
exec:
|
|
# This is just an example. There is no "one true health check" but rather
|
|
# several rabbitmq-diagnostics commands that can be combined to form increasingly comprehensive
|
|
# and intrusive health checks.
|
|
# Learn more at https://www.rabbitmq.com/monitoring.html#health-checks.
|
|
#
|
|
# Stage 1 check:
|
|
command: ["rabbitmq-diagnostics", "ping"]
|
|
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"
|
|
# See a note on cluster_formation.k8s.address_type in the config file section
|
|
- name: K8S_SERVICE_NAME
|
|
value: rabbitmq
|
|
- name: RABBITMQ_NODENAME
|
|
value: rabbit@$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local
|
|
- name: K8S_HOSTNAME_SUFFIX
|
|
value: .$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local
|
|
- name: RABBITMQ_ERLANG_COOKIE
|
|
value: "mycookie"
|
|
- name: RABBITMQ_DEFAULT_USER
|
|
value: admin
|
|
- name: RABBITMQ_DEFAULT_PASS
|
|
value: admin
|
|
volumes:
|
|
- name: config-volume
|
|
configMap:
|
|
name: rabbitmq-config
|
|
items:
|
|
- key: rabbitmq.conf
|
|
path: rabbitmq.conf
|
|
- key: enabled_plugins
|
|
path: enabled_plugins
|