6.4. 通过指定 AMQ Broker 版本升级代理容器镜像
以下流程演示了如何通过指定 AMQ Broker 版本为基于 Operator 的代理部署升级代理容器镜像。例如,如果您将 Operator 升级到 AMQ Broker 7.10.0,但 CR 中的 spec.upgrades.enabled 属性已设为 true,spec.version 属性指定 7.9.0。要升级 代理容器镜像,需要手动指定新的 AMQ Broker 版本(如 7.10.0)。当您指定 AMQ Broker 的新版本时,Operator 会自动选择与此版本对应的代理容器镜像。
先决条件
- 如 第 2.4 节 “Operator 如何选择容器镜像” 所述,如果您部署一个 CR 且没有明确指定代理容器镜像,Operator 会自动选择要使用的适当容器镜像。要使用本节中描述的升级过程,您必须使用此默认行为。如果您在 CR 中直接指定代理容器镜像来覆盖默认行为,Operator 无法自动 升级代理容器镜像以对应 AMQ Broker 版本,如下所述。
流程
编辑代理部署的主要代理 CR 实例。
使用 OpenShift 命令行界面:
以具有权限权限的用户身份登录 OpenShift,以便在项目中为代理部署编辑和部署 CR。
$ oc login -u <user> -p <password> --server=<host:port>-
在文本编辑器中,打开用于代理部署的 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.10.0 ...在 CR 的
spec部分,找到upgrade部分。如果 CR 中还没有包括此部分,请添加它。spec: version: 7.10.0 ... upgrades:确定 upgrade
部分包含enabled和minor属性。spec: version: 7.10.0 ... upgrades: enabled: minor:要根据 AMQ Broker 的指定版本启用代理容器镜像升级,请将
enabled属性的值设置为true。spec: version: 7.10.0 ... upgrades: enabled: true minor:要定义代理的升级行为,请为
minor属性设置值。要允许在 次要 AMQ Broker 版本间升级,将
minor设置为true。spec: version: 7.10.0 ... upgrades: enabled: true minor: true例如,假设当前代理容器镜像与
7.9.0和新镜像对应,对应于为spec.version指定的7.10.0版本。在这种情况下,Operator 决定在7.9.0和7.10.0次版本之间有可用的升级。根据前面的设置,允许在次版本之间进行升级,Operator 会升级代理容器镜像。相反,假设当前代理容器镜像与
7.10.0对应,并且您为spec.version指定 一个新的7.10.1值。如果存在与7.10.1对应的镜像,Operator 会决定7.10.0和7.10.1微版本之间有可用的升级。根据前面的设置,仅允许在次版本之间进行升级,Operator 不会 升级代理容器镜像。要允许在 微 AMQ Broker 版本间进行升级,将
minor的值设为false。spec: version: 7.10.0 ... upgrades: enabled: true minor: false例如,假设当前代理容器镜像与
7.9.0和新镜像对应,对应于为spec.version指定的7.10.0版本。在这种情况下,Operator 决定在7.9.0和7.10.0次版本之间有可用的升级。根据前面的设置,它不允许在次版本间进行升级(即在微版本间进行升级),Operator 不会 升级代理容器镜像。相反,假设当前代理容器镜像与
7.10.0对应,并且您为spec.version指定 一个新的7.10.1值。如果存在与7.10.1对应的镜像,Operator 会决定7.10.0和7.10.1微版本之间有可用的升级。根据前面的设置,允许在微版本间进行升级,Operator 会升级代理容器镜像。
将更改应用到 CR。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到代理部署的项目。
$ oc project <project_name>应用 CR。
$ oc apply -f <path/to/broker_custom_resource_instance>.yaml
使用 OpenShift Web 控制台:
- 编辑完 CR 后,点击 Save。
应用 CR 更改时,Operator 首先会验证是否升级到为
spec.version指定的 AMQ Broker 版本。如果您指定了将要升级到的 AMQ Broker 无效的版本的 AMQ Broker(例如,还没有可用的版本),Operator 会记录警告信息,且不采取进一步操作。但是,如果到指定版本的升级可用,并且为
upgrade.enabled和upgrade.minor指定的值允许升级,那么部署中的 Operator 升级每个代理都使用与新的 AMQ Broker 版本对应的代理容器镜像。Operator 使用的代理容器镜像在 Operator 部署的
operator.yaml配置文件中的环境变量中定义。环境变量名称包括 AMQ Broker 版本的标识符。例如,环境变量RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_7100对应于 AMQ Broker 7.10.7。当 Operator 应用 CR 更改时,它会在部署中重启每个代理 Pod,以便每个 Pod 使用指定的镜像版本。如果您的部署中有多个代理,则只有一个代理 Pod 会关闭并重启。
其他资源
- 要了解 Operator 如何使用环境变量来选择代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。