Skip to content

部署步骤 ​

cluster-operator ​

根据需要版本,自行选择

bash
# yaml文件
wget https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml
# image
podman pull rabbitmqoperator/cluster-operator:2.10.0-arm64

rabbitmq集群 ​

软件包 ​

bash
podman pull docker.io/library/rabbitmq:3.13.7-management-alpine

rabbitmq-cluster.yaml ​

yaml
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
  namespace: middleware
  name: rabbitmq-cluster
  labels:
    app: rabbitmq-cluster
spec:
  replicas: 2
  image: docker.io/library/rabbitmq:3.13.7-management-alpine
  resources:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 100m
      memory: 500Mi
  persistence:
    # storageClassName: local-path # 使用local-path-provisioner自动分配,根据实际使用的存储修改
    storageClassName: manual
    storage: 256Mi
  rabbitmq:
    additionalConfig: |
      default_user=admin
      default_pass=123456

rabbitmq-external.yaml ​

yaml
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-external
  namespace: middleware
  labels:
    app: rabbitmq-external
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: rabbitmq-cluster
  ports:
    - name: management
      protocol: TCP
      port: 15672
      targetPort: 15672
      nodePort: 31672
    - name: amqp
      protocol: TCP
      port: 5672       
      targetPort: 5672
      nodePort: 31671

rabbitmq-pv.yaml ​

RabbitMQ cluster-operator会为每个pod创建一个pvc,例如persistence-rabbitmq-cluster-server-0,如果没有自动分配器,需要手动创建对应的pv

yaml
# pv-for-rabbitmq-server-0.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv-0 # 唯一的PV名称
  labels:
    app: rabbitmq # 可以加上标签方便管理
    pv-for-rabbitmq-cluster: "true" # 自定义标签,方便识别
spec:
  capacity:
    storage: 256Mi # 匹配RabbitmqCluster中定义的storage大小
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  hostPath:
    # 注意:这个路径应该在 Node A 上存在,且有写入权限
    path: /app/data/rabbitmq-0
---
# pv-for-rabbitmq-server-1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv-1 # 唯一的PV名称
  labels:
    app: rabbitmq
    pv-for-rabbitmq-cluster: "true"
spec:
  capacity:
    storage: 256Mi # 匹配RabbitmqCluster中定义的storage大小
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  hostPath:
    # 注意:这个路径应该在 Node B 上存在,且有写入权限
    path: /app/data/rabbitmq-1