跳至主要内容

修改 RabbitMQ 集群操作符默认配置

本信息介绍如何在 Kubernetes 集群中修改 RabbitMQ 集群 Kubernetes 操作符 的配置。您可能需要这样做来控制集群操作符如何配置 RabbitmqClusters。例如,当您配置操作符以自动使用存储在私有注册表中的 RabbitMQ 容器镜像时,这将很有用。

要更改配置,请通过编辑集群操作符部署清单来添加或更新配置环境变量。这是在 GitHub 上发布的每个新版本 RabbitMQ 集群操作符中包含的 YAML 清单工件。可以在 集群操作符环境变量 中的表格中找到可以设置的环境变量。

集群操作符存储库有一些 位于 docs/examples 下的代码示例,包括一个演示 修改默认资源请求和限制 的示例。

将集群操作符环境变量添加到部署清单

部署集群操作符后,通过完成以下步骤来更新清单

  1. 运行
    kubectl -n rabbitmq-system edit deployment rabbitmq-cluster-operator
  2. 添加要更改的环境变量。在以下示例中,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"
    # ...
  3. 保存清单。集群操作符 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 容器镜像,在 RabbitmqCluster.Spec.Image 中未明确设置时使用

操作符对新 Pod 使用发布时可用的最新 RabbitMQ 容器镜像

DEFAULT_USER_UPDATER_IMAGE

用于新 RabbitmqCluster Pod 的 Vault 侧边车容器镜像,在 RabbitmqCluster.Spec.SecretBackend.Vault.DefaultUserUpdaterImage 中未明确设置时使用

操作符对新 Pod 使用发布时可用的最新侧边车容器镜像

DEFAULT_IMAGE_PULL_SECRETS

用逗号分隔的 imagePullSecrets 列表,默认情况下设置在所有 RabbitmqCluster Pod 上,在 RabbitmqCluster.Spec.ImagePullSecrets 中未明确设置时使用

新 RabbitmqCluster Pod 默认情况下没有 imagePullSecrets

ENABLE_DEBUG_PPROF

默认值为 false,因为此变量不应在生产环境中使用。当它设置为 true 时,它将在操作符 Pod 的指标端口上公开一组调试端点,用于使用 pprof 对操作符进行 CPU 和 内存分析

pprof 调试端点不会在操作符 Pod 上公开。

CONTROL_RABBITMQ_IMAGE

实验性!当设置为 true 时,操作符将始终自动设置默认镜像标签。这可用于在升级操作符时自动升级 RabbitMQ 集群。请注意,不会执行任何安全检查,也不会有任何 RabbitMQ 版本之间的兼容性检查。

操作符不控制镜像。用户负责更新 RabbitmqCluster 镜像。

LEASE_DURATION

非领导者候选人等待强制获取领导权的时间(以秒为单位)。这是根据最后一次观察到的确认时间来衡量的。默认值为 15 秒。该值必须是字符串,例如 "30"

默认值为 15 秒。

RENEW_DEADLINE

续期截止时间是代理控制平面在放弃之前重新刷新领导权的持续时间。默认值为 10 秒。该值必须是字符串,例如 "10"

默认值为 10 秒。

RETRY_PERIOD

重试周期是 LeaderElector 客户端在尝试操作之间应等待的持续时间。默认值为 2 秒。该值必须是字符串,例如 "3"

默认值为 2 秒。

© 2024 RabbitMQ. All rights reserved.