6.6. 限制代理容器镜像的自动升级
默认情况下,Operator 会自动将管理的每个代理升级到 Operator 版本支持的最新可用容器镜像。在部署的自定义资源(CR)中,您可以通过指定版本号或特定容器镜像的 URL 来限制 Operator 升级功能。
6.6.1. 使用版本号限制自动升级镜像 复制链接链接已复制到粘贴板!
当有新版本可用时,您可以限制代理自动升级到的容器镜像版本。
当您根据版本号限制升级时,Operator 将继续自动升级代理以使用包含部署版本的安全修复的任何新镜像。
流程
编辑代理部署的主代理 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。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Container Platform Web 控制台:
- 以有权在代理部署的项目中部署 CR 的用户身份登录控制台。
-
在左侧窗格中,点
。 - 点 Red Hat Integration - AMQ Broker for RHEL 9 (Multiarch) operator。
- 点 AMQ Broker 选项卡。
- 单击 ActiveMQArtemis 实例名称。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,允许您编辑 CR 实例。
注意在 CR 的
status
部分中,.status.version.brokerVersion
字段显示当前部署的 AMQ Broker 版本。
在
spec.version
属性中,指定 Operator 可以将代理和 init 容器镜像升级到的版本。以下是您可以指定的值示例。- 例子
在以下示例中,Operator 将部署中的当前容器镜像升级到 7.13.0。
spec: version: '7.13.0' ...
spec: version: '7.13.0' ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下示例中,Operator 将部署中当前的容器镜像升级到最新可用的 7.12.x 镜像。例如,如果您的部署使用 7.12.1 容器镜像,Operator 会自动将镜像升级到 7.12.4,但不升级到 7.13.1。
spec: version: '7.12' ...
spec: version: '7.12' ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下示例中,Operator 会将部署中的当前容器镜像升级到最新的 7.x.x 镜像。例如,如果您的部署使用 7.12.4 镜像,Operator 会自动将镜像升级到 7.13.1。
spec: version: '7' ...
spec: version: '7' ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要在容器镜像的次版本间升级,例如从 7.12.x 升级到 7.13.x,您需要一个与新容器镜像相同的次版本的 Operator。例如,要从 7.12.4 升级到 7.13.1,必须安装 7.13.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_7131
对应于 AMQ Broker 7.13.1。
当 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 和
属性外,Operator 会忽略 spec.deploymentPlan
.initImage
属性。
spec.version
流程
获取 Operator 可以升级当前镜像的代理和 init 容器镜像的 URL。
- 在 Red Hat Catalog 中,打开代理容器组件页面: AMQ Broker for RHEL 9 (Multiarch)。
- 在 Architecture 下拉菜单中,选择您的架构。
- 在 Tag 下拉菜单中,选择与您要安装的镜像对应的标签。根据发行日期,标签按照时间顺序显示。标签由发行版本和分配的标签组成。
- 打开 Get this image 选项卡。
- 在 Manifest 字段中,单击 Copy 图标。
- 将 URL 粘贴到文本文件中。
- 在 Red Hat Catalog 中,打开 init 容器组件页面: AMQ Broker Init for RHEL 9 (Multiarch)
- 要获取 init 容器镜像的 URL,请重复后续步骤以获取代理容器镜像的 URL。
编辑代理部署的主代理 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。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Container Platform Web 控制台:
- 以有权在代理部署的项目中部署 CR 的用户身份登录控制台。
-
在左侧窗格中,点
。 - 点 Red Hat Integration - AMQ Broker for RHEL 9 (Multiarch) operator。
- 点 AMQ Broker 选项卡。
- 单击 ActiveMQArtemis 实例名称。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例
复制您在文本文件中记录的代理和 init 容器镜像的 URL,并将它们插入到 CR 中的
spec.deploymentPlan.image
和spec.deploymentPlan.initImage
字段中。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
保存 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 升级部署的当前镜像。您可以在 CR 的 status
部分找到在 .status.version.image
和 .status.version.initImage
属性中部署的镜像的 registry URL。
如果您从 .status.version.image
和 .status.version.initImage
属性复制镜像 URL,并将它们插入到 spec.deploymentPlan.image
和 spec.deploymentPlan.initImage
属性中,Operator 不会升级当前部署的镜像。
其它资源
- 要查看部署的状态,请参阅 第 2.8 节 “在自定义资源(CR)中验证镜像和版本配置”。