在 Openshift 上使用 RabbitMQ Kubernetes 运算符
概述
本文档详细介绍了在部署 RabbitMQ Kubernetes 运算符(即 集群运算符 和 消息拓扑运算符)时,Openshift 特有的注意事项。 请务必注意,这些注意事项也适用于商业 VMware Tanzu RabbitMQ 备用复制运算符(请注意,此运算符仅 VMware Tanzu RabbitMQ for Kubernetes 商业产品独有)。
在 Openshift 上使用这些运算符时,用户体验在很大程度上是相同的;以下指南详细介绍了利用 Openshift 安全实践所需的额外工作,以及运算符如何在 Openshift 上工作的详细信息。
安装运算符的 RBAC 权限
为了安装运算符,您需要使用在以下资源上具有 CRUD 权限的用户通过 Openshift 集群进行身份验证
- 命名空间
- CustomResourceDefinition
- 部署
- ServiceAccount
- 角色
- ClusterRole
- RoleBinding
- ClusterRoleBinding
- 服务
- ValidatingWebhookConfiguration
然后,您可以使用此用户正常运行 安装说明。
支持任意用户 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。