2.9. 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 中无法动态更新的示例。