4.6.4.2. 从外部客户端连接到代理
当您向外部客户端公开接受者(即,将 expose
参数的值设置为 true
时,会为部署中的每个代理 Pod 自动创建专用服务和路由。要查看给定代理 Pod 上配置的路由,请在 OpenShift Container Platform web 控制台中选择 Pod 并点 Routes 选项卡。
外部客户端可以通过指定为代理 Pod 创建的 Route 的完整主机名来连接到代理。您可以使用基本的 curl
命令测试对这个完整主机名的外部访问权限。例如:
$ curl https://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain
Route 的完整主机名必须解析为托管 OpenShift 路由器的节点。OpenShift 路由器使用主机名来确定在 OpenShift 内部网络内发送流量的位置。
默认情况下,OpenShift 路由器侦听端口 80 以获得安全保护(即非 SSL)流量和端口 443(即 SSL 加密)流量和端口 443。对于 HTTP 连接,如果您指定了一个安全连接 URL(即 https
),路由器会自动将流量定向到端口 443(即 http
)。
对于非 HTTP 连接:
- 客户端必须明确指定端口号(例如,端口 443)作为连接 URL 的一部分。
- 对于单向 TLS,客户端必须指定到其信任存储和相应的密码的路径,作为连接 URL 的一部分。
- 对于双向 TLS,客户端 还必须 指定其密钥存储和对应的密码的路径,作为连接 URL 的一部分。
下方显示了一些客户端连接 URL 的示例,如受支持的消息传递 protcols。
外部核心客户端,使用单向 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
,因为外部 Core 客户端无法使用代理返回的拓扑信息。如果此键设为 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>
使用单向 TLS 的外部 OpenWire 客户端
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>
使用双向 TLS 的外部 OpenWire 客户端
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>