6.3. 使用 OperatorHub 升级 Operator


本节论述了如何使用 OperatorHub 为 AMQ Broker 升级 Operator。

6.3.1. 先决条件

  • 只有在您最初使用 OperatorHub 安装 Operator 时,才应使用 OperatorHub 来升级 Operator(也就是说,OpenShift Container Platform Web 控制台的 Operators Installed Operators 下)。相反,如果您最初使用 OpenShift 命令行界面(CLI)来安装 Operator,您也应使用 CLI 升级 Operator。要了解如何使用 CLI 升级 Operator,请参阅 第 6.2 节 “使用 CLI 升级 Operator”
  • 使用 OperatorHub 升级 AMQ Broker Operator 需要 OpenShift 集群的集群管理员权限。

6.3.2. 开始前

本节介绍了使用 OperatorHub 升级 AMQ Broker Operator 实例前的一些重要事项。

  • 当您从 OperatorHub 安装最新的 Operator 版本时,Operator Lifecycle Manager 会自动更新 OpenShift 集群中的 CRD。您不需要删除现有 CRD。如果您删除了现有的 CRD,则所有 CR 和代理实例也会被删除。
  • 当使用最新 Operator 版本的 CRD 更新集群时,这个更新会影响 集群中的所有项目。任何从之前版本的 Operator 部署的代理 Pod 都无法在 OpenShift Container Platform Web 控制台中更新其状态。当您点正在运行的代理 Pod 的 Logs 选项卡时,您会看到指出 'UpdatePodStatus' 失败的消息。但是,该项目中的代理 Pod 和 Operator 将继续按预期工作。要为受影响的项目修复这个问题,您还必须升级该项目以使用 Operator 的最新版本。
  • 遵循的步骤取决于您从其升级的 Operator 版本。确保遵循适用于当前版本的升级步骤。

您可以使用 OperatorHub 将 Operator 实例从 pre-7.10.0 升级到 7.10.1 或更高版本。

流程

  1. 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
  2. 从项目中卸载现有的 AMQ Broker Operator。
  3. 在左侧导航菜单中,点 Operators Installed Operators
  4. 在页面顶部的 Project 下拉菜单中选择您要卸载 Operator 的项目。
  5. 找到您要卸载的 Red Hat Integration - AMQ Broker 实例。
  6. 对于 Operator 实例,点击右侧的 More Options 图标(三个垂直点)。点击 Uninstall Operator
  7. 在确认对话框中点 Uninstall
  8. 使用 OperatorHub 为 AMQ Broker 7.10 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”

    如果在部署的 CR 中启用了自动更新,Operator 协调过程会在新 Operator 启动时升级每个代理 pod。如果没有启用自动更新,您可以通过在 CR 中设置以下属性来启用它们:

    spec:
        ...
        upgrades:
            enabled: true
            minor: true
    Copy to Clipboard Toggle word wrap

    有关启用自动更新的详情请参考 第 6.4 节 “通过指定 AMQ Broker 版本升级代理容器镜像”

    注意

    如果协调过程没有启动,您可以通过扩展部署来开始该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”

6.3.4. 将 Operator 从 7.10.0 升级到 7.10.x

使用这个流程从 AMQ Broker Operator 7.10.0 升级。

