6.2. 使用 CLI 升级 Operator
本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)将 Operator 的不同版本升级到 AMQ Broker 7.11 的最新版本。
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.11 的最新版本。
流程
- 在 Web 浏览器中,导航到 AMQ Broker 7.11.8 的 Software Downloads 页面。
-
确保 Version 下拉列表的值设置为
7.11.8,并且选择了 Releases 选项卡。 在 AMQ Broker 7.11.8 Operator 安装和示例文件旁边,单击 Download。
下载
amq-broker-operator-7.11.8-ocp-install-examples.zip压缩存档会自动开始。下载完成后,将存档移到您选择的安装目录中。以下示例将存档移到名为
~/broker/operator的目录。mkdir ~/broker/operator mv amq-broker-operator-7.11.8-ocp-install-examples.zip ~/broker/operator
$ mkdir ~/broker/operator $ mv amq-broker-operator-7.11.8-ocp-install-examples.zip ~/broker/operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在您选择的安装目录中,提取存档的内容。例如:
cd ~/broker/operator unzip amq-broker-operator-operator-7.11.8-ocp-install-examples.zip
$ cd ~/broker/operator $ unzip amq-broker-operator-operator-7.11.8-ocp-install-examples.zipCopy 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 归档的部署目录中,打开
operator.yaml文件。注意在
operator.yaml文件中,Operator 使用由 安全哈希算法 (SHA)值表示的镜像。注释行(以数字符号(DSL)符号开头),表示 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f deploy/role.yaml
$ oc apply -f deploy/role.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f deploy/role_binding.yaml
$ oc apply -f deploy/role_binding.yamlCopy 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.yamlCopy 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.yamlCopy 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.yamlCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果只从 AMQ Broker Operator 7.10.0 升级,请删除 Operator 和 StatefulSet。
默认情况下,新的 Operator 会删除 StatefulSet 以删除自定义和 Operator metering 标签,该标签被 Operator in 7.10.0 中错误地添加到 StatefulSet 选择器中。当 Operator 删除 StatefulSet 时,它还会删除现有的代理 Pod,这会导致临时代理中断。如果要避免中断,请完成以下步骤来删除 Operator 和 StatefulSet,而不删除代理 Pod。
删除 Operator。
oc delete -f deploy/operator.yaml
$ oc delete -f deploy/operator.yamlCopy 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=orphanCopy 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.yamlCopy 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; doneCopy 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>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果删除了前面的 Operator,请部署新的 Operator。
oc create -f deploy/operator.yaml
$ oc create -f deploy/operator.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
应用更新的 Operator 配置。
oc apply -f deploy/operator.yaml
$ oc apply -f deploy/operator.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新的 Operator 可以识别和管理您之前的代理部署。如果您在 CR 中的
image或version字段中设置了值,Operator 的协调过程会在 Operator 启动时将代理 Pod 升级到对应的镜像。如需更多信息,请参阅 第 6.4 节 “限制代理容器镜像的自动升级”。否则,Operator 会将每个代理 Pod 升级到最新的容器镜像。注意如果协调过程没有启动,您可以通过扩展部署来启动该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”。
- 根据需要,为升级代理中可用的新功能在 CR 中添加属性。