跳到主要内容

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

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

要更改配置,请通过编辑集群操作符部署清单来添加或更新配置环境变量。这是随 RabbitMQ 集群操作符的每个新版本在 GitHub 上发布的 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

升级操作符时使用此 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 容器镜像,当 RabbitmqCluster.Spec.Image 中未显式设置时使用

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

DEFAULT_USER_UPDATER_IMAGE

用于新的 RabbitmqCluster Pod 的 Vault sidecar 容器镜像,当 RabbitmqCluster.Spec.SecretBackend.Vault.DefaultUserUpdaterImage 中未显式设置时使用

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

DEFAULT_IMAGE_PULL_SECRETS

要在所有 RabbitmqCluster Pod 上默认设置的 imagePullSecrets 的逗号分隔列表,当 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

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

默认值设置为 15 秒。

RENEW_DEADLINE

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

默认值设置为 10 秒。

RETRY_PERIOD

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

默认值设置为 2 秒。

© . All rights reserved.