修改 RabbitMQ 集群操作符默认配置
本信息介绍如何在 Kubernetes 集群中修改 RabbitMQ 集群 Kubernetes 操作符 的配置。您可能需要这样做来控制集群操作符如何配置 RabbitmqClusters
。例如,当您配置操作符以自动使用存储在私有注册表中的 RabbitMQ 容器镜像时,这将很有用。
要更改配置,请通过编辑集群操作符部署清单来添加或更新配置环境变量。这是在 GitHub 上发布的每个新版本 RabbitMQ 集群操作符中包含的 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
升级操作符时使用此覆盖,以确保您的自定义配置适用于新版本
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 侧边车容器镜像,在 | 操作符对新 Pod 使用发布时可用的最新侧边车容器镜像 |
DEFAULT_IMAGE_PULL_SECRETS | 用逗号分隔的 imagePullSecrets 列表,默认情况下设置在所有 RabbitmqCluster Pod 上,在 | 新 RabbitmqCluster Pod 默认情况下没有 imagePullSecrets |
ENABLE_DEBUG_PPROF | 默认值为 false,因为此变量不应在生产环境中使用。当它设置为 true 时,它将在操作符 Pod 的指标端口上公开一组调试端点,用于使用 pprof 对操作符进行 CPU 和 内存分析。 | pprof 调试端点不会在操作符 Pod 上公开。 |
CONTROL_RABBITMQ_IMAGE | 实验性!当设置为 | 操作符不控制镜像。用户负责更新 RabbitmqCluster 镜像。 |
LEASE_DURATION | 非领导者候选人等待强制获取领导权的时间(以秒为单位)。这是根据最后一次观察到的确认时间来衡量的。默认值为 15 秒。该值必须是字符串,例如 | 默认值为 15 秒。 |
RENEW_DEADLINE | 续期截止时间是代理控制平面在放弃之前重新刷新领导权的持续时间。默认值为 10 秒。该值必须是字符串,例如 | 默认值为 10 秒。 |
RETRY_PERIOD | 重试周期是 LeaderElector 客户端在尝试操作之间应等待的持续时间。默认值为 2 秒。该值必须是字符串,例如 | 默认值为 2 秒。 |