跳至主内容

在 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 自定义资源部署 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_IMAGEDEFAULT_USER_UPDATER_IMAGEDEFAULT_IMAGE_PULL_SECRETS 的值,请参阅 配置 RabbitMQ Cluster Operator 的默认值

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