3.2.2. 使用 CLI 部署 Operator

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

先决条件

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

    如果在自定义资源中指定了 persistent Enabled=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.9.3-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 controller CRD。

      $ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
  5. 将与红帽生态系统目录中用于身份验证的帐户关联的 pull secret 与 OpenShift 项目 的默认 、部署 者和 构建器 服务帐户链接。

    $ 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 存档的 deploy 目录中,打开 operator.yaml 文件。确保 spec.containers.image 属性的值对应于 Operator 版本 7.9.3-opr-3,如下所示。

    spec:
        template:
            spec:
                containers:
                    #image: registry.redhat.io/amq7/amq-broker-rhel8-operator:7.9
                    image: registry.redhat.io/amq7/amq-broker-rhel8-operator@sha256:851ae51685e535317486b899eb0f80c3c5236464ae35ef3f9cde740173f7286b
    注意

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

  7. 通过选择性地编辑 operator.yaml 文件的 WATCH_NAMESPACE 部分,确定 Operator 会监视哪些命名空间。

    • 要部署 Operator 来监视活跃命名空间,请不要编辑以下部分:

      - name: WATCH_NAMESPACE
        valueFrom:
          fieldRef:
            fieldPath: metadata.namespace
    • 部署 Operator 以监视所有命名空间:

      - name: WATCH_NAMESPACE
        value: '*'
    • 部署 Operator 以监视多个命名空间,如 namespace1namespace2

      - name: WATCH_NAMESPACE
        value: 'namespace1,namespace2'
    注意

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

  8. 部署 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。

其它资源