以下是部署高可用 RabbitMQ 3.8.2 的步骤:

  1. 创建 RabbitMQ 的 namespace
apiVersion: v1
kind: Namespace
metadata:
  name: rabbitmq
  1. 创建 RabbitMQ 的 configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-config
  namespace: rabbitmq
data:
  rabbitmq.conf: |
    loopback_users.guest = false
    listeners.tcp.default = 5672
    management.tcp.port = 15672
  enabled_plugins: |
    [rabbitmq_management].
  1. 创建 RabbitMQ 的 StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  namespace: rabbitmq
spec:
  serviceName: rabbitmq
  replicas: 2
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
        - name: rabbitmq
          image: rabbitmq:3.8.2-management-alpine
          env:
            - name: RABBITMQ_ERLANG_COOKIE
              value: 'rabbitmq-cookie'
            - name: RABBITMQ_DEFAULT_USER
              value: 'admin'
            - name: RABBITMQ_DEFAULT_PASS
              valueFrom:
                secretKeyRef:
                  name: rabbitmq-secret
                  key: password
          ports:
            - name: amqp
              containerPort: 5672
            - name: management
              containerPort: 15672
          volumeMounts:
            - name: rabbitmq-config-volume
              mountPath: /etc/rabbitmq
      volumes:
        - name: rabbitmq-config-volume
          configMap:
            name: rabbitmq-config
  volumeClaimTemplates:
    - metadata:
        name: rabbitmq-data
      spec:
        accessModes: ['ReadWriteOnce']
        storageClassName: 'standard'
        resources:
          requests:
            storage: 1Gi
  1. 创建 RabbitMQ 的 Service
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  namespace: rabbitmq
spec:
  ports:
    - name: amqp
      port: 5672
      targetPort: 5672
    - name: management
      port: 15672
      targetPort: 15672
  selector:
    app: rabbitmq
  type: NodePort
  1. 创建 RabbitMQ 的 Secret
apiVersion: v1
kind: Secret
metadata:
  name: rabbitmq-secret
  namespace: rabbitmq
type: Opaque
data:
  password: base64-encoded-password

其中,base64-encoded-password 是通过 base64 编码后的 RabbitMQ 密码。

完成上述步骤后,就可以在 Kubernetes 集群中部署高可用 RabbitMQ 3.8.2,并暴露 NodePort,设置密码,使用 ConfigMap 挂载方式。

Kubernetes 1.20.15 高可用 RabbitMQ 3.8.2 部署指南:NodePort 暴露、密码设置和 ConfigMap 挂载

原文地址: https://www.cveoy.top/t/topic/na5v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录