3.2. 使用 CLI 安装 Operator
每个 Operator 版本都需要下载最新的 AMQ Broker 7.12.3 Operator 安装和示例文件,如下所述。
本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)在给定的 OpenShift 项目中安装和部署 AMQ Broker 7.12 的 Operator 的最新版本。在后续流程中,您可以使用此 Operator 部署一些代理实例。
- 有关安装使用 OperatorHub 图形界面的 AMQ Broker Operator 的替代方法,请参考 第 3.3 节 “使用 OperatorHub 安装 Operator”。
- 要了解 升级 基于 Operator 的代理部署的信息,请参阅 第 6 章 升级基于 Operator 的代理部署。
3.2.1. 准备部署 Operator
在使用 CLI 部署 Operator 之前,您必须下载 Operator 安装文件并准备部署。
流程
- 在网页浏览器中,导航到 AMQ Broker 7.12.3 版本的 Software Downloads 页面。
-
确保 Version 下拉列表的值设置为
7.12.3
,并且选择了 Releases 选项卡。 在最新的 AMQ Broker 7.12.3 Operator 安装和示例文件旁边,单击 Download。
下载
amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip
压缩存档会自动开始。将存档移到您选择的目录中。以下示例将存档移到名为
~/broker/operator
的目录中。$ mkdir ~/broker/operator $ mv amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip ~/broker/operator
在您选择的目录中,提取存档的内容。例如:
$ cd ~/broker/operator $ unzip amq-broker-operator-7.12.3-ocp-install-examples-rhel8.zip
切换到提取存档时创建的目录。例如:
$ cd amq-broker-operator-7.12.3-ocp-install-examples
以集群管理员身份登录 OpenShift Container Platform。例如:
$ oc login -u system:admin
指定您要在其中安装 Operator 的项目。您可以创建新项目或切换到现有项目。
创建一个新项目
$ oc new-project <project_name>
或者,切换到现有项目:
$ oc project <project_name>
指定要与 Operator 搭配使用的服务帐户。
-
在您提取的 Operator 归档的
deploy
目录中,打开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 归档的 deploy 目录中,打开
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 归档的 deploy 目录中,打开
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 归档的 deploy 目录中,打开
在以下步骤中,您将在项目中部署 Operator。
3.2.2. 使用 CLI 部署 Operator
本节中的步骤演示了如何使用 OpenShift 命令行界面(CLI)在 OpenShift 项目中为 AMQ Broker 7.12 部署最新版本的 Operator。
先决条件
- 您必须已经为 Operator 部署准备了 OpenShift 项目。请参阅 第 3.2.1 节 “准备部署 Operator”。
- 从 AMQ Broker 7.3 开始,您可以使用 Red Hat Ecosystem Catalog 的新版本来访问容器镜像。这个新版本的 registry 要求您成为经过身份验证的用户,然后才能访问镜像。在按照本节中的步骤操作前,您必须先完成 Red Hat Container Registry Authentication 中所述的步骤。
如果要使用持久性存储部署代理,且没有 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.12.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 控制器 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 归档的
deploy
目录中,打开operator.yaml
文件。确保spec.containers.image
属性的值与 Operator 的版本 7.12.3-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:1fd01079ad519e1a47b886893a0635491759ace2f73eda7615a9c8c2f454ba89
注意在
operator.yaml
文件中,Operator 使用一个由 Secure Hash Algorithm (SHA) 值代表的镜像。注释行以数字符号 (#
) 符号开头,注明 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”。