Skip to content

Instantly share code, notes, and snippets.

@felipeneuwald
Created July 6, 2020 20:59
Show Gist options
  • Save felipeneuwald/c4156ae7783a39877c6d44c17d39943c to your computer and use it in GitHub Desktop.
Save felipeneuwald/c4156ae7783a39877c6d44c17d39943c to your computer and use it in GitHub Desktop.
the-billion-message-rabbitmq: 004-StatefulSet.yaml
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbitmq
namespace: rabbitmq
spec:
serviceName: rabbitmq
replicas: 3
selector:
matchLabels:
app: rabbitmq
template:
metadata:
labels:
app: rabbitmq
spec:
serviceAccountName: rabbitmq
terminationGracePeriodSeconds: 10
nodeSelector:
node_type: worker
containers:
- name: rabbitmq
image: rabbitmq:3.8.5-management-alpine
volumeMounts:
- name: rabbitmq-config-volume
mountPath: /etc/rabbitmq
- name: rabbitmq-data-volume
mountPath: /var/lib/rabbitmq
ports:
- name: rabbitmq
protocol: TCP
containerPort: 5672
- name: rabbitmq-ui
protocol: TCP
containerPort: 15672
livenessProbe:
exec:
command: ["rabbitmq-diagnostics", "status"]
initialDelaySeconds: 60
periodSeconds: 60
timeoutSeconds: 15
readinessProbe:
exec:
command: ["rabbitmq-diagnostics", "status"]
initialDelaySeconds: 20
periodSeconds: 60
timeoutSeconds: 10
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
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
valueFrom:
configMapKeyRef:
name: rabbitmq
key: RABBITMQ_ERLANG_COOKIE
- name: RABBITMQ_DEFAULT_USER
valueFrom:
configMapKeyRef:
name: rabbitmq
key: RABBITMQ_DEFAULT_USER
- name: RABBITMQ_DEFAULT_PASS
valueFrom:
secretKeyRef:
name: rabbitmq
key: rabbitmq_password
volumes:
- name: rabbitmq-config-volume
configMap:
name: rabbitmq
items:
- key: rabbitmq.conf
path: rabbitmq.conf
- key: enabled_plugins
path: enabled_plugins
- key: definitions.json
path: definitions.json
volumeClaimTemplates:
- metadata:
name: rabbitmq-data-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: do-block-storage
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment