3.2. 使用 CLI 安装 Operator


注意

每个 Operator 发行版本都要求您下载最新的 AMQ Broker 7.10.7 Operator 安装和示例文件,如下所述。

本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)在给定的 OpenShift 项目中安装和部署 AMQ Broker 7.10 的最新版本。在随后的步骤中,您可以使用此 Operator 部署一些代理实例。

3.2.1. 准备部署 Operator

在使用 CLI 部署 Operator 前,您必须下载 Operator 安装文件并准备部署。

流程

  1. 在 Web 浏览器中,导航到 AMQ Broker 7.10.7 发行版本的 Software Downloads 页面。
  2. 确保 Version 下拉列表的值设为 7.10.7,并且选择了 Releases 选项卡。
  3. AMQ Broker 7.10.7 Operator Installation and Example Files 旁边,点 Download

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

  4. 将存档移到您选择的目录。以下示例将存档 移到名为 ~/broker/operator 的目录。

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

    $ cd ~/broker/operator
    $ unzip amq-broker-operator-7.10.7-ocp-install-examples.zip
    Copy to Clipboard Toggle word wrap
  6. 切换到提取存档时创建的目录。例如:

    $ cd amq-broker-operator-7.10.7-ocp-install-examples
    Copy to Clipboard Toggle word wrap
  7. 以集群管理员身份登录 OpenShift Container Platform。例如:

    $ oc login -u system:admin
    Copy to Clipboard Toggle word wrap
  8. 指定要安装 Operator 的项目。您可以创建新项目或切换到现有项目。

    1. 创建一个新项目

      $ oc new-project <project_name>
      Copy to Clipboard Toggle word wrap
    2. 或者,切换到现有项目:

      $ oc project <project_name>
      Copy to Clipboard Toggle word wrap
  9. 指定要与 Operator 搭配使用的服务帐户。

    1. 在您提取的 Operator 归档的 deploy 目录中,打开 service_account.yaml 文件。
    2. 确保 kind 元素设置为 ServiceAccount
    3. 如果要更改默认服务帐户名称,在 metadata 部分中,将 amq-broker-operator 替换为自定义名称。
    4. 在项目中创建服务帐户。

      $ oc create -f deploy/service_account.yaml
      Copy to Clipboard Toggle word wrap
  10. 为 Operator 指定角色名称。

    1. 打开 role.yaml 文件。此文件指定 Operator 可以使用和修改资源。
    2. 确保 kind 元素设为 Role
    3. 如果要更改默认角色名称,在 metadata 部分中,将 amq-broker-operator 替换为自定义名称。
    4. 在项目中创建角色。

      $ oc create -f deploy/role.yaml
      Copy to Clipboard Toggle word wrap
  11. 为 Operator 指定角色绑定。角色绑定根据您指定的名称将之前创建的服务帐户绑定到 Operator 角色。

    1. 打开 role_binding.yaml 文件。
    2. 确保 ServiceAccountRolename 值与 service_account.yamlrole.yaml 文件中指定的匹配。例如:

      metadata:
          name: amq-broker-operator
      subjects:
          kind: ServiceAccount
          name: amq-broker-operator
      roleRef:
          kind: Role
          name: amq-broker-operator
      Copy to Clipboard Toggle word wrap
    3. 在项目中创建角色绑定。

      $ oc create -f deploy/role_binding.yaml
      Copy to Clipboard Toggle word wrap
  12. 为 Operator 指定领导选举角色绑定。角色绑定根据您指定的名称将之前创建的服务帐户绑定到领导选举角色。

    1. 为 Operator 创建领导选举角色。

      $ oc create -f deploy/election_role.yaml
      Copy to Clipboard Toggle word wrap
    2. 在项目中创建领导选举角色绑定。

      $ oc create -f deploy/election_role_binding.yaml
      Copy to Clipboard Toggle word wrap
  13. (可选)如果希望 Operator 监视多个命名空间,请完成以下步骤:

    注意

    如果 OpenShift Container Platform 集群已经包含 AMQ Broker 安装的 Operator,您必须确保新的 Operator 不会监视与现有 Operator 相同的任何命名空间。有关如何识别现有 Operator 所监视的命名空间的信息,请参阅 识别现有 Operator 监视的命名空间

    1. 在您下载并提取的 Operator 归档的 deploy 目录中,打开 operator_yaml 文件。
    2. 如果您希望 Operator 监控集群中的所有命名空间,在 WATCH_NAMESPACE 部分中添加一个 value 属性,并将值设为星号。注释掉 WATCH_NAMESPACE 部分中的现有属性。例如:

      - name: WATCH_NAMESPACE
        value: "*"
      # valueFrom:
      #   fieldRef:
      #     fieldPath: metadata.namespace
      Copy to Clipboard Toggle word wrap
      注意

      为了避免冲突,请确保多个 Operator 不会监视相同的命名空间。例如,如果您部署一个 Operator 来监控 集群中的所有命名空间,则无法部署另一个 Operator 来监控单独的命名空间。如果 Operator 已在集群中部署,您可以指定新 Operator 监视的命名空间列表,如下所述。

    3. 如果您希望 Operator 观察多个,但并非集群中的所有命名空间,在 WATCH_NAMESPACE 部分指定命名空间列表。确保排除现有 Operator 监视的任何命名空间。例如:

      - name: WATCH_NAMESPACE
        value: "namespace1, namespace2"`.
      Copy to Clipboard Toggle word wrap
    4. 在您下载并提取的 Operator 归档的 deploy 目录中,打开 cluster_role_binding.yaml 文件。
    5. 在 Subjects 部分中,指定一个 与部署 Operator 的 OpenShift Container Platform 项目对应的命名空间。例如:

      Subjects:
      - kind: ServiceAccount
        name: activemq-artemis-controller-manager
        namespace: operator-project
      Copy to Clipboard Toggle word wrap
      注意

      如果您之前使用早期版本的 Operator 部署代理,并且希望部署 Operator 来监控多个命名空间,请参阅 升级前

    6. 在项目中创建集群角色。

      $ oc create -f deploy/cluster_role.yaml
      Copy to Clipboard Toggle word wrap
    7. 在项目中创建集群角色绑定。

      $ oc create -f deploy/cluster_role_binding.yaml
      Copy to Clipboard Toggle word wrap

在下面的流程中,您要在项目中部署 Operator。

3.2.2. 使用 CLI 部署 Operator

本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)在 OpenShift 项目中部署 AMQ Broker 7.10 的最新版本。

先决条件

  • 您必须已经为 Operator 部署准备了 OpenShift 项目。请参阅 第 3.2.1 节 “准备部署 Operator”
  • 从 AMQ Broker 7.3 开始,您可以使用红帽生态系统目录的新版本访问容器镜像。这个 registry 的新版本需要您成为经过身份验证的用户,然后才能访问镜像。在按照本节中的步骤操作前,您必须首先完成 Red Hat Container Registry 身份验证 中描述的步骤。
  • 如果您打算使用持久性存储部署代理,且 OpenShift 集群中没有容器原生存储,则需要手动置备持久性卷(PV),并确保 Operator 可以声明这些代理。例如,如果要创建具有持久性存储的两个代理的集群(即,通过在自定义资源中设置 persistenceEnabled=true ),则需要有两个 PV 可用。默认情况下,每个代理实例都需要存储 2 GiB。

    如果您在自定义资源中指定 persistenceEnabled=false,部署的代理 将使用临时存储。临时存储意味着每次重启代理 Pod 时都会丢失任何现有数据。

    有关置备持久性存储的更多信息,请参阅:

流程

  1. 在 OpenShift 命令行界面(CLI)中,以集群管理员的身份登录到 OpenShift。例如:

    $ oc login -u system:admin
    Copy to Clipboard Toggle word wrap
  2. 切换到您之前为 Operator 部署准备的项目。例如:

    $ oc project <project_name>
    Copy to Clipboard Toggle word wrap
  3. 切换到之前提取 Operator 安装存档时创建的目录。例如:

    $ cd ~/broker/operator/amq-broker-operator-7.10.7-ocp-install-examples
    Copy to Clipboard Toggle word wrap
  4. 部署 Operator 中包含的 CRD。您必须在部署和启动 Operator 前,在 OpenShift 集群中安装 CRD。

    1. 部署主代理 CRD。

      $ oc create -f deploy/crds/broker_activemqartemis_crd.yaml
      Copy to Clipboard Toggle word wrap
    2. 部署地址 CRD。

      $ oc create -f deploy/crds/broker_activemqartemisaddress_crd.yaml
      Copy to Clipboard Toggle word wrap
    3. 部署 scaledown 控制器 CRD。

      $ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
      Copy to Clipboard Toggle word wrap
    4. 部署安全 CRD:

      $ oc create -f deploy/crds/broker_activemqartemissecurity_crd.yaml
      Copy to Clipboard Toggle word wrap
  5. 将与 Red Hat Ecosystem Catalog 进行身份验证时使用的账户相关联的 pull secret 与您的 OpenShift 项目的 default, deployer, 和 builder 服务账户进行链接。

    $ oc secrets link --for=pull default <secret_name>
    $ oc secrets link --for=pull deployer <secret_name>
    $ oc secrets link --for=pull builder <secret_name>
    Copy to Clipboard Toggle word wrap
  6. 在您下载并提取的 Operator 归档的 deploy 目录中,打开 operator.yaml 文件。确保 spec.containers.image 属性的值对应于 Operator 的 7.10.7-opr-1 版本,如下所示。

    spec:
        template:
            spec:
                containers:
                    #image: registry.redhat.io/amq7/amq-broker-rhel8-operator:7.10
                    image: registry.redhat.io/amq7/amq-broker-rhel8-operator@sha256:1a7aa54d2799d238eb5f49f7a95a78a896f6bf8d222567e9118e0e3963cc9aad
    Copy to Clipboard Toggle word wrap
    注意

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

  7. 部署 Operator。

    $ oc create -f deploy/operator.yaml
    Copy to Clipboard Toggle word wrap

    在 OpenShift 项目中,Operator 会在新 Pod 中启动。

    在 OpenShift Container Platform Web 控制台中,Operator Pod 的 Events 选项卡的信息确认 OpenShift 已部署了您指定的 Operator 镜像,已向 OpenShift 集群中的节点分配新容器,并已启动新的容器。

    另外,如果您点击 Pod 中的 Logs 选项卡,输出应包含以下几行:

    ...
    {"level":"info","ts":1553619035.8302743,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemisaddress-controller"}
    {"level":"info","ts":1553619035.830541,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemis-controller"}
    {"level":"info","ts":1553619035.9306898,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemisaddress-controller","worker count":1}
    {"level":"info","ts":1553619035.9311671,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemis-controller","worker count":1}
    Copy to Clipboard Toggle word wrap

    前面的输出确认新部署的 Operator 与 Kubernetes 通信,代理和寻址的控制器正在运行,这些控制器已启动一些 worker。

注意

建议在一个给定的 OpenShift 项目中仅部署 AMQ Broker Operator 的一个单个实例。不建议将 Operator 部署的 spec.replicas 属性设置为大于 1 的值,或者不要 在同一项目中部署 Operator。

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat