3

我有一个执行 http 和 ws 请求的网络应用程序。我正在尝试将其部署到 Openshift v3。因此,我需要将我的请求映射到 pod 中的端口 80 和 90。然而:

  1. 相关线程中所述,路由不可能公开多个端口,因此,我不能仅根据端口将请求映射到不同的服务。
  2. 我尝试设置一个路由,将任何端口映射到具有多个端口的服务,但我收到警告

路由没有目标端口,但服务有多个端口。该路由将轮询服务上所有公开端口的流量

  1. 我不能为 http 和 ws 使用不同的路由,因为为 http 获得的会话 cookie 不会附加到 web 套接字请求。

解决方案(?):

  • 相关线程中建议使用 Ingress Controller,但似乎只能由集群管理员设置。
  • 我可以使用两条路由并为每条路由设置一个单独的 cookie,但这似乎不对——为什么我必须为 2 个域使用 2 个 cookie,而实际上只有一个域和一个身份验证?
  • 切换到令牌认证?

那么,我错过了什么?处理这个问题的最佳方法是什么?

4

1 回答 1

0

如果任何 websocket 端点位于唯一的子 URL 路径下,您可以添加第二个路由,其中​​包含该路由适用的子 URL 路径的路径定义。然后,您可以将该子 URL 路径下的请求路由到备用端口。除了主端口之外,您还需要对服务上的备用端口进行定义,或者为备用端口创建单独的服务。需要查看您当前的服务定义才能更具体。奇怪的是,您将在 pod 上使用端口 80 和 90,因为这意味着您正在运行容器root,这在 OpenShift 上是不正常的做法,因为root在容器托管平台上运行任何容器存在安全风险。

于 2018-05-10T15:57:26.923 回答