Rabbitmq-operator 搭建RabbitMQ集群
一、部署operator
1.1 安装服务
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
# namespace/rabbitmq-system created
# customresourcedefinition.apiextensions.k8s.io/rabbitmqclusters.rabbitmq.com created
# serviceaccount/rabbitmq-cluster-operator created
# role.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-role created
# clusterrole.rbac.authorization.k8s.io/rabbitmq-cluster-operator-role created
# rolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-rolebinding created
# clusterrolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-operator-rolebinding created
# deployment.apps/rabbitmq-cluster-operator created
1.2 环境变量
变量名 | 含义 | 默认值 |
---|
OPERATOR_SCOPE_NAMESPACE | 命名空间或命名空间列表,操作员将协调并监视 RabbitmqClusters(独立于安装命名空间)。使用逗号分隔符,不带空格,例如“project-1,project-2,rabbitmq-testing” | 所有命名空间均受到监视和协调 |
默认_RABBITMQ_IMAGE | 用于新 RabbitmqCluster Pod 的 RabbitMQ 容器镜像未明确设置RabbitmqCluster.Spec.Image | Operator 使用发布时可用的最新 RabbitMQ 容器镜像来运行新的 Pod |
默认用户更新程序_图像 | 用于新 RabbitmqCluster Pod 的 Vault Sidecar 容器镜像未明确设置RabbitmqCluster.Spec.SecretBackend.Vault.DefaultUserUpdaterImage | Operator 使用发布时可用的最新 Sidecar 容器镜像来管理新的 Pod |
默认图像拉取机密 | 在所有 RabbitmqCluster Pod 上默认设置的 imagePullSecrets 的逗号分隔列表,其中未明确设置RabbitmqCluster.Spec.ImagePullSecrets | 新的 RabbitmqCluster Pod 默认没有 imagePullSecrets |
启用_调试_PPROF | 默认值为 false,因为此变量不应在生产中使用。当将其设置为 true 时,它会在 Operator Pod 的指标端口上公开一组调试端点,以便使用 pprof 对 Operator 进行 CPU 和内存分析。 | pprof 调试端点不会在 Operator Pod 上公开。 |
控制_RABBITMQ_图像 | 实验性!当设置为 时true ,操作员将始终自动设置默认图像标签。当操作员升级时,这可用于自动升级 RabbitMQ 集群。请注意,没有执行安全检查,也没有执行 RabbitMQ 版本之间的任何兼容性检查。 | 操作员不控制镜像。用户负责更新 RabbitmqCluster 镜像。 |
租约期限 | 非领导者候选人等待强制获取领导权的时间(以秒为单位)。这是根据上次观察到的确认时间来衡量的。默认值为 15 秒。该值必须是字符串,例如"30" 。 | 默认值设置为 15 秒。 |
续订截止日期 | 更新截止期限是代理控制平面在放弃之前重试刷新领导权的持续时间。默认值为 10 秒。该值必须是字符串,例如"10" 。 | 默认值设置为 10 秒。 |
重试周期 | 重试周期是 LeaderElector 客户端在尝试操作之间应等待的时间。默认值为 2 秒。该值必须是字符串,例如"3" 。 | 默认值设置为 2 秒。 |
二、部署集群
2.1 安装清单
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
name: rabbitmq
namespace: rabbitmq-system
spec:
replicas: 3
service:
type: NodePort
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 800m
memory: 1Gi
rabbitmq:
envConfig: |
RABBITMQ_QUORUM_DIR=/var/lib/rabbitmq/quorum-segments
advancedConfig: |
[
{ra, [
{wal_data_dir, "/var/lib/rabbitmq/quorum-wal"}
]}
].
override:
statefulSet:
spec:
template:
spec:
containers:
- name: rabbitmq
volumeMounts:
- mountPath: /var/lib/rabbitmq/quorum-segments
name: quorum-segments
- mountPath: /var/lib/rabbitmq/quorum-wal
name: quorum-wal
volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: persistence
namespace: default
spec:
storageClassName: ys-custom
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
volumeMode: Filesystem
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: quorum-wal
spec:
storageClassName: ys-custom
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
volumeMode: Filesystem
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: quorum-segments
namespace: default
spec:
storageClassName: ys-custom
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
2.2 安装服务
kubectl apply -f rabbitmq.yaml
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。