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在您选择的安装目录中,提取存档的内容。例如:
$ cd ~/broker/operator $ unzip amq-broker-operator-operator-7.10.7-ocp-install-examples.zip以包含现有 Operator 部署的项目的管理员身份登录 OpenShift Container Platform。
$ oc login -u <user>切换到要升级 Operator 版本的 OpenShift 项目。
$ oc project <project-name>在您下载并提取的最新 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 的名称,并保存文件。例如:spec: ... selector matchLabels name: amq-broker-operator ...更新 Operator 中包含的 CRD。在部署 Operator 前,您必须更新 CRD。
更新主代理 CRD。
$ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml更新地址 CRD。
$ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml更新 scaledown 控制器 CRD。
$ oc apply -f deploy/crds/broker_activemqartemisscaledown_crd.yaml更新安全 CRD。
$ oc apply -f deploy/crds/broker_activemqartemissecurity_crd.yaml
如果您只从 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使用
--cascade=orphan选项删除 StatefulSet,以孤立代理 Pod。孤立的代理 Pod 在删除 StatefulSet 后继续运行。$ oc delete statefulset <statefulset-name> --cascade=orphan
如果您要从 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运行以下命令以恢复正确的 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从 CR 中的
deploymentPlan.labels属性中删除application和ActiveMQArtemis标签。以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。
oc login -u <user> -p <password> --server=<host:port>-
打开名为
broker_activemqartemis_cr.yaml的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的deploy/crs目录中。 -
在 CR 的
deploymentPlan.labels属性中,删除名为application或ActiveMQArtemis的任何自定义标签。 - 保存 CR 文件。
部署 CR 实例。
切换到代理部署的项目。
$ oc project <project_name>应用 CR。
$ oc apply -f <path/to/broker_custom_resource_instance>.yaml
如果删除了以前的 Operator,请部署新的 Operator。
$ oc create -f deploy/operator.yaml
应用更新的 Operator 配置。
$ oc apply -f deploy/operator.yaml新的 Operator 可以识别和管理之前的代理部署。如果在部署的 CR 中启用了自动更新,Operator 的协调过程会处理每个代理 pod 的协调过程。如果没有启用自动更新,您可以通过在 CR 中设置以下属性来启用它们:
spec: ... upgrades: enabled: true minor: true有关启用自动更新的详情请参考 第 6.4 节 “通过指定 AMQ Broker 版本升级代理容器镜像”。
注意如果协调过程没有启动,您可以通过扩展部署来开始该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”。
- 根据需要在 CR 中为升级代理可用的新功能添加属性。