在 OpenShift 上使用 RabbitMQ Kubernetes 运算符
概述
本文档详细介绍了在部署 RabbitMQ Kubernetes 运算符(即 集群运算符 和 消息拓扑运算符)时,OpenShift 特定的注意事项。需要注意的是,这些注意事项也适用于商业版 VMware Tanzu RabbitMQ Standby Replication 运算符(注意,此运算符仅限于 VMware Tanzu RabbitMQ for Kubernetes 商业版)。
在大多数情况下,在 OpenShift 上使用这些运算符的用户体验是相同的;以下指南详细介绍了利用 OpenShift 安全实践所需的其他工作,以及运算符在 OpenShift 上的工作原理。
安装运算符的 RBAC 权限
为了安装运算符,您需要以具有以下资源的 CRUD 权限的用户身份对 OpenShift 集群进行身份验证
- 命名空间
- 自定义资源定义
- 部署
- 服务帐户
- 角色
- 集群角色
- 角色绑定
- 集群角色绑定
- 服务
- 验证 Webhook 配置
然后,您可以使用此用户按正常方式运行 安装说明。
支持任意用户 ID
OpenShift 在运行 Pod 时使用任意分配的用户 ID。每个 OpenShift 项目都分配了一系列可能的 UID,并且默认情况下,如果 Pod 以该范围之外的用户身份启动,则会失败。有关更多信息,请参阅 OpenShift 文档。
在 OpenShift 上部署运算符时,用于运行运算符二进制文件的 Pod 将以 OpenShift 分配的范围内的一个任意 UID 运行。这是默认行为,无需修改运算符清单即可实现。
在部署 RabbitmqClusters 时,需要进行一些额外的工作才能利用相同的安全功能。默认情况下,RabbitMQ 集群运算符会使用固定的非 root UID 部署 RabbitmqCluster Pod。要在 OpenShift 上部署,必须覆盖这些 Pod 的安全上下文。这必须对在 override
字段下部署的每个 RabbitmqCluster 进行。
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
...
spec:
...
override:
statefulSet:
spec:
template:
spec:
containers: []
securityContext: {}
这将重置 Pod 的 securityContext 为默认值,并确保 RabbitMQ Pod 也在 OpenShift 中分配了任意用户 ID。