6.4. 通过指定 AMQ Broker 版本升级代理容器镜像


以下流程演示了如何通过指定 AMQ Broker 版本为基于 Operator 的代理部署升级代理容器镜像。例如,如果您将 Operator 升级到 AMQ Broker 7.10.0,但 CR 中的 spec.upgrades.enabled 属性已设为 truespec.version 属性指定 7.9.0要升级 代理容器镜像,需要手动指定新的 AMQ Broker 版本(如 7.10.0)。当您指定 AMQ Broker 的新版本时,Operator 会自动选择与此版本对应的代理容器镜像。

先决条件

  • 第 2.4 节 “Operator 如何选择容器镜像” 所述,如果您部署一个 CR 且没有明确指定代理容器镜像,Operator 会自动选择要使用的适当容器镜像。要使用本节中描述的升级过程,您必须使用此默认行为。如果您在 CR 中直接指定代理容器镜像来覆盖默认行为,Operator 无法自动 升级代理容器镜像以对应 AMQ Broker 版本,如下所述。

流程

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

    1. 使用 OpenShift 命令行界面:

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

        $ oc login -u <user> -p <password> --server=<host:port>
      2. 在文本编辑器中,打开用于代理部署的 CR 文件。例如,这可能是之前下载并提取的 Operator 安装的 deploy/crs 目录中的 broker_activemqartemis_cr.yaml 文件。
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以具有权限的用户身份登录控制台,在项目中为代理部署编辑和部署 CR。
      2. 在左侧窗格中,单击 Administration Custom Resource Definitions
      3. 单击 ActiveMQArtemis CRD。
      4. 实例 选项卡。
      5. 查找与项目命名空间对应的 CR 实例。
      6. 对于 CR 实例,单击右侧的 More Options 图标(三个垂直点)。选择 Edit ActiveMQArtemis

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

  2. 指定将代理容器镜像升级到的 AMQ Broker 版本,为 CR 的 spec.version 属性设置一个值。例如:

    spec:
        version: 7.10.0
        ...
  3. 在 CR 的 spec 部分,找到 upgrade 部分。如果 CR 中还没有包括此部分,请添加它。

    spec:
        version: 7.10.0
        ...
        upgrades:
  4. 确定 upgrade 部分包含 enabledminor 属性。

    spec:
        version: 7.10.0
        ...
        upgrades:
            enabled:
            minor:
  5. 要根据 AMQ Broker 的指定版本启用代理容器镜像升级,请将 enabled 属性的值设置为 true

    spec:
        version: 7.10.0
        ...
        upgrades:
            enabled: true
            minor:
  6. 要定义代理的升级行为,请为 minor 属性设置值。

    1. 要允许在 次要 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.07.10.0 次版本之间有可用的升级。根据前面的设置,允许在次版本之间进行升级,Operator 会升级代理容器镜像。

      相反,假设当前代理容器镜像与 7.10.0 对应,并且您为 spec.version 指定 一个新的 7.10.1 值。如果存在与 7.10.1 对应的镜像,Operator 会决定 7.10.07.10.1 微版本之间有可用的升级。根据前面的设置,仅允许在次版本之间进行升级,Operator 不会 升级代理容器镜像。

    2. 要允许在 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.07.10.0 次版本之间有可用的升级。根据前面的设置,它不允许在次版本间进行升级(即在微版本间进行升级),Operator 不会 升级代理容器镜像。

      相反,假设当前代理容器镜像与 7.10.0 对应,并且您为 spec.version 指定 一个新的 7.10.1 值。如果存在与 7.10.1 对应的镜像,Operator 会决定 7.10.07.10.1 微版本之间有可用的升级。根据前面的设置,允许在微版本间进行升级,Operator 会升级代理容器镜像。

  7. 将更改应用到 CR。

    1. 使用 OpenShift 命令行界面:

      1. 保存 CR 文件。
      2. 切换到代理部署的项目。

        $ oc project <project_name>
      3. 应用 CR。

        $ oc apply -f <path/to/broker_custom_resource_instance>.yaml
    2. 使用 OpenShift Web 控制台:

      1. 编辑完 CR 后,点击 Save

    应用 CR 更改时,Operator 首先会验证是否升级到为 spec.version 指定的 AMQ Broker 版本。如果您指定了将要升级到的 AMQ Broker 无效的版本的 AMQ Broker(例如,还没有可用的版本),Operator 会记录警告信息,且不采取进一步操作。

    但是,如果到指定版本的升级可用,并且为 upgrade.enabledupgrade.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 会关闭并重启。

其他资源

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部