如何在 Openshift v3 中将请求映射到 Pod 中的多个端口?



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

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

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

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

解决方案 (?(:

  • 在相关线程中建议使用入口控制器,但似乎只能由群集管理员设置。
  • 我可以使用两个路由并为每个路由设置一个单独的 cookie,但这似乎不对 - 为什么我必须对 2 个域使用 2 个 cookie,而本质上只有一个具有单个身份验证的域?
  • 切换到令牌身份验证?

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

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

最新更新