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 时,任何现有数据都会丢失。有关置备持久性存储的更多信息,请参阅:
- 了解持久性存储 (OpenShift Container Platform 4.5)
流程
在 OpenShift 命令行界面(CLI)中,以集群管理员身份登录 OpenShift。例如:
$ oc login -u system:admin
切换到之前为 Operator 部署准备的项目。例如:
$ oc project <project_name>
切换到之前提取 Operator 安装存档时创建的目录。例如:
$ cd ~/broker/operator/amq-broker-operator-7.9.3-ocp-install-examples
部署 Operator 中包含的 CRD。在部署和启动 Operator 之前,您必须在 OpenShift 集群中安装 CRD。
部署主代理 CRD。
$ oc create -f deploy/crds/broker_activemqartemis_crd.yaml
部署地址 CRD。
$ oc create -f deploy/crds/broker_activemqartemisaddress_crd.yaml
部署 scaledown controller CRD。
$ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
将与红帽生态系统目录中用于身份验证的帐户关联的 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>
在您下载并提取的 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 值与特定的容器镜像标签对应。通过选择性地编辑
operator.yaml
文件的WATCH_NAMESPACE
部分,确定 Operator 会监视哪些命名空间。要部署 Operator 来监视活跃命名空间,请不要编辑以下部分:
- name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace
部署 Operator 以监视所有命名空间:
- name: WATCH_NAMESPACE value: '*'
部署 Operator 以监视多个命名空间,如
namespace1
和namespace2
:- name: WATCH_NAMESPACE value: 'namespace1,namespace2'
注意如果您之前使用 Operator 的早期版本部署代理,并且希望部署 Operator 以监视多个命名空间,请参阅 升级前。
部署 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。
其它资源
- 有关安装使用 OperatorHub 图形界面的 AMQ Broker Operator 的替代方法,请参阅 第 3.3 节 “使用 OperatorHub 安装 Operator”。