6.4. 通过指定 AMQ Broker 版本来升级代理容器镜像
以下流程演示了如何通过指定 AMQ Broker 版本来为基于 Operator 的代理部署升级代理容器镜像。例如,您可以将 Operator 升级到 AMQ Broker 7.9.3 的最新版本,但 CR 中的 spec.upgrades.enabled
属性已被设为 true
,spec.version
属性指定 7.8.0
。要升级 代理容器镜像,您需要手动指定一个新的 AMQ Broker 版本(如 7.9.
3)。当您指定新版本的 AMQ Broker 时,Operator 会自动选择与此版本对应的代理容器镜像。
先决条件
您必须对 7.9.3 使用最新版本的 Operator。要了解如何将 Operator 升级到最新版本,请参阅:
- 如 第 2.4 节 “Operator 如何选择容器镜像” 所述,如果您部署 CR 且没有明确指定代理容器镜像,Operator 会自动选择要使用的相应容器镜像。要使用本节中描述的升级过程,您必须使用 这个默认行为。如果您通过直接在 CR 中指定代理容器镜像来覆盖默认行为,Operator 无法 自动升级代理容器镜像以对应 AMQ Broker 版本,如下所述。
流程
编辑代理部署的主代理 CR 实例。
使用 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 文件。例如,这可能是之前下载并提取的 Operator 安装存档
deploy/
文件。crs
目录中中包含的 broker_activemqartemis_cr.yaml
使用 OpenShift Container Platform Web 控制台:
- 以具有权限的用户身份登录到控制台,以便在用于代理部署的项目中编辑和部署 CR。
-
在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
- 查找与项目命名空间对应的 CR 实例。
对于 CR 实例,点击右侧的 More Options 图标(三个垂直点)。选择 Edit ActiveMQArtemis。
在控制台中,会打开 YAML 编辑器,供您编辑 CR 实例。
要指定要将代理容器镜像升级到的 AMQ Broker 版本,请为 CR 的
spec.version
属性设置值。例如:spec: version: 7.9.3 ...
spec: version: 7.9.3 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 CR 的
spec
部分,找到upgrade
部分。如果此部分尚未包含在 CR 中,请添加它。spec: version: 7.9.3 ... upgrades:
spec: version: 7.9.3 ... upgrades:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 upgrade
部分
包含enabled
和副
属性。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要根据 AMQ Broker 的指定版本启用代理容器镜像升级,请将
enabled
属性的值设置为true
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要定义代理的升级行为,请为
次
属性设置一个值。要允许在 次 AMQ Broker 版本间升级,请将
minor
值设为true
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,假设当前代理容器镜像对应于
7.8.0
,并且有与为spec.version
指定的7.9.0
版本对应的新镜像。在本例中,Operator 确定在7.8
和7.9
次版本间有可用的升级。根据上述设置(允许在次版本间升级),Operator 升级代理容器镜像。相反,假设当前代理容器镜像与
7.9.0
对应,并且为spec.version
指定 了一个新 值7.9.1
。如果存在与7.9.1
对应的镜像,Operator 会确定在7.9.0 和 7.
9.1
微版本间有可用的升级。根据以上设置,仅允许在次版本间升级,Operator 不会 升级代理容器镜像。要允许在 微 AMQ Broker 版本间升级,请将
minor
值设为false
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,假设当前代理容器镜像对应于
7.8.0
,并且有与为spec.version
指定的7.9.0
版本对应的新镜像。在本例中,Operator 确定在7.8
和7.9
次版本间有可用的升级。根据前面的设置,这些设置不允许在次版本间升级(即仅在微版本间升级),Operator 不会升级 代理容器镜像。相反,假设当前代理容器镜像与
7.9.0
对应,并且为spec.version
指定 了一个新 值7.9.1
。如果存在与7.9.1
对应的镜像,Operator 会确定在7.9.0 和 7.
9.1
微版本间有可用的升级。根据上述设置(允许在微版本间升级),Operator 升级代理容器镜像。
将更改应用到 CR。
使用 OpenShift 命令行界面:
- 保存 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
使用 OpenShift Web 控制台:
- 编辑完 CR 后,点击 Save。
应用 CR 更改时,Operator 首先验证现有部署是否提供了对
spec.version
指定的 AMQ Broker 版本升级。如果您已指定要升级到的 AMQ Broker 的无效版本(例如,尚未可用的版本),Operator 会记录警告信息,并且不再执行进一步操作。但是,如果升级到指定版本 , 且为 upgrade
.enabled
和 upgrade.minor
指定的值允许升级,则 Operator 升级部署中的每个代理以使用与新的 AMQ Broker 版本对应的代理容器镜像。Operator 使用的代理容器镜像在 Operator 部署的
operator.yaml 配置文件中的
环境变量中定义。环境变量名称包含 AMQ Broker 版本的标识符。例如,环境变量RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_791
对应于 AMQ Broker 7.9.1。当 Operator 应用了 CR 更改时,它会重启部署中的每个代理 Pod,以便每个 Pod 使用指定的镜像版本。如果您在部署中有多个代理,一次只能有一个代理 Pod 关闭并重启。
其它资源
- 要了解 Operator 如何使用环境变量选择代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。