6.6. 限制代理容器镜像的自动升级
默认情况下,Operator 会自动将管理的每个代理升级到 Operator 版本支持的最新可用容器镜像。在部署的自定义资源(CR)中,您可以通过指定版本号或特定容器镜像的 URL 来限制 Operator 升级功能。
6.6.1. 使用版本号限制镜像的自动升级 复制链接链接已复制到粘贴板!
您可以在新版本可用时,限制代理自动升级的容器镜像版本。
当您根据版本号限制升级时,Operator 继续自动升级代理以使用包含部署的安全修复的任何新镜像。
流程
编辑代理部署的主代理 CR 实例。
使用 OpenShift 命令行界面:
以具有为代理部署的项目中编辑和部署 CR 的用户身份登录 OpenShift。
$ oc login -u <user> -p <password> --server=<host:port>编辑 CR。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,点
。 - 点 Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
- 点 AMQ Broker 选项卡。
- 单击 ActiveMQArtemis 实例名称的名称。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您编辑 CR 实例。
注意在 CR 的
status部分中,.status.version.brokerVersion字段显示当前部署的 AMQ Broker 版本。
在
spec.version属性中,指定 Operator 可以在部署中升级代理和 init 容器镜像的版本。以下是您可以指定的值示例。- 例子
在以下示例中,Operator 将部署中的当前容器镜像升级到 7.12.0。
spec: version: '7.12.0' ...在以下示例中,Operator 将部署中的当前容器镜像升级到最新可用的 7.11.x 镜像。例如,如果您的部署使用 7.11.1 容器镜像,Operator 会自动将镜像升级到 7.11.6,但不升级到 7.12.3。
spec: version: '7.11' ...在以下示例中,Operator 将部署中的当前容器镜像升级到最新的 7.x.x 镜像。例如,如果您的部署使用 7.11.6 镜像,Operator 会自动将镜像升级到 7.12.3。
spec: version: '7' ...注意要在容器镜像的次版本间(例如从 7.11.x 升级到 7.12.x),您需要一个与新容器镜像相同的次版本的 Operator。例如,要从 7.11.6 升级到 7.12.3,必须安装 7.12.x Operator。
- 保存 CR。
如果您使用 CR 中的 spec.version 属性来限制代理容器镜像的自动升级,请确保 CR 不包含 spec.deploymentPlan.image 或 spec.deploymentPlan.initImage 属性。这两个属性都覆盖 spec.version 属性。如果 CR 具有这些属性之一以及 spec.version 属性,则部署的代理和 init 镜像版本可能会被分离,这可能会阻止代理运行。
保存 CR 时,Operator 首先验证为 spec.version 指定的 AMQ Broker 版本是否可用于现有部署。如果您指定了要升级到的 AMQ Broker 的无效版本,例如:一个不可用的版本,Operator 会记录警告信息,且不会执行进一步的操作。
但是,如果对指定版本的升级可用,Operator 会 升级部署中的每个代理,以使用与新的 AMQ Broker 版本对应的代理容器镜像。
Operator 使用的代理容器镜像在 Operator 部署的 operator.yaml 配置文件中的环境变量中定义。环境变量名称包含 AMQ Broker 版本的标识符。例如,环境变量 RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_7123 对应于 AMQ Broker 7.12.3。
当 Operator 应用 CR 更改时,它会重启部署中的每个代理 pod,以便每个 pod 使用指定的镜像版本。如果部署中有多个代理,则只有一个代理 pod 会一次关闭并重启。
其他资源
- 要了解 Operator 如何使用环境变量来选择代理容器镜像,请参阅 第 2.7 节 “Operator 如何选择容器镜像”。
- 要查看部署的状态,请参阅 第 2.8 节 “在自定义资源(CR)中验证镜像和版本配置”
6.6.2. 使用镜像 URL 限制镜像自动升级 复制链接链接已复制到粘贴板!
如果要升级部署中的代理以使用特定的容器镜像,您可以在 CR 中指定镜像的 registry URL。在 Operator 将代理升级到指定的容器镜像后,在替换 CR 中的镜像 URL 前,不会进一步升级。例如,Operator 不会自动升级代理以使用包含部署的镜像的安全修复的较新的镜像。
如果要使用镜像 URL 限制自动升级,请为 CR 中的 spec.deploymentPlan.image 和 spec.deploymentPlan.initImage 属性指定 URL,以确保代理和 init 容器镜像匹配。如果您只指定了一个容器镜像的 URL,则代理和 init 容器镜像可以分离,这可能会阻止代理运行。
如果 CR 在 spec.deploymentPlan.image 和 spec.deploymentPlan.initImage 属性之外有一个 spec.version 属性,Operator 会忽略 spec.version 属性。
流程
获取 Operator 可以升级当前镜像的代理和 init 容器镜像的 URL。
- 在 Red Hat Catalog 中,打开代理容器组件页面: 适用于 RHEL 8 的 AMQ Broker (Multiarch)。
- 在 Architecture 下拉菜单中,选择您的架构。
- 在 Tag 下拉菜单中,选择与您要安装的镜像对应的标签。标签根据发行日期按时间顺序显示。标签由发行版本和分配的标签组成。
- 打开 Get this image 选项卡。
- 在 Manifest 字段中,单击 Copy 图标。
- 将 URL 粘贴到文本文件中。
- 在 Red Hat Catalog 中,打开 init 容器组件页面: 适用于 RHEL 8 的 AMQ Broker Init (多架构)
- 要获取 init 容器镜像的 URL,请重复上述步骤,以获取代理容器镜像的 URL。
编辑代理部署的主代理 CR 实例。
使用 OpenShift 命令行界面:
以具有为代理部署的项目中编辑和部署 CR 的用户身份登录 OpenShift。
$ oc login -u <user> -p <password> --server=<host:port>编辑 CR。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,点
。 - 点 Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
- 点 AMQ Broker 选项卡。
- 单击 ActiveMQArtemis 实例名称的名称。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例
复制您在文本文件中记录的代理和 init 容器镜像的 URL,并将它们插入到 CR 中的
spec.deploymentPlan.image和spec.deploymentPlan.initImage字段中。例如:spec: ... deploymentPlan: image: registry.redhat.io/amq7/amq-broker-rhel8@55ae4e28b100534d63c34ab86f69230d274c999d46d1493f26fe3e75ba7a0cec initImage: registry.redhat.io/amq7/amq-broker-init-rhel8@442339c33549f2be9fe3b5c71184a753a3cf10b000b2ecc5bc9a062dd91c8def ...
保存 CR。
保存 CR 时,Operator 会升级代理以使用新镜像,并使用这些镜像,直到您再次更新
spec.deploymentPlan.image和spec.deploymentPlan.initImage属性的值。如果要防止将来的 Operator 升级来重启部署中的代理,请编辑 CR 并指定在
spec.version属性中部署的代理的版本号。如果 CR 中没有配置
spec.version属性,则后续 Operator 升级会导致代理 pod 重启。pod 重启是必需的,因为新 Operator 将最新的支持的代理版本添加到 StatefulSet 中的标签,除非spec.version属性中明确设置了版本号。您可以在代理启动后在 CR 的
status部分找到为spec.version属性指定的版本号值。如需更多信息,请参阅查看代理部署的状态信息。
如果您在没有设置镜像 URL 的情况下部署了 AMQ Broker,您可以原样设置镜像 URL,以防止 Operator 升级部署的当前镜像。您可以找到 .status.version.image 和 .status.version.initImage 属性中部署的镜像的 registry URL,它们位于 CR 的 status 部分。
如果您从 .status. version.image 和 属性复制镜像 URL,并将它们分别插入到 .status.version.initImagespec.deploymentPlan.image 和 spec.deploymentPlan.initImage 属性中,Operator 不会升级当前部署的镜像。
其它资源
- 要查看部署的状态,请参阅 第 2.8 节 “在自定义资源(CR)中验证镜像和版本配置”。