在 Kubernetes 集群中安装 RabbitMQ Cluster Operator
概述
本指南介绍了在 Kubernetes 集群中安装 RabbitMQ Cluster Kubernetes Operator。
兼容性
Operator 需要
- Kubernetes 1.19 或更高版本(推荐使用 1.25 或更高版本,尤其适用于使用 RabbitMQ Streams 的环境)
- RabbitMQ DockerHub 镜像,该镜像提供受支持的 RabbitMQ 版本系列
安装
要安装 Operator,请运行以下命令
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
# namespace/rabbitmq-system created
# customresourcedefinition.apiextensions.k8s.io/rabbitmqclusters.rabbitmq.com created
# serviceaccount/rabbitmq-cluster-operator created
# role.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-role created
# clusterrole.rbac.authorization.k8s.io/rabbitmq-cluster-operator-role created
# rolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-rolebinding created
# clusterrolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-operator-rolebinding created
# deployment.apps/rabbitmq-cluster-operator created
此时,RabbitMQ Cluster Kubernetes Operator 已成功安装。一旦 RabbitMQ Cluster Kubernetes Operator Pod 正在运行,请前往 使用 Kubernetes RabbitMQ Cluster Kubernetes Operator 获取有关如何使用 Kubernetes 自定义资源部署 RabbitMQ 的说明。
如果您想安装特定版本的 Operator,您需要从 Operator Releases 获取清单链接。请注意,0.46.0 之前的版本没有此清单。我们强烈建议安装 0.46.0+ 版本。
如果您想将 Operator 镜像迁移到自定义位置,迁移镜像 部分将提供将 Operator 镜像迁移到私有注册表的说明。
使用 kubectl-rabbitmq 插件安装
kubectl rabbitmq 插件提供了管理 RabbitMQ 集群的命令。该插件可以使用 krew 安装。
kubectl krew install rabbitmq
要获取可用命令列表,请使用
kubectl rabbitmq help
# USAGE:
# Install RabbitMQ Cluster Operator (optionally provide image to use a relocated image or a specific version)
# kubectl rabbitmq install-cluster-operator [IMAGE]
# [...]
kubectl rabbitmq install-cluster-operator
# namespace/rabbitmq-system created
# customresourcedefinition.apiextensions.k8s.io/rabbitmqclusters.rabbitmq.com created
# serviceaccount/rabbitmq-cluster-operator created
# role.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-role created
# clusterrole.rbac.authorization.k8s.io/rabbitmq-cluster-operator-role created
# rolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-rolebinding created
# clusterrolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-operator-rolebinding created
# deployment.apps/rabbitmq-cluster-operator created
使用 Terraform 和 OpenTofu 安装
Terraform 和 OpenTofu 用户需要在 helm_release 资源上 覆盖仓库 并将其设置为
oci://registry-1.docker.io/bitnamicharts
在 helm_release 资源上。
(可选) 迁移镜像
如果您无法直接从 Docker Hub 拉取镜像到您的 Kubernetes 集群,您需要先将镜像迁移到您的私有注册表。具体步骤取决于您的环境,但很可能如下所示:
docker pull rabbitmqoperator/cluster-operator:{some-version}
docker tag rabbitmqoperator/cluster-operator:{some-version} {someregistry}/cluster-operator:{some-version}
docker push {someregistry}/cluster-operator:{some-version}
{someregistry} 的值应该是 OCI 兼容注册表的地址。{some-version} 的值是 Cluster Operator 的版本号。
如果您需要身份验证才能从您的私有镜像注册表拉取镜像,您必须 配置 Kubernetes 集群访问私有镜像。
从您要迁移的版本发布中 下载清单 并编辑 Deployment 镜像中的部分。您可以通过 grep 字符串 image: 来找到这个部分。
grep -C3 image: releases/cluster-operator.yml
# [...]
# --
# valueFrom:
# fieldRef:
# fieldPath: metadata.namespace
# image: rabbitmqoperator/cluster-operator:0.49.0
# name: operator
# resources:
# limits:
配置 Kubernetes 集群访问私有镜像
如果您已将镜像迁移到私有注册表并且您的注册表需要身份验证,您需要按照以下步骤操作,以允许 Kubernetes 拉取镜像。
首先,创建 Operator 将用于运行和拉取镜像的服务帐户
apiVersion: v1
kind: ServiceAccount
metadata:
name: rabbitmq-cluster-operator
namespace: rabbitmq-system
其次,创建一个 Secret,其中包含从私有注册表拉取的凭据
kubectl -n rabbitmq-system create secret \
docker-registry rabbitmq-cluster-registry-access \
--docker-server=DOCKER-SERVER \
--docker-username=DOCKER-USERNAME \
--docker-password=DOCKER-PASSWORD
其中
DOCKER-SERVER是您私有镜像注册表的服务器 URL。DOCKER-USERNAME是您用于私有镜像注册表身份验证的用户名。DOCKER-PASSWORD是您用于私有镜像注册表身份验证的密码。
例如:
kubectl -n rabbitmq-system create secret \
docker-registry rabbitmq-cluster-registry-access \
--docker-server=docker.io/my-registry \
--docker-username=my-username \
--docker-password=example-password1
现在,通过运行以下命令更新 Operator 服务帐户
kubectl -n rabbitmq-system patch serviceaccount \
rabbitmq-cluster-operator -p '{"imagePullSecrets": [{"name": "rabbitmq-cluster-registry-access"}]}'
请注意,Operator 服务帐户的名称是不可配置的,必须是 rabbitmq-cluster-operator。
配置 Operator 使用私有注册表
您需要修改 Operator 的配置,以便为新的 RabbitmqCluster 实例默认使用迁移的镜像。在 Operator 部署时设置 DEFAULT_RABBITMQ_IMAGE、DEFAULT_USER_UPDATER_IMAGE 和 DEFAULT_IMAGE_PULL_SECRETS 的值,请参阅 配置 RabbitMQ Cluster Operator 的默认值。