6.2. 使用 CLI 升级 Operator
本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)将不同的 Operator 版本升级到可用于 AMQ Broker 7.10 的最新版本。
6.2.1. 先决条件 复制链接链接已复制到粘贴板!
-
只有在您最初使用 CLI 安装 Operator 时,才应使用 CLI 来升级 Operator。如果您最初使用 OperatorHub 安装 Operator(即,Operator 出现在 OpenShift Container Platform Web 控制台中您的项目的
下),您应该使用 OperatorHub 来升级 Operator。要了解如何使用 OperatorHub 升级 Operator,请参阅 第 6.3 节 “使用 OperatorHub 升级 Operator”。
6.2.2. 使用 CLI 升级 Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)将 Operator 升级到 AMQ Broker 7.10 的最新版本。
流程
- 在 Web 浏览器中,导航到 AMQ Broker 7.10.7 补丁的 Software Downloads 页面。
-
确保 Version 下拉列表的值设为
7.10.7
,并且选择了 Releases 选项卡。 在 AMQ Broker 7.10.7 Operator Installation and Example Files 旁边,点 Download。
下载
amq-broker-operator-7.10.7-ocp-install-examples.zip
压缩存档会自动开始。下载完成后,将存档移至您选择的安装目录。以下示例将存档 移到名为
~/broker/operator
的目录。mkdir ~/broker/operator mv amq-broker-operator-7.10.7-ocp-install-examples.zip ~/broker/operator
$ mkdir ~/broker/operator $ mv amq-broker-operator-7.10.7-ocp-install-examples.zip ~/broker/operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您选择的安装目录中,提取存档的内容。例如:
cd ~/broker/operator unzip amq-broker-operator-operator-7.10.7-ocp-install-examples.zip
$ cd ~/broker/operator $ unzip amq-broker-operator-operator-7.10.7-ocp-install-examples.zip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以包含现有 Operator 部署的项目的管理员身份登录 OpenShift Container Platform。
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 在您下载并提取的最新 Operator 归档的
deploy
目录中,打开operator.yaml
文件。注意在
operator.yaml
文件中,Operator 使用一个由 Secure Hash Algorithm (SHA) 值代表的镜像。注释行以数字符号 (#
) 符号开头,注明 SHA 值对应于特定的容器镜像标签。-
为 以前的 Operator 部署打开
operator.yaml
文件。检查您在之前配置中指定的任何非默认值是否在 新的operator.yaml
配置文件中复制。 在新的
operator.yaml
文件中,Operator 默认命名为controller-manager
。将controller-manager
的所有实例替换为amq-broker-operator
,这是之前版本中 Operator 的名称,并保存文件。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 Operator 中包含的 CRD。在部署 Operator 前,您必须更新 CRD。
更新主代理 CRD。
oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
$ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新地址 CRD。
oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
$ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 scaledown 控制器 CRD。
oc apply -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
$ oc apply -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新安全 CRD。
oc apply -f deploy/crds/broker_activemqartemissecurity_crd.yaml
$ oc apply -f deploy/crds/broker_activemqartemissecurity_crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您只从 AMQ Broker Operator 7.10.0 升级,请删除 Operator 和 StatefulSet。
默认情况下,新 Operator 删除 StatefulSet 以删除自定义和 Operator metering 标签,这些标签被 7.10.0 中的 Operator 错误地添加到 StatefulSet 选择器。当 Operator 删除 StatefulSet 时,它还会删除现有的代理 Pod,这会导致临时代理中断。如果要避免中断,请完成以下步骤以删除 Operator 和 StatefulSet 而不删除代理 Pod。
删除 Operator。
oc delete -f deploy/operator.yaml
$ oc delete -f deploy/operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--cascade=orphan
选项删除 StatefulSet,以孤立代理 Pod。孤立的代理 Pod 在删除 StatefulSet 后继续运行。oc delete statefulset <statefulset-name> --cascade=orphan
$ oc delete statefulset <statefulset-name> --cascade=orphan
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您要从 AMQ Broker Operator 7.10.0 或 7.10.1 升级,请检查您的主代理 CR 是否有名为
application
或ActiveMQArtemis
的标签,在deploymentPlan.labels
属性中配置。这些标签为 Operator 保留,以分配标签到 Pod,且不允许在 7.10.1 后作为自定义标签。如果在主代理 CR 中配置了这些自定义标签,则 Pod 上的 Operator 分配标签会被自定义标签覆盖。如果在主代理 CR 中配置了任何自定义标签,请完成以下步骤以在 Pod 上恢复正确的标签并从 CR 中删除标签。
如果您要从 7.10.0 升级,请删除上一步中的 Operator。如果要从 7.10.1 升级,请删除 Operator。
oc delete -f deploy/operator.yaml
$ oc delete -f deploy/operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令以恢复正确的 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; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CR 中的
deploymentPlan.labels
属性中删除application
和ActiveMQArtemis
标签。以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。
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 -
打开名为
broker_activemqartemis_cr.yaml
的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的deploy/crs
目录中。 -
在 CR 的
deploymentPlan.labels
属性中,删除名为application
或ActiveMQArtemis
的任何自定义标签。 - 保存 CR 文件。
部署 CR 实例。
切换到代理部署的项目。
oc project <project_name>
$ oc project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 CR。
oc apply -f <path/to/broker_custom_resource_instance>.yaml
$ oc apply -f <path/to/broker_custom_resource_instance>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果删除了以前的 Operator,请部署新的 Operator。
oc create -f deploy/operator.yaml
$ oc create -f deploy/operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
应用更新的 Operator 配置。
oc apply -f deploy/operator.yaml
$ oc apply -f deploy/operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新的 Operator 可以识别和管理之前的代理部署。如果在部署的 CR 中启用了自动更新,Operator 的协调过程会处理每个代理 pod 的协调过程。如果没有启用自动更新,您可以通过在 CR 中设置以下属性来启用它们:
spec: ... upgrades: enabled: true minor: true
spec: ... upgrades: enabled: true minor: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关启用自动更新的详情请参考 第 6.4 节 “通过指定 AMQ Broker 版本升级代理容器镜像”。
注意如果协调过程没有启动,您可以通过扩展部署来开始该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”。
- 根据需要在 CR 中为升级代理可用的新功能添加属性。