流程

  1. 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
  2. 从项目中卸载现有的 AMQ Broker Operator。

    1. 在左侧导航菜单中,点 Operators Installed Operators
    2. 在页面顶部的 Project 下拉菜单中选择您要卸载 Operator 的项目。
    3. 找到您要卸载的 Red Hat Integration - AMQ Broker 实例。
    4. 对于 Operator 实例,点击右侧的 More Options 图标(三个垂直点)。点击 Uninstall Operator
    5. 在确认对话框中点 Uninstall
  3. 当您升级 7.10.0 Operator 时,新 Operator 会删除 StatefulSet 来删除自定义和 Operator metering 标签,这些标签会错误地添加到 7.10.0 中 Operator 的 StatefulSet 选择器。当 Operator 删除 StatefulSet 时,它也会删除现有的代理 pod,这会导致临时代理中断。如果要避免中断,请完成以下步骤以删除 StatefulSet 并孤立代理 pod,以便它们继续运行。

    1. 以包含现有 Operator 部署的项目的管理员用户身份登录 OpenShift Container Platform CLI:

      $ oc login -u <user>
      Copy to Clipboard Toggle word wrap
    2. 切换到要升级 Operator 版本的 OpenShift 项目。

      $ oc project <project-name>
      Copy to Clipboard Toggle word wrap
    3. 使用 --cascade=orphan 选项删除 StatefulSet,以孤立代理 Pod。孤立的代理 Pod 在删除 StatefulSet 后继续运行。

      $ oc delete statefulset <statefulset-name> --cascade=orphan
      Copy to Clipboard Toggle word wrap
  4. 检查您的主代理 CR 是否在 deploymentPlan.labels 属性中配置了名为 applicationActiveMQArtemis 的标签。

    在 7.10.0 中,可以在 CR 中配置这些自定义标签。这些标签是为 Operator 保留用于为 Pod 分配标签,且无法在 7.10.0 后作为自定义标签添加。如果在 7.10.0 中的主代理 CR 中配置了这些自定义标签,则自定义标签会覆盖 Pod 上的 Operator 分配标签。如果 CR 具有其中任一个标签,请完成以下步骤以在 Pod 上恢复正确的标签并从 CR 中删除标签。

    1. 在 OpenShift 命令行界面(CLI)中,运行以下命令来恢复正确的 Pod 标签。在以下示例中,'ex-aao' 是部署的 StatefulSet 的名称。

      $ for pod in $(oc get pods | grep -o '^ex-aao[^ ]*') do; oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; done
      Copy to Clipboard Toggle word wrap
    2. 从 CR 中的 deploymentPlan.labels 属性中删除 applicationActiveMQArtemis 标签。

      1. 使用 OpenShift 命令行界面:

        1. 以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。

          oc login -u <user> -p <password> --server=<host:port>
          Copy to Clipboard Toggle word wrap
        2. 打开名为 broker_activemqartemis_cr.yaml 的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的 deploy/crs 目录中。
        3. 在 CR 的 deploymentPlan.labels 元素中,删除名为 applicationActiveMQArtemis 的任何自定义标签。
        4. 保存 CR 文件。
        5. 部署 CR 实例。

          1. 切换到代理部署的项目。

            $ oc project <project_name>
            Copy to Clipboard Toggle word wrap
          2. 应用 CR。

            $ oc apply -f <path/to/broker_custom_resource_instance>.yaml
            Copy to Clipboard Toggle word wrap
      2. 使用 OpenShift Container Platform Web 控制台:

        1. 以有权在项目中部署 CR 的用户登录到控制台,以进行代理部署。
        2. 在左侧窗格中,单击 Administration Custom Resource Definitions
        3. 单击 ActiveMQArtemis CRD。
        4. 实例 选项卡。
        5. 点代理部署的实例。
        6. YAML 标签。

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

        7. 在 CR 的 deploymentPlan.labels 元素中,删除名为 applicationActiveMQArtemis 的任何自定义标签。
        8. Save
  5. 使用 OperatorHub 为 AMQ Broker 7.10 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”

    新的 Operator 可以识别和管理之前的代理部署。如果在部署的 CR 中启用了自动更新,Operator 协调过程会在新 Operator 启动时升级每个代理 pod。如果没有启用自动更新,您可以通过在 CR 中设置以下属性来启用它们:

    spec:
        ...
        upgrades:
            enabled: true
            minor: true
    Copy to Clipboard Toggle word wrap

    有关启用自动更新的详情请参考 第 6.4 节 “通过指定 AMQ Broker 版本升级代理容器镜像”

    注意

    如果协调过程没有启动,您可以通过扩展部署来开始该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”

  6. 根据需要在 CR 中为升级代理可用的新功能添加属性。

6.3.5. 将 Operator 从 7.10.1 升级到 7.10.x

使用这个流程从 AMQ Broker Operator 7.10.1 升级。

