3.2. 使用 CLI 安装 Operator


注意

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

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

3.2.1. 准备部署 Operator

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

流程

  1. 在 Web 浏览器中,导航到 AMQ Broker 7.11.7 发行版本的 Software Downloads 页面。
  2. 确保 Version 下拉列表的值设置为 7.11.7,并选择了 Patches 选项卡。
  3. 在最新的 AMQ Broker 7.11.7 Operator 安装和示例文件旁边,单击 Download

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

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

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

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

    $ cd amq-broker-operator-7.11.7-ocp-install-examples
  7. 以集群管理员身份登录 OpenShift Container Platform。例如:

    $ oc login -u system:admin
  8. 指定要在其中安装 Operator 的项目。您可以创建新项目或切换到现有项目。

    1. 创建一个新项目

      $ oc new-project <project_name>
    2. 或者,切换到现有项目:

      $ oc project <project_name>
  9. 指定要与 Operator 搭配使用的服务帐户。

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

      $ oc create -f deploy/service_account.yaml
  10. 为 Operator 指定角色名称。

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

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

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

      metadata:
          name: amq-broker-operator-rolebinding
      subjects:
          kind: ServiceAccount
          name: amq-broker-controller-manager
      roleRef:
          kind: Role
          name: amq-broker-operator-role
    3. 在项目中创建角色绑定。

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

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

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

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

    注意

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

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

      - name: WATCH_NAMESPACE
        value: "*"
      # valueFrom:
      #   fieldRef:
      #     fieldPath: metadata.namespace
      注意

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

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

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

      Subjects:
      - kind: ServiceAccount
        name: amq-broker-controller-manager
        namespace: operator-project
      注意

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

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

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

      $ oc create -f deploy/cluster_role_binding.yaml

在以下步骤中,您可以在项目中部署 Operator。

3.2.2. 使用 CLI 部署 Operator

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

先决条件

  • 您必须已为 Operator 部署准备了 OpenShift 项目。请参阅 第 3.2.1 节 “准备部署 Operator”
  • 从 AMQ Broker 7.3 开始,您可以使用 Red Hat Ecosystem Catalog 的新版本来访问容器镜像。此新版本的 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
  2. 切换到您之前为 Operator 部署准备的项目。例如:

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

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

    1. 部署主代理 CRD。

      $ oc create -f deploy/crds/broker_activemqartemis_crd.yaml
    2. 部署地址 CRD。

      $ oc create -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    3. 部署 scaledown 控制器 CRD。

      $ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
    4. 部署安全 CRD:

      $ oc create -f deploy/crds/broker_activemqartemissecurity_crd.yaml
  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>
  6. 在您下载和提取的 Operator 归档的部署目录中,打开 operator.yaml 文件。确保 spec.containers.image 属性的值与 Operator 的版本 7.11.7-opr-2 对应,如下所示。

    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:d5c10ee9a342d7fd59bdd3cfae25029548f5081c985c9bdf5656dbd5e8877e0e
    注意

    operator.yaml 文件中,Operator 使用由 安全哈希算法 (SHA)值表示的镜像。注释行(以数字符号(DSL)符号开头),表示 SHA 值与特定容器镜像标签对应。

  7. 部署 Operator。

    $ oc create -f deploy/operator.yaml

    在 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}

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

注意

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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.