修改 RabbitMQ 集群操作符默认配置
本文介绍如何在 Kubernetes 集群中修改 RabbitMQ 集群 Kubernetes 操作符的配置。您可能需要这样做来控制集群操作符如何配置 RabbitmqClusters
。例如,当您配置操作符以自动使用存储在私有仓库中的 RabbitMQ 容器镜像时,这会很有用。
要更改配置,请通过编辑集群操作符部署清单来添加或更新配置环境变量。这是随 RabbitMQ 集群操作符的每个新版本在 GitHub 上发布的 YAML 清单文件。可以设置的环境变量在集群操作符环境变量表中有列出。
集群操作符仓库在 docs/examples 下有一些代码示例,包括一个演示如何修改默认资源请求和限制的示例。
将集群操作符环境变量添加到部署清单
当集群操作符部署后,通过完成以下步骤更新清单
- 运行
kubectl -n rabbitmq-system edit deployment rabbitmq-cluster-operator
- 添加您想要更改的环境变量。在以下示例中,为集群操作符添加了
OPERATOR_SCOPE_NAMESPACE
环境变量并将其设置为"custom-namespace,my-namespace"
。apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: rabbitmq-operator
app.kubernetes.io/name: rabbitmq-cluster-operator
app.kubernetes.io/part-of: rabbitmq
name: rabbitmq-cluster-operator
namespace: rabbitmq-system
spec:
template:
spec:
containers:
- command:
- /manager
env:
- name: OPERATOR_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: OPERATOR_SCOPE_NAMESPACE
value: "custom-namespace,my-namespace"
# ... - 保存清单。集群操作符 Pod 将更新以使用此配置。
重要提示:未来 RabbitMQ 集群操作符的 GitHub 版本将不会包含您的更改。因此,每次更新集群操作符时,都必须同步这些更新。考虑使用模板来自动添加这些变量。例如,使用 ytt overlay
。
使用 ytt overlay
自动添加集群操作符环境变量的示例
values.yaml
#@ load("@ytt:overlay", "overlay")
#@ deployment = overlay.subset({"kind": "Deployment"})
#@ cluster_operator = overlay.subset({"metadata": {"name": "rabbitmq-cluster-operator"}})
#@overlay/match by=overlay.and_op(deployment, cluster_operator),expects="1+"
---
spec:
template:
spec:
containers:
#@overlay/match by=overlay.subset({"name": "operator"}),expects="1+"
-
#@overlay/match missing_ok=True
env:
- name: OPERATOR_SCOPE_NAMESPACE
value: custom-namespace
升级操作符时使用此 overlay 以确保您的自定义配置应用于新版本
ytt -f https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml -f values.yaml | kubectl apply -f -
集群操作符环境变量
下表列出了可在部署清单中设置的集群操作符环境变量。
变量名 | 设置时的效果 | 未设置时的效果 |
---|---|---|
OPERATOR_SCOPE_NAMESPACE | 操作符将协调和监视 RabbitmqClusters 的命名空间或命名空间列表(独立于安装命名空间)。使用逗号分隔符,不带空格,例如 "project-1,project-2,rabbitmq-testing" | 所有命名空间都被监视和协调 |
DEFAULT_RABBITMQ_IMAGE | 用于新的 RabbitmqCluster Pod 的 RabbitMQ 容器镜像,当 | 操作符为新 Pod 使用发布时可用的最新 RabbitMQ 容器镜像 |
DEFAULT_USER_UPDATER_IMAGE | 用于新的 RabbitmqCluster Pod 的 Vault sidecar 容器镜像,当 | 操作符为新 Pod 使用发布时可用的最新 sidecar 容器镜像 |
DEFAULT_IMAGE_PULL_SECRETS | 要在所有 RabbitmqCluster Pod 上默认设置的 imagePullSecrets 的逗号分隔列表,当 | 默认情况下,新的 RabbitmqCluster Pod 没有 imagePullSecrets |
ENABLE_DEBUG_PPROF | 默认值为 false,因为此变量不应在生产环境中使用。当设置为 true 时,它会在操作符 Pod 的指标端口上公开一组调试端点,用于使用 pprof 对操作符进行 CPU 和内存分析。 | pprof 调试端点不会在操作符 Pod 上公开。 |
CONTROL_RABBITMQ_IMAGE | 实验性功能! 当设置为 | 操作符不控制镜像。用户负责更新 RabbitmqCluster 镜像。 |
LEASE_DURATION | 非领导者候选者将等待强制获取领导权的时间,以秒为单位。这是根据上次观察到的 ack 的时间来衡量的。默认值为 15 秒。该值必须是字符串,例如 | 默认值设置为 15 秒。 |
RENEW_DEADLINE | 续订截止时间是活动控制平面在放弃之前重试刷新领导权的时间。默认值为 10 秒。该值必须是字符串,例如 | 默认值设置为 10 秒。 |
RETRY_PERIOD | 重试周期是 LeaderElector 客户端在尝试操作之间应等待的时间。默认值为 2 秒。该值必须是字符串,例如 | 默认值设置为 2 秒。 |