3.2. 使用 CLI 安装 Operator
每个 Operator 发行版本都要求您下载最新的 AMQ Broker 7.11.7 Operator 安装和示例文件,如下所述。
本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)在给定的 OpenShift 项目中安装和部署 AMQ Broker 7.11 的 Operator 的最新版本。在后续流程中,您可以使用此 Operator 部署一些代理实例。
- 有关安装使用 OperatorHub 图形界面的 AMQ Broker Operator 的替代方法,请参阅 第 3.3 节 “使用 OperatorHub 安装 Operator”。
- 要了解 升级 基于 Operator 的代理部署的信息,请参阅 第 6 章 升级基于 Operator 的代理部署。
3.2.1. 准备部署 Operator
在使用 CLI 部署 Operator 前,您必须下载 Operator 安装文件并准备部署。
流程
- 在 Web 浏览器中,导航到 AMQ Broker 7.11.7 发行版本的 Software Downloads 页面。
-
确保 Version 下拉列表的值设置为
7.11.7
,并选择了 Patches 选项卡。 在最新的 AMQ Broker 7.11.7 Operator 安装和示例文件旁边,单击 Download。
下载
amq-broker-operator-7.11.7-ocp-install-examples.zip
压缩存档会自动开始。将存档移动到您选择的目录中。以下示例将存档移到名为
~/broker/operator
的目录。$ mkdir ~/broker/operator $ mv amq-broker-operator-7.11.7-ocp-install-examples.zip ~/broker/operator
在您选择的目录中,提取存档的内容。例如:
$ cd ~/broker/operator $ unzip amq-broker-operator-7.11.7-ocp-install-examples.zip
切换到提取存档时创建的目录。例如:
$ cd amq-broker-operator-7.11.7-ocp-install-examples
以集群管理员身份登录 OpenShift Container Platform。例如:
$ oc login -u system:admin
指定要在其中安装 Operator 的项目。您可以创建新项目或切换到现有项目。
创建一个新项目
$ oc new-project <project_name>
或者,切换到现有项目:
$ oc project <project_name>
指定要与 Operator 搭配使用的服务帐户。
-
在您提取的 Operator 归档的部署目录中,打开
service_account.yaml
文件。 -
确保
kind
元素设为ServiceAccount
。 -
如果要更改默认服务帐户名称,在
metadata
部分中,将amq-broker-controller-manager
替换为自定义名称。 在项目中创建服务帐户。
$ oc create -f deploy/service_account.yaml
-
在您提取的 Operator 归档的部署目录中,打开
为 Operator 指定角色名称。
-
打开
role.yaml
文件。此文件指定 Operator 可以使用和修改的资源。 -
确保
kind
元素设为Role
。 -
如果要更改默认角色名称,在
metadata
部分中,将amq-broker-operator-role
替换为自定义名称。 在项目中创建角色。
$ oc create -f deploy/role.yaml
-
打开
为 Operator 指定角色绑定。角色绑定会根据您指定的名称将之前创建的服务帐户绑定到 Operator 角色。
-
打开
role_binding.yaml
文件。 确保
ServiceAccount
和Role
的名称
值与service_account.yaml
和role.yaml
文件中指定的值匹配。例如:metadata: name: amq-broker-operator-rolebinding subjects: kind: ServiceAccount name: amq-broker-controller-manager roleRef: kind: Role name: amq-broker-operator-role
在项目中创建角色绑定。
$ oc create -f deploy/role_binding.yaml
-
打开
为 Operator 指定领导选举角色绑定。角色绑定会根据您指定的名称将之前创建的服务帐户绑定到领导选举角色。
为 Operator 创建领导选举角色。
$ oc create -f deploy/election_role.yaml
在项目中创建领导选举角色绑定。
$ oc create -f deploy/election_role_binding.yaml
(可选) 如果您希望 Operator 监视多个命名空间,请完成以下步骤:
注意如果 OpenShift Container Platform 集群已经包含为 AMQ Broker 安装的 Operator,您必须确保新 Operator 不会监视与现有 Operator 相同的命名空间。有关如何识别现有 Operator 监视的命名空间的详情,请参考 识别现有 Operator 监视的命名空间。
-
在您下载和提取的 Operator 归档的部署目录中,打开
operator_yaml
文件。 如果您希望 Operator 监控集群中的所有命名空间,在
WATCH_NAMESPACE
部分,添加一个value
属性,并将值设置为星号。注释掉WATCH_NAMESPACE
部分中的现有属性。例如:- name: WATCH_NAMESPACE value: "*" # valueFrom: # fieldRef: # fieldPath: metadata.namespace
注意为了避免冲突,请确保多个 Operator 不会监视同一命名空间。例如,如果您部署 Operator 以监视 集群中的所有命名空间,则无法部署另一个 Operator 来监视单个命名空间。如果 Operator 已在集群中部署,您可以指定新 Operator 监视的命名空间列表,如以下步骤所述。
如果您希望 Operator 观察集群中的多个命名空间,但不是全部命名空间,请在
WATCH_NAMESPACE
部分指定一个命名空间列表。确保您排除了现有 Operator 监视的任何命名空间。例如:- name: WATCH_NAMESPACE value: "namespace1, namespace2"`.
-
在您下载和提取的 Operator 归档的部署目录中,打开
cluster_role_binding.yaml
文件。 在 Subjects 部分中,指定与您要 部署 Operator 的 OpenShift Container Platform 项目对应的命名空间。例如:
Subjects: - kind: ServiceAccount name: amq-broker-controller-manager namespace: operator-project
注意如果您之前使用早期版本的 Operator 部署代理,并希望部署 Operator 以观察多个命名空间,请参阅 升级前。
在项目中创建集群角色。
$ oc create -f deploy/cluster_role.yaml
在项目中创建集群角色绑定。
$ oc create -f deploy/cluster_role_binding.yaml
-
在您下载和提取的 Operator 归档的部署目录中,打开
在以下步骤中,您可以在项目中部署 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 时,任何现有数据都会丢失。有关置备持久性存储的更多信息,请参阅:
流程
在 OpenShift 命令行界面(CLI)中,以集群管理员身份登录 OpenShift。例如:
$ oc login -u system:admin
切换到您之前为 Operator 部署准备的项目。例如:
$ oc project <project_name>
切换到之前提取 Operator 安装存档时创建的目录。例如:
$ cd ~/broker/operator/amq-broker-operator-7.11.7-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 控制器 CRD。
$ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
部署安全 CRD:
$ oc create -f deploy/crds/broker_activemqartemissecurity_crd.yaml
将与 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>
在您下载和提取的 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 值与特定容器镜像标签对应。部署 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”。