3.4. 创建基于 Operator 的代理部署
3.4.1. 部署基本代理实例 复制链接链接已复制到粘贴板!
以下流程演示了如何使用自定义资源(CR)实例来创建基本的代理部署。
虽然您可以通过部署多个自定义资源(CR)实例,在给定的 OpenShift 项目中创建多个代理部署,但通常在项目中创建单个代理部署,然后为地址部署多个 CR 实例。
红帽建议在不同的项目中创建代理部署。
在 AMQ Broker 7.9 中,如果要配置以下项目,您必须在首次部署 CR 前 将适当的配置添加到主代理 CR 实例中。
先决条件
您必须已安装 AMQ Broker Operator。
- 要使用 OpenShift 命令行界面(CLI)安装 AMQ Broker Operator,请参阅 第 3.2 节 “使用 CLI 安装 Operator”。
- 要使用 OperatorHub 图形界面安装 AMQ Broker Operator,请参阅 第 3.3 节 “使用 OperatorHub 安装 Operator”。
- 您应该了解 Operator 如何选择用于代理部署的代理容器镜像。如需更多信息,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。
- 从 AMQ Broker 7.3 开始,您可以使用新版本的红帽生态系统目录来访问容器镜像。这个新版本的 registry 需要您成为经过身份验证的用户,然后才能访问镜像。在按照本节中的步骤前,您必须先完成 Red Hat Container Registry Authentication 中描述的步骤。
流程
成功安装 Operator 后,Operator 正在运行并侦听与 CR 相关的更改。本示例步骤演示了如何使用 CR 实例在项目中部署基本代理。
为代理部署开始配置自定义资源(CR)实例。
使用 OpenShift 命令行界面:
以具有特权的用户身份登录 OpenShift,以在您要创建部署的项目中部署 CR。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开名为
broker_activemqartemis_cr.yaml的示例 CR 文件,该文件包含在您下载并提取的 Operator 安装存档的deploy/crs目录中。
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以在您要创建部署的项目中部署 CR。
-
根据主代理 CRD 启动一个新的 CR 实例。在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
单击 Create ActiveMQArtemis。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
对于基本的代理部署,配置可能类似如下。此配置是
broker_activemqartemis_cr.yaml示例 CR 文件的默认内容。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,在
broker_activemqartemis_cr.yaml示例 CR 文件中,image属性被设置为默认值占位符。此值表示image属性默认不指定用于部署的代理容器镜像。要了解 Operator 如何决定要使用的适当代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。注意broker_activemqartemis_cr.yaml示例 CR 使用ex-aao的命名约定。此命名规则表示 CR 是 AMQ Broker Operator 的示例 资源。AMQ Broker 基于 ActiveMQ Artemis 项目。当您部署此示例 CR 时,生成的 StatefulSet 使用名称ex-aao-s。另外,部署中的代理 Pod 直接基于 StatefulSet 名称,如ex-aao-s-0、ex-aao-so-s-1等。CR 中的应用程序名称作为 StatefulSet 上的标签出现在部署中。您可以在 Pod 选择器中使用此标签,例如:-
size属性指定要部署的代理数量。2或以上值指定集群代理部署。但是,若要部署单个代理实例,请确保该值设置为1。 部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到您要在其中创建代理部署的项目。
oc project <project_name>
$ oc project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CR 实例。
oc create -f <path/to/custom_resource_instance>.yaml
$ oc create -f <path/to/custom_resource_instance>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Web 控制台:
- 配置完 CR 后,点 Create。
在 OpenShift Container Platform Web 控制台中,单击
。您会看到一个名为 ex-aao-s的新 StatefulSet。- 单击 ex-aao-ss StatefulSet。您会看到有一个 Pod,对应于您在 CR 中定义的单个代理。
- 在 StatefulSet 中,单击 Pods 选项卡。单击 ex-aao-ss Pod。在正在运行的 Pod 的 Events 选项卡中,您会看到代理容器已经启动。Logs 选项卡显示代理本身正在运行。
要测试代理是否正常运行,请访问代理 Pod 中的 shell 来发送一些测试信息。
使用 OpenShift Container Platform Web 控制台:
-
单击
。 - 单击 ex-aao-ss Pod。
- 点击 Terminal 选项卡。
-
单击
使用 OpenShift 命令行界面:
获取项目的 Pod 名称和内部 IP 地址。
oc get pods -o wide
$ oc get pods -o wide NAME STATUS IP amq-broker-operator-54d996c Running 10.129.2.14 ex-aao-ss-0 Running 10.129.2.15Copy to Clipboard Copied! Toggle word wrap Toggle overflow 访问代理 Pod 的 shell。
oc rsh ex-aao-ss-0
$ oc rsh ex-aao-ss-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 shell 中,使用
artemis命令来发送一些测试消息。在 URL 中指定代理 Pod 的内部 IP 地址。例如:./amq-broker/bin/artemis producer --url tcp://10.129.2.15:61616 --destination queue://demoQueue
sh-4.2$ ./amq-broker/bin/artemis producer --url tcp://10.129.2.15:61616 --destination queue://demoQueueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上述命令会在代理上自动创建一个名为
demoQueue的队列,并将默认数量的 1000 条消息发送到队列。您应该看到类似如下的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 有关主代理自定义资源(CR)的完整配置引用,请参阅 第 8.1 节 “自定义资源配置参考”。
- 要了解如何将正在运行的代理连接到 AMQ 管理控制台,请参阅 第 5 章 连接到基于 Operator 的代理部署的 AMQ 管理控制台。