跳到主要内容

在 Kubernetes 集群中安装 RabbitMQ 集群操作器

概述

本指南介绍了在 Kubernetes 集群中安装 RabbitMQ 集群 Kubernetes 操作器 的步骤。

兼容性

操作器需要


安装

要安装操作器,请运行以下命令

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_IMAGEDEFAULT_USER_UPDATER_IMAGEDEFAULT_IMAGE_PULL_SECRETS 的值,请参阅“配置 RabbitMQ 集群操作器的默认值”。

© . All rights reserved.