修改 RabbitMQ Cluster Operator 默认配置
此信息描述了如何在 Kubernetes 集群中修改 RabbitMQ Cluster Kubernetes Operator 的配置。您可能希望这样做是为了控制 Cluster Operator 如何配置 RabbitmqClusters。例如,当您配置 Operator 以自动使用存储在私有注册表中的 RabbitMQ 容器镜像时,这会很有用。
要更改配置,请通过编辑 Cluster Operator 部署清单来添加或更新配置环境变量。这是 RabbitMQ Cluster Operator 在 GitHub 上的每个新版本发布的 YAML 清单工件。可以设置的环境变量列在 Cluster Operator Environment Variables 表中。
Cluster Operator 仓库在 docs/examples 下有一些 代码示例,包括一个演示 修改默认资源请求和限制 的示例。
将 Cluster Operator 环境变量添加到部署清单
部署 Cluster Operator 时,请按照以下步骤更新清单
- 运行
kubectl -n rabbitmq-system edit deployment rabbitmq-cluster-operator - 添加要更改的环境变量。在以下示例中,为 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"
# ... - 保存清单。Cluster Operator Pod 将更新以使用此配置。
重要提示:RabbitMQ Cluster Operator 将来在 GitHub 上的发布版本将不包含您的更改。因此,每次更新 Cluster Operator 时都必须同步这些更新。考虑使用模板自动添加这些变量。例如,使用 ytt overlay。
使用 ytt overlay 自动添加 Cluster Operator 环境变量的示例
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
升级 Operator 时使用此覆盖,以确保您的自定义配置应用于新版本
ytt -f https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml -f values.yaml | kubectl apply -f -
Cluster Operator 环境变量
下表列出了可以在部署清单中设置的 Cluster Operator 环境变量。
| 变量名称 | 设置时的效果 | 未设置时的效果 |
|---|---|---|
| OPERATOR_SCOPE_NAMESPACE | Operator 将进行协调和监视 RabbitmqClusters 的命名空间或命名空间列表(与安装命名空间无关)。使用逗号分隔,无空格,例如 "project-1,project-2,rabbitmq-testing" | 监视和协调所有命名空间 |
| DEFAULT_RABBITMQ_IMAGE | 当未在 RabbitmqCluster.Spec.Image 中显式设置时,用于新 RabbitmqCluster Pod 的 RabbitMQ 容器镜像 | Operator 在发布时使用最新可用的 RabbitMQ 容器镜像用于新 Pod |
| DEFAULT_USER_UPDATER_IMAGE | 当未在 RabbitmqCluster.Spec.SecretBackend.Vault.DefaultUserUpdaterImage 中显式设置时,用于新 RabbitmqCluster Pod 的 Vault sidecar 容器镜像 | Operator 在发布时使用最新可用的 sidecar 容器镜像用于新 Pod |
| DEFAULT_IMAGE_PULL_SECRETS | 当未在 RabbitmqCluster.Spec.ImagePullSecrets 中显式设置时,默认应用于所有 RabbitmqCluster Pod 的 imagePullSecrets 的逗号分隔列表 | 新 RabbitmqCluster Pod 默认没有 imagePullSecrets |
| ENABLE_DEBUG_PPROF | 默认值为 false,因为此变量不应在生产环境中使用。当设置为 true 时,它会在 Operator Pod 的指标端口上公开一组用于 CPU 和 使用 pprof 分析 Operator 的内存使用情况 的调试端点。 | pprof 调试端点不会在 Operator Pod 上公开。 |
| CONTROL_RABBITMQ_IMAGE | 实验性! 当设置为 true 时,Operator 将始终自动设置默认镜像标签。这可用于在 Operator 升级时自动升级 RabbitMQ 集群。请注意,不执行任何安全检查,也不进行 RabbitMQ 版本之间的兼容性检查。 | Operator 不控制镜像。用户负责更新 RabbitmqCluster 镜像。 |
| LEASE_DURATION | 非领导者候选者等待强制获取领导权的时间(秒)。此时间根据上次观察到的确认时间计算。默认值为 15 秒。该值必须是字符串,例如 "30"。 | 默认值为 15 秒。 |
| RENEW_DEADLINE | 续订宽限期是正在 acting 的控制平面在放弃之前重试刷新领导权的时长。默认值为 10 秒。该值必须是字符串,例如 "10"。 | 默认值为 10 秒。 |
| RETRY_PERIOD | 重试周期是 LeaderElector 客户端在尝试操作之间应该等待的时长。默认值为 2 秒。该值必须是字符串,例如 "3"。 | 默认值为 2 秒。 |