在 Kubernetes 集群中安装 RabbitMQ 集群操作器
概述
本指南介绍了在 Kubernetes 集群中安装 RabbitMQ 集群 Kubernetes 操作器 的步骤。
兼容性
操作器需要
- Kubernetes 1.19 或更高版本(建议使用 1.25 或更高版本,特别是对于使用 RabbitMQ Streams 的环境)
- RabbitMQ DockerHub 镜像,它提供 RabbitMQ 的受支持发布系列
安装
要安装操作器,请运行以下命令
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 集群 Kubernetes 操作器已成功安装。一旦 RabbitMQ 集群 Kubernetes 操作器 pod 运行起来,请前往 使用 Kubernetes RabbitMQ 集群 Kubernetes 操作器,以获取有关如何使用 Kubernetes 自定义资源部署 RabbitMQ 的说明。
如果您想安装特定版本的操作器,您需要从 操作器发布 中获取 manifest 链接。请注意,0.46.0 之前的版本没有此 manifest。我们强烈建议安装 0.46.0+ 版本
如果您想将操作器镜像重新定位到自定义位置,“重新定位镜像”部分提供了将操作器镜像重新定位到私有仓库的说明。
使用 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
使用 Helm chart 安装
要使用 Bitnami Helm chart 安装操作器,请运行以下命令
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/rabbitmq-cluster-operator
最后一个命令在 Kubernetes 集群上以默认配置部署 RabbitMQ 集群 Kubernetes 操作器。“参数”部分列出了安装期间可以配置的参数。
操作器的 Helm chart 需要
- Helm chart 3.1.0
- 底层基础设施中的 PV provisioner 支持
使用 Terraform 和 OpenTofu 安装
Terraform 和 OpenTofu 用户需要 覆盖仓库 并将其设置为
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}
的值是集群操作器的版本号。
如果您需要身份验证才能从您的私有镜像仓库拉取镜像,您必须配置 Kubernetes 集群访问私有镜像。
从您要重新定位的版本下载 manifest,并编辑 Deployment image 中的部分。您可以通过 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 拉取镜像。
首先,创建操作器将用于运行和拉取镜像的服务帐户
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
现在通过运行更新操作器服务帐户
kubectl -n rabbitmq-system patch serviceaccount \
rabbitmq-cluster-operator -p '{"imagePullSecrets": [{"name": "rabbitmq-cluster-registry-access"}]}'
请注意,操作器服务帐户的名称是不可配置的,并且必须是 rabbitmq-cluster-operator
。
配置操作器使用私有仓库
您需要修改操作器的配置,以便为新的 RabbitmqCluster 实例默认使用重新定位的镜像。要在操作器部署时设置 DEFAULT_RABBITMQ_IMAGE
、DEFAULT_USER_UPDATER_IMAGE
和 DEFAULT_IMAGE_PULL_SECRETS
的值,请参阅“配置 RabbitMQ 集群操作器的默认值”。