7.5.3. 创建 SSL 路由
要在 OpenShift 集群外部启用客户端应用程序以附加到代理,您需要为代理 Pod 创建 SSL 路由。您只能向外部客户端公开支持 SSL 的路由,因为 OpenShift 路由器需要 Server Name Indication(SNI)向正确的服务发送流量。
当您使用应用程序模板在 OpenShift Container Platform 上部署代理时,您可以使用 AMQ_PROTOCOL
模板参数在以逗号分隔的列表中指定代理使用的消息传递协议。可用选项包括 amqp
、mqtt
、Openwire
、stomp
和 hornetq
。如果没有指定任何协议,则所有协议都可用。
对于代理使用的每个消息传递协议,OpenShift 会在代理 Pod 上公开专用端口。另外,OpenShift 会自动创建 多个协议端口。OpenShift 外部的客户端应用程序始终使用多个,所有协议端口都连接到代理,无论它们正在使用的支持的协议是什么。
与所有协议端口的连接都是通过 OpenShift 自动创建的服务,以及您创建的 SSL 路由。代理 Pod 中的无头服务提供了对其他协议特定端口的访问,该端口没有他们自己的服务和路由,供客户端直接访问。
OpenShift 为各种 AMQ Broker 传输协议公开的端口显示在下表中。代理侦听 OpenShift 集群中流量的非 SSL 端口。如果您使用基于 SSL 的(即 *-ssl.yaml
)模板创建部署,代理会侦听来自 OpenShift 之外的客户端流量的 SSL 启用端口。
AMQ Broker 传输协议 | 默认端口 |
---|---|
所有协议(OpenWire、AMQP、STOMP、MQTT 和 HornetQ) | 61616 |
所有协议 -SSL(OpenWire AMQP、STOMP、MQTT 和 HornetQ) | 61617 |
AMQP | 5672 |
AMQP(SSL) | 5671 |
MQTT | 1883 |
MQTT (SSL) | 8883 |
STOMP | 61613 |
STOMP(SSL) | 61612 |
以下是在代理 Pod 上创建 SSL 路由时需要注意的一些事项:
当您创建路由时,请将 TLS 终止 设置为 Passthrough 转发到 AMQ Broker 的所有通信,而无需 OpenShift 路由器解密并重新发送它。
注意常规 HTTP 流量不需要 TLS 透传路由,因为 OpenShift 路由器使用
HAProxy
,即 HTTP 代理。当为 SSL 连接设置代理 URL 时,外部代理客户端必须指定 OpenShift 路由器端口(443)。当客户端连接指定 OpenShift 路由器端口时,路由器决定了客户端流量应定向到的代理 Pod 上的相应端口。
注意默认情况下,OpenShift 路由器使用端口 443。但是,根据为
ROUTER_SERVICE_HTTPS_PORT
环境变量指定的值,路由器可能会配置为使用不同的端口号。如需更多信息,请参阅 OpenShift Container Platform 路由。在 Pod 重启或升级时,在代理 URL 中包含故障转移协议会保留客户端连接,或者在路由器上发生中断。
前面的两个设置都如下例所示。
... factory.setBrokerURL("failover://ssl://<broker-pod-route-name>:443"); ...
... factory.setBrokerURL("failover://ssl://<broker-pod-route-name>:443"); ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关部署支持 SSL 和创建 SSL 路由以启用外部客户端访问的代理的完整示例,请参阅使用 SSL 部署基本代理。
- 有关为集群代理创建路由示例,以连接到其 AMQ Broker 管理控制台的实例,请参阅为 AMQ Broker 管理控制台创建路由。