流程

  1. 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
  2. 检查您的主代理 CR 是否在 deploymentPlan.labels 属性中配置了名为 applicationActiveMQArtemis 的标签。

    这些标签为 Operator 保留,以分配标签到 Pod,在 7.10.1 后无法使用。如果在主代理 CR 中配置了这些自定义标签,则 Pod 上的 Operator 分配标签会被自定义标签覆盖。

  3. 如果在主代理 CR 中没有配置这些自定义标签,请使用 OperatorHub 为 AMQ Broker 7.10 安装 Operator 的最新版本。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”
  4. 如果在主代理 CR 中配置了任何自定义标签,请完成以下步骤来卸载现有的 Operator,在安装新 Operator 前恢复正确的 Pod 标签并从 CR 中删除标签。

    注意

    通过卸载 Operator,您可以在没有 Operator 删除 StatefulSet 的情况下删除自定义标签,这也会删除现有代理 pod 并导致临时代理中断。

    1. 从项目中卸载现有的 AMQ Broker Operator。

      1. 在左侧导航菜单中,点 Operators Installed Operators
      2. 在页面顶部的 Project 下拉菜单中选择您要卸载 Operator 的项目。
      3. 找到您要卸载的 Red Hat Integration - AMQ Broker 实例。
      4. 对于 Operator 实例,点击右侧的 More Options 图标(三个垂直点)。点击 Uninstall Operator
      5. 在确认对话框中点 Uninstall
    2. 在 OpenShift 命令行界面(CLI)中,运行以下命令来恢复正确的 Pod 标签。在以下示例中,'ex-aao' 是部署的 StatefulSet 的名称。

      $ for pod in $(oc get pods | grep -o '^ex-aao[^ ]*') do; oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; done
      Copy to Clipboard Toggle word wrap
    3. 从 CR 中的 deploymentPlan.labels 属性中删除 applicationActiveMQArtemis 标签。

      1. 使用 OpenShift 命令行界面:

        1. 以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。

          oc login -u <user> -p <password> --server=<host:port>
          Copy to Clipboard Toggle word wrap
        2. 打开名为 broker_activemqartemis_cr.yaml 的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的 deploy/crs 目录中。
        3. 在 CR 的 deploymentPlan.labels 属性中,删除名为 applicationActiveMQArtemis 的任何自定义标签。
        4. 保存 CR 文件。
        5. 部署 CR 实例。

          1. 切换到代理部署的项目。

            $ oc project <project_name>
            Copy to Clipboard Toggle word wrap
          2. 应用 CR。

            $ oc apply -f <path/to/broker_custom_resource_instance>.yaml
            Copy to Clipboard Toggle word wrap
      2. 使用 OpenShift Container Platform Web 控制台:

        1. 以有权在项目中部署 CR 的用户登录到控制台,以进行代理部署。
        2. 在左侧窗格中,单击 Administration Custom Resource Definitions
        3. 单击 ActiveMQArtemis CRD。
        4. 实例 选项卡。
        5. 点代理部署的实例。
        6. YAML 标签。

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

        7. 在 CR 的 deploymentPlan.labels 属性中,删除名为 applicationActiveMQArtemis 的任何自定义标签。
        8. Save
  5. 使用 OperatorHub 为 AMQ Broker 7.10 安装最新版本的 Operator。更多信息请参阅 第 3.3.2 节 “从 OperatorHub 部署 Operator”

    新的 Operator 可以识别和管理之前的代理部署。如果在部署的 CR 中启用了自动更新,Operator 协调过程会在新 Operator 启动时升级每个代理 pod。如果没有启用自动更新,您可以通过在 CR 中设置以下属性来启用它们:

    spec:
        ...
        upgrades:
            enabled: true
            minor: true
    Copy to Clipboard Toggle word wrap

    有关启用自动更新的详情请参考 第 6.4 节 “通过指定 AMQ Broker 版本升级代理容器镜像”

    注意

    如果协调过程没有启动,您可以通过扩展部署来开始该过程。更多信息请参阅 第 3.4.1 节 “部署基本代理实例”

  6. 根据需要在 CR 中为升级代理可用的新功能添加属性。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat