openshift - 如何将请求映射到 Openshift v3 中 pod 中的多个端口?
问题描述
我有一个执行 http 和 ws 请求的网络应用程序。我正在尝试将其部署到 Openshift v3。因此,我需要将我的请求映射到 pod 中的端口 80 和 90。然而:
- 如相关线程中所述,路由不可能公开多个端口,因此,我不能仅根据端口将请求映射到不同的服务。
- 我尝试设置一个路由,将任何端口映射到具有多个端口的服务,但我收到警告
路由没有目标端口,但服务有多个端口。该路由将轮询服务上所有公开端口的流量
- 我不能为 http 和 ws 使用不同的路由,因为为 http 获得的会话 cookie 不会附加到 web 套接字请求。
解决方案(?):
- 在相关线程中建议使用 Ingress Controller,但似乎只能由集群管理员设置。
- 我可以使用两条路由并为每条路由设置一个单独的 cookie,但这似乎不对——为什么我必须为 2 个域使用 2 个 cookie,而实际上只有一个域和一个身份验证?
- 切换到令牌认证?
那么,我错过了什么?处理这个问题的最佳方法是什么?
解决方案
如果任何 websocket 端点位于唯一的子 URL 路径下,您可以添加第二个路由,其中包含该路由适用的子 URL 路径的路径定义。然后,您可以将该子 URL 路径下的请求路由到备用端口。除了主端口之外,您还需要对服务上的备用端口进行定义,或者为备用端口创建单独的服务。需要查看您当前的服务定义才能更具体。奇怪的是,您将在 pod 上使用端口 80 和 90,因为这意味着您正在运行容器root
,这在 OpenShift 上是不正常的做法,因为root
在容器托管平台上运行任何容器存在安全风险。
推荐阅读
- arrays - HBase 数组和 Hive
- c++ - 寻找自动生成密钥并具有线性内存消耗的小型关联数组
- java - 整数到罗马“不兼容的类型:int 无法转换为布尔值 [in MainClass.java]”
- python - 取最后 N 天的平均值,包括 NaN
- java - 动态创建基于 Id 的 MongoDB 集合
- graph - https://graph.microsoft.com/v1.0/deviceAppManagement/managedAppRegistrations 过滤 bundleId 或 packageId
- c++ - 在函数中使用 const int 大小参数创建数组会在 Visual Studio C++ 中引发错误:表达式未计算为常量
- hyperledger-fabric - 错误:在截止日期之前无法连接 URL:grpc://localhost:7051
- sed - sed 语法不适用于 Ansible shell 模块
- python - 无法使用请求从下一页抓取名称