---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: commons-rabbit-mq
namespace: commons
spec:
serviceName: commons-rabbit-mq
replicas: 1
selector:
matchLabels:
name: commons-rabbit-mq
app: commons-rabbit-mq
template:
metadata:
labels:
name: commons-rabbit-mq
app: commons-rabbit-mq
spec:
affinity:
podAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- commons-rabbit-mq
topologyKey: kubernetes.io/hostname
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- commons-rabbit-mq
topologyKey: "kubernetes.io/hostname"
containers:
- name: commons-rabbit-mq
image: rabbitmq:management-alpine
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 15672
protocol: TCP
- name: amqp
containerPort: 5672
protocol: TCP
env:
- name: RABBITMQ_DEFAULT_USER
value: "admin"
- name: RABBITMQ_DEFAULT_PASS
value: "admin"
- name: SET_CONTAINER_TIMEZONE
value: "true"
- name: CONTAINER_TIMEZONE
value: "Asia/Shanghai"
volumeMounts:
- name: volume-commons-rabbit-mq-data
mountPath: /var/lib/rabbitmq
volumes:
- name: volume-commons-rabbit-mq-data
hostPath:
path: /app/commons/rabbitmq/data
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: commons-rabbit-mq
namespace: commons
spec:
type: NodePort
selector:
app: commons-rabbit-mq
ports:
- name: amqp
port: 5672
targetPort: 5672
protocol: TCP
nodePort: 30004
- name: http
port: 15672
targetPort: 15672
protocol: TCP
nodePort: 30005
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: commons-rabbit-mq
namespace: commons
spec:
minAvailable: 1
selector:
matchLabels:
app: commons-rabbit-mq