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

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

先决条件

流程

  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. 在左侧窗格中,单击 AdministrationCustom 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.9.3
        ...
  3. 在 CR 的 spec 部分,找到 upgrade 部分。如果此部分尚未包含在 CR 中,请添加它。

    spec:
        version: 7.9.3
        ...
        upgrades:
  4. 确保 upgrade 部分 包含 enabled 和副 属性。

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

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

    1. 要允许在 AMQ Broker 版本间升级,请将 minor 值设为 true

      spec:
          version: 7.9.0
          ...
          upgrades:
              enabled: true
              minor: true

      例如,假设当前代理容器镜像对应于 7.8.0,并且有与为 spec.version 指定的 7.9.0 版本对应的新镜像。在本例中,Operator 确定在 7.87.9 次版本间有可用的升级。根据上述设置(允许在次版本间升级),Operator 升级代理容器镜像。

      相反,假设当前代理容器镜像与 7.9.0 对应,并且为 spec.version 指定 了一个新7.9.1。如果存在与 7.9.1 对应的镜像,Operator 会确定在 7.9.0 和 7. 9.1 微版本间有可用的升级。根据以上设置,仅允许在次版本间升级,Operator 不会 升级代理容器镜像。

    2. 要允许在 AMQ Broker 版本间升级,请将 minor 值设为 false

      spec:
          version: 7.9.0
          ...
          upgrades:
              enabled: true
              minor: false

      例如,假设当前代理容器镜像对应于 7.8.0,并且有与为 spec.version 指定的 7.9.0 版本对应的新镜像。在本例中,Operator 确定在 7.87.9 次版本间有可用的升级。根据前面的设置,这些设置不允许在次版本间升级(即仅在微版本间升级),Operator 不会升级 代理容器镜像。

      相反,假设当前代理容器镜像与 7.9.0 对应,并且为 spec.version 指定 了一个新7.9.1。如果存在与 7.9.1 对应的镜像,Operator 会确定在 7.9.0 和 7. 9.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 的无效版本(例如,尚未可用的版本),Operator 会记录警告信息,并且不再执行进一步操作。

    但是,如果升级到指定版本 且为 upgrade .enabled 和 upgrade .minor 指定的值允许升级,则 Operator 升级部署中的每个代理以使用与新的 AMQ Broker 版本对应的代理容器镜像。

    Operator 使用的代理容器镜像在 Operator 部署的 operator.yaml 配置文件中的 环境变量中定义。环境变量名称包含 AMQ Broker 版本的标识符。例如,环境变量 RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_791 对应于 AMQ Broker 7.9.1。

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

其它资源