6.4. 使用 CLI 手动升级 Operator
本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)将不同版本 Operator 升级到 AMQ Broker 7.12 可用版本。
6.4.1. 先决条件 复制链接链接已复制到粘贴板!
- 只有在最初使用 CLI 安装 Operator 时,才使用 CLI 升级 Operator。如果您最初使用 OperatorHub 安装 Operator (即,Operator 出现在 OpenShift Container Platform Web 控制台的项目的 下),请使用 OperatorHub 来升级 Operator。要了解如何使用 OperatorHub 升级 Operator,请参阅 第 6.3 节 “使用 OperatorHub 手动升级 Operator”。
6.4.2. 使用 CLI 升级 Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 命令行界面(CLI)将 Operator 升级到 AMQ Broker 7.12 的最新版本。
流程
- 在网页浏览器中,导航到 AMQ Broker 7.12.3 的 Software Downloads 页面。
-
确保 Version 下拉列表的值设置为
7.12.3
,并且选择了 Releases 选项卡。 在 AMQ Broker 7.12.3 Operator 安装和示例文件旁边,单击 Download。
下载
amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip
压缩存档会自动开始。下载完成后,将存档移到您选择的安装目录中。以下示例将存档移到名为
~/broker/operator
的目录中。mkdir ~/broker/operator mv amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip ~/broker/operator
$ mkdir ~/broker/operator $ mv amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip ~/broker/operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您选择的安装目录中,提取存档的内容。例如:
cd ~/broker/operator unzip amq-broker-operator-operator-7.12.3-ocp-install-examples-rhel8.zip
$ cd ~/broker/operator $ unzip amq-broker-operator-operator-7.12.3-ocp-install-examples-rhel8.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 默认名为amq-broker-controller-manager
。如果上一个部署中的 Operator 名称不是amq-broker-controller-manager
,请将amq-broker-controller-manager
的所有实例替换为以前的 Operator 名称。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新的
operator.yaml
文件中,Operator 的服务帐户名为amq-broker-controller-manager
。在以前的版本中,Operator 的服务帐户名为amq-broker-operator
。如果要在以前的部署中使用服务帐户名称,请将 新
operator.yaml
文件中的服务帐户名称替换为之前部署中使用的名称。例如:spec: ... serviceAccountName: amq-broker-operator ...
spec: ... serviceAccountName: amq-broker-operator ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要使用新服务帐户名称
amq-broker-controller-manager
用于 Operator,更新项目中的服务帐户、角色和角色绑定。oc apply -f deploy/service_account.yaml
$ oc apply -f deploy/service_account.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f deploy/role.yaml
$ oc apply -f deploy/role.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f deploy/role_binding.yaml
$ oc apply -f deploy/role_binding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更新 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 注意删除 Operator 不会删除 Operator 管理的代理实例。
使用
--cascade=orphan
选项删除 StatefulSet,以孤立代理 pod。在 StatefulSet 被删除后,孤立的代理 pod 会继续运行。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 是否在
deploymentPlan.labels
属性中配置了名为application
或ActiveMQArtemis
的标签。这些标签供 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
标签。以具有特权的用户身份登录 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 -
打开一个名为
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 - 根据需要,为升级代理中提供的新功能向 CR 添加属性。