6.4. 使用 CLI 手动升级 Operator


本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)将不同版本 Operator 升级到 AMQ Broker 7.12 可用版本。

6.4.1. 先决条件

  • 只有在最初使用 CLI 安装 Operator 时,才使用 CLI 升级 Operator。如果您最初使用 OperatorHub 安装 Operator (即,Operator 出现在 OpenShift Container Platform Web 控制台的项目的 Operators 下),请使用 OperatorHub 来升级 Operator。要了解如何使用 OperatorHub 升级 Operator,请参阅 第 6.3 节 “使用 OperatorHub 手动升级 Operator”

6.4.2. 使用 CLI 升级 Operator

您可以使用 OpenShift 命令行界面(CLI)将 Operator 升级到 AMQ Broker 7.12 的最新版本。

流程

  1. 在网页浏览器中,导航到 AMQ Broker 7.12.3Software Downloads 页面。
  2. 确保 Version 下拉列表的值设置为 7.12.3,并且选择了 Releases 选项卡。
  3. AMQ Broker 7.12.3 Operator 安装和示例文件旁边,单击 Download

    下载 amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip 压缩存档会自动开始。

  4. 下载完成后,将存档移到您选择的安装目录中。以下示例将存档移到名为 ~/broker/operator 的目录中。

    $ mkdir ~/broker/operator
    $ mv amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip ~/broker/operator
    Copy to Clipboard Toggle word wrap
  5. 在您选择的安装目录中,提取存档的内容。例如:

    $ cd ~/broker/operator
    $ unzip amq-broker-operator-operator-7.12.3-ocp-install-examples-rhel8.zip
    Copy to Clipboard Toggle word wrap
  6. 以包含现有 Operator 部署的项目的管理员身份登录 OpenShift Container Platform。

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

    $ oc project <project-name>
    Copy to Clipboard Toggle word wrap
  8. 在您下载和提取的最新 Operator 归档的 deploy 目录中,打开 operator.yaml 文件。

    注意

    operator.yaml 文件中,Operator 使用一个由 Secure Hash Algorithm (SHA) 值代表的镜像。注释行以数字符号 (#) 符号开头,注明 SHA 值对应于特定的容器镜像标签。

  9. 以前的 Operator 部署打开 operator.yaml 文件。检查您在之前配置中指定的任何非默认值是否在 新的 operator.yaml 配置文件中复制。
  10. 在新的 operator.yaml 文件中,Operator 默认名为 amq-broker-controller-manager。如果上一个部署中的 Operator 名称不是 amq-broker-controller-manager,请将 amq-broker-controller-manager 的所有实例替换为以前的 Operator 名称。例如:

    spec:
      ...
      selector
        matchLabels
          name: amq-broker-operator
      ...
    Copy to Clipboard Toggle word wrap
  11. 在新的 operator.yaml 文件中,Operator 的服务帐户名为 amq-broker-controller-manager。在以前的版本中,Operator 的服务帐户名为 amq-broker-operator

    1. 如果要在以前的部署中使用服务帐户名称,请将 operator.yaml 文件中的服务帐户名称替换为之前部署中使用的名称。例如:

      spec:
        ...
        serviceAccountName: amq-broker-operator
        ...
      Copy to Clipboard Toggle word wrap
    2. 如果要使用新服务帐户名称 amq-broker-controller-manager 用于 Operator,更新项目中的服务帐户、角色和角色绑定。

      $ oc apply -f deploy/service_account.yaml
      Copy to Clipboard Toggle word wrap
      $ oc apply -f deploy/role.yaml
      Copy to Clipboard Toggle word wrap
      $ oc apply -f deploy/role_binding.yaml
      Copy to Clipboard Toggle word wrap
  12. 更新 Operator 中包含的 CRD。

    1. 更新主代理 CRD。

      $ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
      Copy to Clipboard Toggle word wrap
    2. 更新地址 CRD。

      $ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
      Copy to Clipboard Toggle word wrap
    3. 更新 scaledown 控制器 CRD。

      $ oc apply -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
      Copy to Clipboard Toggle word wrap
    4. 更新安全 CRD。

      $ oc apply -f deploy/crds/broker_activemqartemissecurity_crd.yaml
      Copy to Clipboard Toggle word wrap
  13. 如果您只从 AMQ Broker Operator 7.10.0 升级,请删除 Operator 和 StatefulSet。

    默认情况下,新 Operator 删除 StatefulSet 以删除自定义和 Operator metering 标签,这些标签由 7.10.0 中的 Operator 错误地添加到 StatefulSet 选择器中。当 Operator 删除 StatefulSet 时,它还会删除现有代理 pod,这会导致临时代理中断。如果要避免停机,请完成以下步骤删除 Operator 和 StatefulSet,而不删除代理 pod。

    1. 删除 Operator。

      $ oc delete -f deploy/operator.yaml
      Copy to Clipboard Toggle word wrap
      注意

      删除 Operator 不会删除 Operator 管理的代理实例。

    2. 使用 --cascade=orphan 选项删除 StatefulSet,以孤立代理 pod。在 StatefulSet 被删除后,孤立的代理 pod 会继续运行。

      $ oc delete statefulset <statefulset-name> --cascade=orphan
      Copy to Clipboard Toggle word wrap
  14. 如果您要从 AMQ Broker Operator 7.10.0 或 7.10.1 升级,请检查您的主代理 CR 是否在 deploymentPlan.labels 属性中配置了名为 applicationActiveMQArtemis 的标签。

    这些标签供 Operator 为 pod 分配标签,在 7.10.1 后不允许作为自定义标签。如果在主代理 CR 中配置了这些自定义标签,则 pod 上的 Operator 分配标签会被自定义标签覆盖。如果在主代理 CR 中配置了这些自定义标签,请完成以下步骤来恢复 pod 上的正确标签并从 CR 中删除标签。

    1. 如果要从 7.10.0 升级,请删除上一步中的 Operator。如果要从 7.10.1 升级,请删除 Operator。

      $ oc delete -f deploy/operator.yaml
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令来恢复正确的 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,以便在代理部署的项目中部署 CR。

        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
    4. 如果删除了前面的 Operator,请部署新的 Operator。

       $ oc create -f deploy/operator.yaml
      Copy to Clipboard Toggle word wrap
  15. 应用更新的 Operator 配置。

    $ oc apply -f deploy/operator.yaml
    Copy to Clipboard Toggle word wrap
  16. 根据需要,为升级代理中提供的新功能向 CR 添加属性。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat