7.4.3. 部署并启动代理应用程序
创建代理应用程序后,您需要进行部署。部署应用程序创建 Pod 以便代理运行。
步骤
- 在 OpenShift Container Platform Web 控制台中,单击 Deployments。
- 点 broker-amq 应用程序。
单击 Deploy。
注意如果应用程序没有部署,您可以点击 Events 选项卡来检查配置。如果错误不正确,请单击 Actions 按钮来编辑部署配置。
部署代理应用程序后,检查代理 Pod 的当前状态。
- 点 DeploymentConfig。
点 broker-amq Pod,然后点 Logs 选项卡验证代理的状态。您应该会看到之前通过应用程序模板创建的队列。
如果日志显示:
- 代理正在运行,跳至此步骤的第 9 步。
-
代理日志没有加载,Pod 状态会显示
ErrImagePull或ImagePullBackOff,您的部署配置无法直接从红帽容器注册表中提取指定的代理镜像。在这种情况下,请继续这个过程的第 5 步。
要准备 Pod 用于安装代理容器镜像,请将正在运行的代理数量扩展为
0。-
点
。 -
点
。 -
在部署配置
.yaml文件中,将replicas属性的值设置为0。 -
点击
Save。 - pod 重启,零代理实例正在运行。
-
点
安装最新的代理容器镜像。
- 在 Web 浏览器中,导航到 Red Hat Container Catalog。
-
在搜索框中输入
AMQ Broker。点 Search。 根据下表中的信息,选择镜像存储库。
Expand 平台(存档) 容器镜像名称 仓库名称 OpenShift Container Platform(amd64)
用于 RHEL 8 的 AMQ Broker 或 AMQ Broker
amq7/amq-broker 或 amq7/amq-broker-rhel8
IBM Z 上的 OpenShift Container Platform(s390x)
OpenJDK 11 上的 RHEL 8 AMQ Broker
amq7/amq-broker-openjdk-11-rhel8
IBM Power Systems(ppc64le)上的 OpenShift Container Platform
OpenJDK 11 上的 RHEL 8 AMQ Broker
amq7/amq-broker-openjdk-11-rhel8
例如,对于 OpenShift Container Platform 代理容器镜像,点 AMQ Broker。这时将打开
amq7/amq-broker存储库,最新的镜像版本会自动选择。如果要更改为较早的镜像版本,请单击 Tags 选项卡,然后选择另一个版本标签。- 点 Get this Image 选项卡。
在通过 注册表令牌进行身份验证 后,请查看 Using OpenShift secrets 部分中的页面说明。以下说明描述了如何将引用添加到代理镜像,以及与 Red Hat Container Registry 中用于身份验证的帐户关联的镜像 pull secret 名称到 Pod 部署配置文件中。
例如,要在
amq-demo项目命名空间中引用broker-amq部署配置中的代理镜像和 pull secret,请包括类似如下的行:apiVersion: apps.openshift.io/v1 kind: DeploymentConfig .. metadata: name: broker-amq namespace: amq-demo .. spec: containers: name: broker-amq image: 'registry.redhat.io/amq7/amq-broker:7.8' .. imagePullSecrets: - name: {PULL-SECRET-NAME}- 点击 Save。
将最新的代理镜像版本导入到项目命名空间中。例如:
$ oc import-image amq7/amq-broker:7.8 --from=registry.redhat.io/amq7/amq-broker --confirm按照前面所述,再次编辑
broker-amq部署配置。将replicas属性的值重新设置为其原始值。代理 Pod 重启,所有正在运行的代理都引用新的代理镜像。
点击 Terminal 选项卡访问可以启动代理的 shell,并使用 CLI 来测试发送和接收消息。
sh-4.2$ ./broker/bin/artemis run sh-4.2$ ./broker/bin/artemis producer --destination queue://demoQueue Producer ActiveMQQueue[demoQueue], thread=0 Started to calculate elapsed time ... Producer ActiveMQQueue[demoQueue], thread=0 Produced: 1000 messages Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in second : 4 s Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 4584 milli seconds sh-4.2$ ./broker/bin/artemis consumer --destination queue://demoQueue Consumer:: filter = null Consumer ActiveMQQueue[demoQueue], thread=0 wait until 1000 messages are consumed Received 1000 Consumer ActiveMQQueue[demoQueue], thread=0 Consumed: 1000 messages Consumer ActiveMQQueue[demoQueue], thread=0 Consumer thread finished另外,也可使用 OpenShift 客户端使用 Pod 名称访问 shell,如下例中所示。
// Get the Pod names and internal IP Addresses $ oc get pods -o wide // Access a broker Pod by name $ oc rsh <broker-pod-name>