4.7.4.2. 从外部客户端连接到代理

当您向外部客户端公开接收器(即,通过将 expose 参数的值设置为 true)时,Operator 会自动为部署中的每个代理 Pod 创建专用服务和路由。要查看给定代理 Pod 上配置的路由,请在 OpenShift Container Platform Web 控制台中选择 Pod 并点击 Routes 选项卡。

外部客户端可以通过指定为代理 Pod 创建的路由的完整主机名来连接到代理。您可以使用基本的 curl 命令测试对此完整主机名的外部访问。例如:

$ curl https://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain

Route 的完整主机名必须解析到托管 OpenShift 路由器的节点。OpenShift 路由器使用主机名来确定流量在 OpenShift 内部网络内的发送位置。

默认情况下,OpenShift 路由器针对受保护(即 SSL 加密)流量和端口 443 侦听端口 80。对于 HTTP 连接,如果您指定了安全连接 URL(即 https),如果指定了非安全连接 URL(即 http),路由器会自动将流量定向到端口 443。

对于非 HTTP 连接:

  • 客户端必须明确指定端口号(如端口 443)作为连接 URL 的一部分。
  • 对于单向 TLS,客户端必须指定其信任存储的路径和对应的密码,作为连接 URL 的一部分。
  • 对于双向 TLS,客户端 还必须指定其 密钥 存储的路径和对应的密码,作为连接 URL 的一部分。

对于支持的消息传递代理,一些客户端连接 URL 示例如下所示。

外部核心客户端,使用单向 TLS

tcp://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?useTopologyForLoadBalancing=false&sslEnabled=true \
&trustStorePath=~/client.ts&trustStorePassword=<password>

注意

在连接 URL 中,使用TopologyForLoadBalancing 键明确设置为 false,因为外部核心客户端无法使用代理返回的拓扑信息。如果此键设为 true,或者您没有指定值,则会产生 DEBUG 日志消息。

外部核心客户端,使用双向 TLS

tcp://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?useTopologyForLoadBalancing=false&sslEnabled=true \
&keyStorePath=~/client.ks&keyStorePassword=<password> \
&trustStorePath=~/client.ts&trustStorePassword=<password>

外部 OpenWire 客户端,使用单向 TLS

ssl://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443"

# Also, specify the following JVM flags
-Djavax.net.ssl.trustStore=~/client.ts -Djavax.net.ssl.trustStorePassword=<password>

外部 OpenWire 客户端,使用双向 TLS

ssl://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443"

# Also, specify the following JVM flags
-Djavax.net.ssl.keyStore=~/client.ks -Djavax.net.ssl.keyStorePassword=<password> \
-Djavax.net.ssl.trustStore=~/client.ts -Djavax.net.ssl.trustStorePassword=<password>

使用单向 TLS 的外部 AMQP 客户端

amqps://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?transport.verifyHost=true \
&transport.trustStoreLocation=~/client.ts&transport.trustStorePassword=<password>

使用双向 TLS 的外部 AMQP 客户端

amqps://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?transport.verifyHost=true \
&transport.keyStoreLocation=~/client.ks&transport.keyStorePassword=<password> \
&transport.trustStoreLocation=~/client.ts&transport.trustStorePassword=<password>