在 Kubernetes 集群中安装 RabbitMQ 集群操作符
概述
本指南介绍了如何在 Kubernetes 集群中安装 RabbitMQ 集群 Kubernetes 操作符。
兼容性
操作符需要
- Kubernetes 1.19 或更高版本(推荐使用 1.25 或更高版本,特别是对于使用 RabbitMQ 流 的环境)
- 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 的说明。
如果您想安装特定版本的操作符,则需要从 操作符版本 获取清单链接。请注意,0.46.0 之前的版本没有此清单。我们强烈建议安装 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 图表安装
要使用 Bitnami Helm 图表 安装操作符,请运行以下命令
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/rabbitmq-cluster-operator
最后一个命令在 Kubernetes 集群中以默认配置部署 RabbitMQ 集群 Kubernetes 操作符。 参数 部分列出了安装期间可以配置的参数。
操作符的 Helm 图表需要
- Helm 图表 3.1.0
- 基础设施中的 PV 配置程序支持
(可选) 重新定位镜像
如果您不能直接从 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 集群访问私有镜像。
下载清单 来自您要重新定位的版本并编辑部署镜像部分。您可以通过 grep
'ing 字符串 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 实例使用重新定位的镜像。T 设置操作符部署时的 DEFAULT_RABBITMQ_IMAGE
、DEFAULT_USER_UPDATER_IMAGE
和 DEFAULT_IMAGE_PULL_SECRETS
的值,请参阅 为 RabbitMQ 集群操作符配置默认值。