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