在 OpenShift 上使用 RabbitMQ Kubernetes Operator
概述
本文档详细介绍了在部署 RabbitMQ Kubernetes Operator(即 Cluster operator 和 Messaging Topology Operator)时 OpenShift 特有的注意事项。需要注意的是,这些注意事项同样适用于商业版的 VMware Tanzu RabbitMQ Standby Replication Operator(请注意,此运算符仅适用于 VMware Tanzu RabbitMQ for Kubernetes 商业产品)。
在 OpenShift 上使用这些运算符时,用户体验在大多数情况下是相同的;以下指南详细介绍了利用 OpenShift 安全实践所需的额外工作,以及运算符在 OpenShift 上如何工作的详细信息。
安装运算符的 RBAC 权限
为了安装这些运算符,您需要以具有以下资源 CRUD 权限的用户身份通过 OpenShift 集群进行身份验证。
- Namespace
- CustomResourceDefinition
- Deployment
- ServiceAccount
- Role
- ClusterRole
- RoleBinding
- ClusterRoleBinding
- Service
- ValidatingWebhookConfiguration
然后,您可以使用该用户正常运行 安装说明。
对任意用户 ID 的支持
OpenShift 在运行 Pod 时使用任意分配的用户 ID。每个 OpenShift 项目都会分配一个可能的 UID 范围,默认情况下,如果 Pod 以超出该范围的用户身份启动,则会失败。有关更多信息,请参阅 OpenShift 文档。
在 OpenShift 上部署运算符时,用于运行运算符二进制文件的 Pod 将在 OpenShift 分配的 UID 范围内以任意 UID 运行。这会默认发生,不需要修改运算符清单即可实现。
在部署 RabbitmqClusters 时,需要进行一些额外的工作来利用相同的安全功能。默认情况下,RabbitMQ Cluster Operator 会以固定的非 root UID 部署 RabbitmqCluster Pod。要在 OpenShift 上部署,必须覆盖这些 Pod 的 Security Context。这必须为在 `override` 字段下部署的每个 RabbitmqCluster 进行。
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
...
spec:
...
override:
statefulSet:
spec:
template:
spec:
containers: []
securityContext: {}
这会将 Pod 的 securityContext 重置为默认值,并确保 RabbitMQ Pod 在 OpenShift 中也分配了任意用户 ID。