6.3. 使用 OperatorHub 手动升级 Operator
只有在最初使用 OperatorHub 安装 Operator (即,Operator 出现在 OpenShift Container Platform Web 控制台的项目的 下)时,使用 OperatorHub 升级 Operator。如果您最初使用 OpenShift 命令行界面(CLI)安装 Operator,请使用 CLI 升级 Operator。要了解如何使用 CLI 升级 Operator,请参阅 第 6.4 节 “使用 CLI 手动升级 Operator”。
如果您要从 7.10.0 或 7.10.1 升级,请参阅描述如何完成 Operator 版本升级的特定部分。
6.3.1. 开始前 复制链接链接已复制到粘贴板!
本节论述了在使用 OperatorHub 升级 AMQ Broker Operator 实例前的一些重要注意事项。
- 当您从 OperatorHub 安装最新的 Operator 版本时,Operator Lifecycle Manager 会自动更新 OpenShift 集群中的 CRD。您不得删除现有 CRD。如果您删除现有 CRD,则所有 CR 和代理实例也会被删除。
- 当使用最新 Operator 版本的 CRD 更新集群时,这个更新会影响 集群中的所有项目。从 Operator 之前的版本部署的任何代理 pod 可能无法在 OpenShift Container Platform Web 控制台中更新其状态。当您点正在运行的代理 pod 的 Logs 选项卡时,您会看到指示 'UpdatepodStatus' 失败的消息。但是,该项目中的代理 pod 和 Operator 将继续按预期工作。要为受影响的项目修复此问题,还必须升级该项目以使用最新版本的 Operator。
如果您要从 7.10.0 或 7.10.1 升级,请参阅描述如何完成 Operator 版本升级的特定部分。升级这些版本需要额外的步骤来防止 Operator 升级在部署中重启代理 pod。
6.3.2. 升级 Operator 复制链接链接已复制到粘贴板!
您必须卸载当前的 Operator 并安装新的 Operator 来完成升级。
流程
- 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
- 从项目中卸载现有的 AMQ Broker Operator。
- 在左侧导航菜单中,点 。
- 在页面顶部的 Project 下拉菜单中选择您要卸载 Operator 的项目。
- 找到您要卸载的 Red Hat Integration - AMQ Broker 实例。
对于 Operator 实例,点右侧的 More Options 图标(三个垂直点)。点击 Uninstall Operator。
警告确保未选中 Delete all operand instance for this operator 复选框。如果选择了此复选框,则在卸载 Operator 时,由 Operator 管理的代理实例会被删除。
- 在确认对话框中,点 Uninstall。
- 使用 OperatorHub 为 AMQ Broker 7.12 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”。
- 在左侧导航菜单中,点 。
- 验证安装的 Red Hat Integration - AMQ Broker 实例下显示了正确的版本号。
6.3.3. 从 7.10.0 升级 Operator 复制链接链接已复制到粘贴板!
您必须卸载 7.10.0 Operator 并安装新的 Operator 来完成升级。此流程包括防止新 Operator 在部署中重启代理 pod 的额外步骤,这会导致停机。
流程
- 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
从项目中卸载现有的 AMQ Broker Operator。
- 在左侧导航菜单中,点 。
- 在页面顶部的 Project 下拉菜单中选择您要卸载 Operator 的项目。
- 找到您要卸载的 Red Hat Integration - AMQ Broker 实例。
- 对于 Operator 实例,点右侧的 More Options 图标(三个垂直点)。点击 Uninstall Operator。
- 在确认对话框中,点 Uninstall。
当您升级 7.10.0 Operator 时,新 Operator 会删除 StatefulSet 以删除自定义和 Operator metering 标签,这些标签被 Operator 在 7.10.0 中错误地添加到 StatefulSet 选择器中。当 Operator 删除 StatefulSet 时,它还会删除现有代理 pod,这会导致临时代理中断。如果要避免中断,请完成以下步骤删除 StatefulSet 和孤立代理 pod,以便它们继续运行。
作为包含现有 Operator 部署的项目的管理员登录到 OpenShift Container Platform CLI:
oc login -u <user>
$ oc login -u <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到要升级 Operator 版本的 OpenShift 项目。
oc project <project-name>
$ oc project <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--cascade=orphan选项删除 StatefulSet,以孤立代理 pod。在 StatefulSet 被删除后,孤立的代理 pod 会继续运行。oc delete statefulset <statefulset-name> --cascade=orphan
$ oc delete statefulset <statefulset-name> --cascade=orphanCopy to Clipboard Copied! Toggle word wrap Toggle overflow
检查您的主代理 CR 是否在
deploymentPlan.labels属性中配置名为application或ActiveMQArtemis的标签。在 7.10.0 中,可以在 CR 中配置这些自定义标签。这些标签是为 Operator 分配标签分配给 pod 的保留,在 7.10.0 后无法添加为自定义标签。如果在 7.10.0 中的主代理 CR 中配置了这些自定义标签,则 pod 上的 Operator 分配标签会被自定义标签覆盖。如果 CR 具有这些标签,请完成以下步骤来恢复 pod 上的正确标签,并从 CR 中删除标签。
在 OpenShift 命令行界面(CLI)中,运行以下命令来恢复正确的 pod 标签。在以下示例中,'ex-aao' 是部署的 StatefulSet 的名称。
for pod in $(oc get pods | grep -o '^ex-aao[^ ]*'); do oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; done
$ for pod in $(oc get pods | grep -o '^ex-aao[^ ]*'); do oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CR 中的
deploymentPlan.labels属性中删除application和ActiveMQArtemis标签。使用 OpenShift 命令行界面:
以具有特权的用户身份登录 OpenShift,以便在代理部署的项目中部署 CR。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑部署的 CR。
oc edit ActiveMQArtemis <statefulset name> -n <namespace>
oc edit ActiveMQArtemis <statefulset name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 CR 中的
deploymentPlan.labels元素中,删除名为application或ActiveMQArtemis的任何自定义标签。 - 保存 CR。
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
- 点代理部署的实例。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
-
在 CR 中的
deploymentPlan.labels元素中,删除名为application或ActiveMQArtemis的任何自定义标签。 - 点击 Save。
使用 OperatorHub 为 AMQ Broker 7.12 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”。
新的 Operator 可以识别和管理之前代理部署。如果您在 CR 中的
image或version字段中设置了值,Operator 的协调过程会在 Operator 启动时将代理 pod 升级到对应的镜像。如需更多信息,请参阅 第 6.6 节 “限制代理容器镜像的自动升级”。否则,Operator 会将每个代理 pod 升级到最新的容器镜像。注意如果协调过程没有启动,您可以通过扩展部署来启动该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”。
- 根据需要,为升级代理中提供的新功能向 CR 添加属性。
6.3.4. 从 7.10.1 升级 Operator 复制链接链接已复制到粘贴板!
您必须卸载 7.10.1 Operator,并安装新的 Operator 来完成升级。此流程包括您可能需要完成的额外步骤,具体取决于您的配置,以防止新的 Operator 重启代理 pod,从而导致停机。
流程
- 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
检查您的主代理 CR 是否在
deploymentPlan.labels属性中配置名为application或ActiveMQArtemis的标签。这些标签为 Operator 保留,用于将标签分配给 pod,且在 7.10.1 后无法使用。如果在主代理 CR 中配置了这些自定义标签,则 pod 上的 Operator 分配标签会被自定义标签覆盖。
- 如果在主代理 CR 中没有配置这些自定义标签,请使用 OperatorHub 为 AMQ Broker 7.12 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”。
如果在主代理 CR 中配置了这些自定义标签,请按照以下步骤卸载现有 Operator,在安装新 Operator 前恢复正确的 pod 标签并从 CR 中删除标签。
注意通过卸载 Operator,您可以在没有 Operator 删除 StatefulSet 的情况下删除自定义标签,这也会删除现有代理 pod 并导致临时代理中断。
从项目中卸载现有的 AMQ Broker Operator。
- 在左侧导航菜单中,点 。
- 在页面顶部的 Project 下拉菜单中选择您要卸载 Operator 的项目。
- 找到您要卸载的 Red Hat Integration - AMQ Broker 实例。
- 对于 Operator 实例,点右侧的 More Options 图标(三个垂直点)。点击 Uninstall Operator。
- 在确认对话框中,点 Uninstall。
在 OpenShift 命令行界面(CLI)中,运行以下命令来恢复正确的 pod 标签。在以下示例中,'ex-aao' 是部署的 StatefulSet 的名称。
for pod in $(oc get pods | grep -o '^ex-aao[^ ]*'); do oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; done
$ for pod in $(oc get pods | grep -o '^ex-aao[^ ]*'); do oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CR 中的
deploymentPlan.labels属性中删除application和ActiveMQArtemis标签。使用 OpenShift 命令行界面:
以具有特权的用户身份登录 OpenShift,以便在代理部署的项目中部署 CR。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑部署的 CR。
oc edit ActiveMQArtemis <statefulset name> -n <namespace>
oc edit ActiveMQArtemis <statefulset name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 CR 中的
deploymentPlan.labels属性中,删除名为application或ActiveMQArtemis的任何自定义标签。 - 保存 CR 文件。
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
- 点代理部署的实例。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
-
在 CR 中的
deploymentPlan.labels属性中,删除名为application或ActiveMQArtemis的任何自定义标签。 - 点击 Save。
使用 OperatorHub 为 AMQ Broker 7.12 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”。
新的 Operator 可以识别和管理之前代理部署。如果您在 CR 中的
image或version字段中设置了值,Operator 的协调过程会在 Operator 启动时将代理 pod 升级到对应的镜像。如需更多信息,请参阅 第 6.6 节 “限制代理容器镜像的自动升级”。否则,Operator 会将每个代理 pod 升级到最新的容器镜像。注意如果协调过程没有启动,您可以通过扩展部署来启动该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”。
- 根据需要,为升级代理中提供的新功能向 CR 添加属性。