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! -
在文本编辑器中,打开用于代理部署的 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! 在 CR 的
spec
部分,找到upgrade
部分。如果这个部分还没有包含在 CR 中,请添加它。spec: version: 7.8.5 ... upgrades:
spec: version: 7.8.5 ... upgrades:
Copy to Clipboard Copied! 确保 upgrade
部分包含
enabled
和minor
属性。spec: version: 7.8.5 ... upgrades: enabled: minor:
spec: version: 7.8.5 ... upgrades: enabled: minor:
Copy to Clipboard Copied! 要启用基于指定版本的 AMQ Broker 的代理容器镜像升级,请将
enabled
属性的值设置为true
。spec: version: 7.8.5 ... upgrades: enabled: true minor:
spec: version: 7.8.5 ... upgrades: enabled: true minor:
Copy to Clipboard Copied! 要定义代理的升级行为,请为
minor
属性设置一个值。要允许在 次要 AMQ Broker 版本间升级,请将
minor
的值设置为true
。spec: version: 7.8.5 ... upgrades: enabled: true minor: true
spec: version: 7.8.5 ... upgrades: enabled: true minor: true
Copy to Clipboard Copied! 例如,假设当前代理容器镜像对应于
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
。spec: version: 7.8.5 ... upgrades: enabled: true minor: false
spec: version: 7.8.5 ... upgrades: enabled: true minor: false
Copy to Clipboard Copied! 例如,假设当前代理容器镜像对应于
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! 应用 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!
使用 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 如何选择容器镜像”。