在 Red Hat® OpenShift®IBM® MQ Operator 集群上使用 创建队列管理器后,可通过连接该管理器并发送和接收消息来测试其运行状态。 本任务将指导您如何通过在集群外部的机器(如您的笔记本电脑)上运行示例 IBM MQ 程序来建立连接。
开始之前
要完成此示例,必须首先完成以下先决条件:
- 安装 IBM MQ client。 您需要 amqsputc 和 amqsgetc 命令,这些命令可以作为 IBM MQ client 的一部分进行安装,如下所示:
- 确保将必需的密钥和证书文件下载到机器上的某个目录,并确保您知道密钥库密码。 例如,这些文件是在 《使用OpenSSL创建自签名PKI 》中创建的:
- example-app1.p12
- example-app1-chain.crt (仅当您正在使用 arm64 Apple Mac时)
- 将配置了TLS的队列管理器部署到OCP集群,例如通过执行示例:配置具有相互TLS身份验证的队列管理器中的步骤
关于本任务
此示例使用在 Red Hat OpenShift 集群外部机器(如您的笔记本电脑)上运行的 IBM MQ 示例程序,连接到已配置TLS的 QueueManager ,并执行消息的发送与接收操作。
过程
- 确认队列管理器正在运行
在继续操作前,请确认队列管理器处于
Running 状态。 例如:
oc get qmgr EXAMPLEQM
- 查找队列管理器主机名
使用以下命令从 OCP 集群外部使用自动创建的路径来查找队列管理器的队列管理器标准主机名:
exampleqm-ibm-mq-qm:
oc get route exampleqm-ibm-mq-qm --template="{{.spec.host}}"
- 创建 客户通道定义 IBM MQ 表 (CCDT)
使用以下内容创建名为
ccdt.json 的文件:
{
"channel":
[
{
"name": "MTLS.SVRCONN",
"clientConnection":
{
"connection":
[
{
"host": "HOSTNAME FROM PREVIOUS STEP",
"port": 443
}
],
"queueManager": "EXAMPLEQM"
},
"transmissionSecurity":
{
"cipherSpecification": "ANY_TLS13",
"certificateLabel": "example-app1"
},
"type": "clientConnection"
}
]
}
连接使用端口 443 ,因为这是 Red Hat OpenShift Container Platform 路由器正在侦听的端口。 流量将转发到端口 1414 上的队列管理器。
若您使用了不同的频道名称,也请一并调整。 相互 TLS 示例使用名为 MTLS.SVRCONN
有关更多详细信息,请参阅 配置 JSON 格式 CCDT
- 创建客户机 INI 文件以配置连接详细信息
在当前目录中创建名为
mqclient.ini 的文件。 此文件将由
amqsputc 和
amqsgetc读取。
Channels:
ChannelDefinitionDirectory=.
ChannelDefinitionFile=ccdt.json
SSL:
OutboundSNI=HOSTNAME
SSLKeyRepository=example-app1.p12
SSLKeyRepositoryPassword=PASSWORD USED WHEN CREATING THE p12 FILE
将 的值 SSLKeyRepositoryPassword 设置为创建 PKCS#12 文件时选择的密码。 还有其他方法可以设置密钥库密码,包括使用加密密码。 有关更多信息,请参阅为 IBM MQ MQI client ...提供密钥库密码。 AIX®, Linux, and Windows
请注意, Red Hat OpenShift Container Platform Router 使用 SNI 将请求路由到 IBM MQ 队列管理器。 该 OutboundSNI=HOSTNAME 属性确保客户端 IBM MQ 包含路由器所需的信息,以便其能够处理由配置的默认 IBM MQ Operator路由。 有关详细信息,请参阅 《配置路由以从 Red Hat OpenShift 集群外部连接队列管理器 》。
- 若您使用的是 arm64MacApple ,则需额外配置一个环境变量。
export MQSSLTRUSTSTORE=example-app1-chain.crt
此文件包含完整的证书链,包括应用程序和 CA 证书。
- 将消息放入队列
运行以下命令:
/opt/mqm/samp/bin/amqsputc EXAMPLE.QUEUE EXAMPLEQM
如果成功连接到队列管理器,那么将输出以下响应:
target queue is EXAMPLE.QUEUE
通过输入一些文本,然后每次按 Enter 键,将多条消息放入队列。
要完成此操作,请按两次 Enter 键。
- 从队列中检索消息
运行以下命令:
/opt/mqm/samp/bin/amqsgetc EXAMPLE.QUEUE EXAMPLEQM
您在上一步骤添加的消息已被消费,并已输出。 几秒钟后,命令退出。
结果
您测试了启用TLS的队列管理器连接,并证明能够从客户端安全地向队列管理器发送和获取消息。