跳至主内容

在 Kubernetes 集群中安装 RabbitMQ Cluster Operator

概述

本指南介绍了如何在 Kubernetes 集群中安装 RabbitMQ Cluster Kubernetes Operator

兼容性

该 Operator 要求:


安装

要安装该 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 自定义资源 (Custom Resource) 部署 RabbitMQ。

如果您想安装特定版本的 Operator,则需要从 Operator 发布页面 获取清单链接。请注意,0.46.0 之前的版本没有此清单。我们强烈建议安装 0.46.0 及以上版本。

如果您想将 Operator 镜像迁移到自定义位置,请参阅 迁移镜像 (Relocate the Image) 部分,其中提供了将 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 用户需要 覆盖仓库 (override the repository) 并将其设置为

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 用于运行和拉取镜像的服务账号 (Service Account)

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_IMAGEDEFAULT_USER_UPDATER_IMAGEDEFAULT_IMAGE_PULL_SECRETS 的值,请参阅 配置 RabbitMQ Cluster Operator 的默认值

© . This site is unofficial and not affiliated with VMware.