跳到主要内容

安装 RabbitMQ 消息拓扑运算符

概述

本指南介绍了在 Kubernetes 集群中安装 RabbitMQ 消息拓扑运算符。

兼容性

该运算符需要

  • Kubernetes 1.19 或更高版本
  • RabbitMQ 集群运算符 1.7.0+(否则,RabbitMQ 消息拓扑运算符将无法启动)

安装

安装运算符有两种选择

  1. 使用 cert-manager 安装
  2. 安装生成的证书

使用 cert-manager 安装

首先,在您的集群上安装 cert-manager 版本 1.2.0+。例如,对于版本 1.3.1,运行

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.yaml

然后,要安装运算符,请运行以下命令

kubectl apply -f https://github.com/rabbitmq/messaging-topology-operator/releases/latest/download/messaging-topology-operator-with-certmanager.yaml

安装生成的证书

如果未安装 cert-manager,您将需要自己生成 admission webhooks 使用的证书,并将它们包含在运算符和 webhooks 清单中。

下载最新的发布清单 https://github.com/rabbitmq/messaging-topology-operator/releases/latest/download/messaging-topology-operator.yaml

消息拓扑运算符有多个 admission webhooks。它们的端点已启用 TLS,并且需要 webhook 证书,该证书必须在下载的发布清单中的多个位置使用。

以下部分解释了安装 webhook admission 证书所涉及的步骤。

生成密钥/证书对

首先,为 webhook admission 生成一个或多个密钥/证书对。这些证书必须对 webhook-service.rabbitmq-system.svc 有效。

创建 K8S Secret

接下来,在 rabbitmq-system 命名空间中创建一个名为 webhook-server-cert 的 Kubernetes secret 对象。secret 对象必须包含以下键

  • ca.crt (CA 证书)
  • tls.crt (leaf/webhook 证书)
  • tls.key (leaf/webhook 私钥)

secret 将被挂载到 Operator 容器,所有 webhooks 将从中运行。

例如

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
name: webhook-server-cert
namespace: rabbitmq-system
data:
ca.crt: # ca cert that can be used to validate the webhook's server certificate
tls.crt: # generated certificate
tls.key: # generated private key

在发布清单中使用生成的证书

最后,将 webhook 的 CA 证书添加到发布清单 messaging-topology-operator.yaml。有多个 admission webhooks,每种 CRD 类型一个。

在清单中查找关键字 clientConfig,并将 webhook CA 证书粘贴到 clientConfig.caBundle 下。由于有多个 webhooks,请在多个位置执行此操作。

下面的示例显示了如何将 CA 证书添加到 queues.rabbitmq.com 验证 webhook

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
annotations:
name: validating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
caBundle: # generated ca certificate goes in here
service:
name: webhook-service
namespace: rabbitmq-system
path: /validate-rabbitmq-com-v1beta1-queue
failurePolicy: Fail
name: vqueue.kb.io
rules:
- apiGroups:
- rabbitmq.com
...```


Then, to install the Operator, run the following command:

```bash
kubectl apply -f messaging-topology-operator.yaml

此时,RabbitMQ 消息拓扑运算符已成功安装。

使用非默认 Kubernetes 内部域名

默认情况下,Kubernetes 内部域名为 .cluster.local。这可以在 kubeadm 中配置为其他名称,例如 my.cluster.domain。在这种情况下,消息拓扑运算符可以将域名附加到它用于与 RabbitMQ 交互的连接字符串中。

要配置消息拓扑运算符以在连接字符串中附加域名,请将环境变量 MESSAGING_DOMAIN_NAME 设置为您的域名,例如 ".my.cluster.domain"

要设置此环境变量

  • releases 下载安装清单
  • 打开清单并搜索名称为 messaging-topology-operator 的 Deployment
  • env 列表添加一个新元素,名称为 MESSAGING_DOMAIN_NAME,值为您的域名

Deployment 相关的清单应类似于以下内容

apiVersion: apps/v1
kind: Deployment
metadata:
[...]
name: messaging-topology-operator
namespace: rabbitmq-system
spec:
template:
[...]
spec:
containers:
- command:
- /manager
env:
- name: OPERATOR_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MESSAGING_DOMAIN_NAME
value: "my.cluster.domain"

应用编辑后的清单。一旦 Pod 应用了更改,后续对 RabbitMQ 的 HTTP API 请求将在连接字符串中附加域名。

修改 RabbitMQ 消息拓扑运算符默认配置

此信息描述了如何在 Kubernetes 集群中修改 RabbitMQ 消息拓扑运算符的配置。

要更改配置,请通过编辑拓扑运算符部署清单来添加或更新配置环境变量。这是与 GitHub 上 RabbitMQ 集群运算符的每个新版本一起发布的 YAML 清单工件。可以在 拓扑运算符环境变量 中的表中列出可以设置的环境变量。

参数

下表列出了可在部署清单中设置的拓扑运算符环境变量。

变量名

设置时的效果

未设置时的效果

OPERATOR_SCOPE_NAMESPACE

运算符将协调和监视 RabbitmqClusters 的命名空间或命名空间列表(独立于安装命名空间)。使用逗号分隔符,不带空格,例如“project-1,project-2,rabbitmq-testing”

所有命名空间都被监视和协调

ENABLE_DEBUG_PPROF

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

pprof 调试端点不会在 Operator Pod 上公开。

SYNC_PERIOD

配置运算符定期协调所有拥有的对象。它接受带有时间后缀的字符串值,例如“15m”。它接受 time.ParseDuration 函数可解析的任何值。默认情况下,同步周期使用库默认值 10 小时。要禁用定期协调,请将值设置为 "0"

仅当资源更新时才会发生协调。

LEASE_DURATION

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

默认值设置为 15 秒。

RENEW_DEADLINE

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

默认值设置为 10 秒。

RETRY_PERIOD

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

默认值设置为 2 秒。

CONNECT_USING_PLAIN_HTTP

即使集群启用了 TLS,也使用纯 HTTP 与 RabbitMQ 集群通信。默认为 false

默认值设置为 false,并将通过 HTTPS 通信。

旧版本的运算符

要安装特定版本的运算符,请从 运算符发布 获取清单链接。强烈建议使用最新版本。

© . All rights reserved.