2.7. Operator 部署备注
本节介绍了规划基于 Operator 的部署时的一些重要注意事项
- 部署 AMQ Broker Operator 附带的自定义资源定义(CRD)需要 OpenShift 集群的集群管理员权限。部署 Operator 时,非管理员用户可以通过对应的自定义资源(CR)创建代理实例。要启用常规用户来部署 CR,集群管理员必须首先为 CRD 分配角色和权限。如需更多信息,请参阅 OpenShift Container Platform 文档中的 为自定义资源定义创建集群角色。
- 当使用最新 Operator 版本的 CRD 更新集群时,这个更新会影响 集群中的所有项目。从 Operator 之前版本部署的任何代理 Pod 都可能无法更新其状态。当您在 OpenShift Container Platform Web 控制台中点正在运行的代理 Pod 的 Logs 选项卡时,您会看到显示 'UpdatePodStatus' 失败的消息。但是,该项目中的代理 Pod 和 Operator 会继续按预期工作。要为受影响的项目修复这个问题,还必须升级该项目以使用最新版本的 Operator。
虽然您可以通过部署多个自定义资源(CR)实例在给定 OpenShift 项目中创建多个代理部署,但通常在项目中创建单个代理部署,然后为地址部署多个 CR 实例。
红帽建议在单独的项目中创建代理部署。
如果要使用持久性存储部署代理,且 OpenShift 集群中没有容器原生虚拟化存储,则需要手动置备持久性卷(PV),并确保这些代理可供 Operator 声明。例如,如果要创建两个带有持久性存储的代理集群(即,通过在 CR 中设置
persistenceEnabled=true
),则需要有两个持久性卷可用。默认情况下,每个代理实例都需要存储 2 GiB。如果在 CR 中指定
persistenceEnabled=false
,部署的代理 将使用临时存储。临时存储意味着每次重启代理 Pod 时,任何现有数据都会丢失。有关在 OpenShift Container Platform 中置备持久性存储的更多信息,请参阅:
您必须在首次部署 CR 前,将以下列出的项目的配置添加到主代理 CR 实例中。您不能将 这些项目的配置添加到已在运行的代理部署中。
-
如果更新 CR 中的参数,Operator 无法在 StatefulSet 中动态更新,Operator 会删除 StatefulSet,并使用更新的参数值重新创建它。删除 StatefulSet 会导致所有 pod 被删除并重新创建,从而导致临时代理中断。例如,如果将
persistenceEnabled=false
改为persistenceEnabled=true
,Operator 无法在 StatefulSet 中动态更新。