搜索

6.4. 限制代理容器镜像的自动升级

download PDF

默认情况下,Operator 会自动升级部署中的每个代理,以使用最新可用的容器镜像。在部署的自定义资源(CR)中,您可以通过指定版本号或特定容器镜像的 URL 来限制 Operator 升级镜像的能力。

6.4.1. 使用版本号限制镜像的自动升级

您可以在新版本可用时,限制代理自动升级的容器镜像版本。

注意

当您根据版本号限制升级时,Operator 继续自动升级代理以使用包含部署的安全修复的任何新镜像。

流程

  1. 编辑代理部署的主代理 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 以具有为代理部署的项目中编辑和部署 CR 的用户身份登录 OpenShift。

        $ oc login -u <user> -p <password> --server=<host:port>
      2. 编辑 CR。

         oc edit ActiveMQArtemis <CR instance name> -n <namespace>
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
      2. 在左侧窗格中,点 Operators Installed Operator
      3. Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
      4. AMQ Broker 选项卡。
      5. 单击 ActiveMQArtemis 实例名称的名称。
      6. YAML 标签。

        在控制台中,会打开 YAML 编辑器,供您编辑 CR 实例。

        注意

        在 CR 的 status 部分中,.status.version.brokerVersion 字段显示当前部署的 AMQ Broker 版本。

  2. 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.0。

    spec:
        version: '7.11'
        ...

    在以下示例中,Operator 将部署中的当前容器镜像升级到最新的 7.x.x 镜像。例如,如果您的部署使用 7.11.6 镜像,Operator 会自动将镜像升级到 7.12.0。

    spec:
        version: '7'
        ...
    注意

    要在容器镜像的次版本间(例如从 7.11.x 升级到 7.12.x),您需要一个与新容器镜像相同的次版本的 Operator。例如,若要从 7.11.6 升级到 7.12.0,必须安装 7.12.x Operator。

  3. 保存 CR。
重要

如果您使用 CR 中的 spec.version 属性来限制代理容器镜像的自动升级,请确保 CR 不包含 spec.deploymentPlan.imagespec.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_7120 对应于 AMQ Broker 7.12.0。

当 Operator 应用 CR 更改时,它会重启部署中的每个代理 pod,以便每个 pod 使用指定的镜像版本。如果部署中有多个代理,则只有一个代理 pod 会一次关闭并重启。

其他资源

6.4.2. 使用镜像 URL 限制镜像自动升级

如果要升级部署中的代理以使用特定的容器镜像,您可以在 CR 中指定镜像的 registry URL。在 Operator 将代理升级到指定的容器镜像后,在替换 CR 中的镜像 URL 前,不会进一步升级。例如,Operator 不会自动升级代理以使用包含部署的镜像的安全修复的较新的镜像。

重要

如果要使用镜像 URL 限制自动升级,请为 CR 中的 spec.deploymentPlan.imagespec.deploymentPlan.initImage 属性指定 URL,以确保代理和 init 容器镜像匹配。如果您只指定了一个容器镜像的 URL,则代理和 init 容器镜像可以分离,这可能会阻止代理运行。

注意

如果 CR 在 spec.deploymentPlan.imagespec.deploymentPlan.initImage 属性之外有一个 spec.version 属性,Operator 会忽略 spec.version 属性。

流程

  1. 获取 Operator 可以升级当前镜像的代理和 init 容器镜像的 URL。

    1. 在 Red Hat Catalog 中,打开代理容器组件页面: 适用于 RHEL 8 的 AMQ Broker (Multiarch)
    2. Architecture 下拉菜单中,选择您的架构。
    3. Tag 下拉菜单中,选择与您要安装的镜像对应的标签。标签根据发行日期按时间顺序显示。标签由发行版本和分配的标签组成。
    4. 打开 Get this image 选项卡。
    5. Manifest 字段中,单击 Copy 图标。
    6. 将 URL 粘贴到文本文件中。
    7. 在 Red Hat Catalog 中,打开 init 容器组件页面: 适用于 RHEL 8 的 AMQ Broker Init (多架构)
    8. 要获取 init 容器镜像的 URL,请重复上述步骤,以获取代理容器镜像的 URL。
  2. 编辑代理部署的主代理 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 以具有为代理部署的项目中编辑和部署 CR 的用户身份登录 OpenShift。

        $ oc login -u <user> -p <password> --server=<host:port>
      2. 编辑 CR。

         oc edit ActiveMQArtemis <CR instance name> -n <namespace>
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
      2. 在左侧窗格中,点 Operators Installed Operator
      3. Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
      4. AMQ Broker 选项卡。
      5. 单击 ActiveMQArtemis 实例名称的名称。
      6. YAML 标签。

        在控制台中,会打开 YAML 编辑器,供您配置 CR 实例

    3. 复制您在文本文件中记录的代理和 init 容器镜像的 URL,并将它们插入到 CR 中的 spec.deploymentPlan.imagespec.deploymentPlan.initImage 字段中。例如:

      spec:
        ...
        deploymentPlan:
          image: registry.redhat.io/amq7/amq-broker-rhel8@3cc58e98c905d427d6be214a8df3c2687170f74abeacc33366f91bfc18e69a3a
          initImage: registry.redhat.io/amq7/amq-broker-init-rhel8@227fbe6e428848a0edb8086a00f8d9d993b184392e1f4161febff949ce943cbf
        ...
  3. 保存 CR。

    保存 CR 时,Operator 会升级代理以使用新镜像,并使用这些镜像,直到您再次更新 spec.deploymentPlan.imagespec.deploymentPlan.initImage 属性的值。

  4. 如果要防止将来的 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 和 .status.version.initImage 属性复制镜像 URL,并将它们分别插入到 spec.deploymentPlan.imagespec.deploymentPlan.initImage 属性中,Operator 不会升级当前部署的镜像。

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.