将 kubernetes 服务从 Loadbalancer 迁移到 Ingress

问题描述

目前,我们正在使用负载均衡器类型的服务将外部请求路由到我们的一个 Pod。

我们希望将其移至入口类型服务(已经有一个外部负载均衡器设置以及入口控制器 - 我们确实有其他 pod 配置为通过此入口控制器接收外部请求)

我们现在拥有的是以下 url,客户端使用它进行外部连接:

ws://streamevents.app.com:7080/stomp
wss://streamevents.app.com:7443/stomp

我们想把它移到

ws://streameventsv2.app.com/stomp
wss://streameventsv2.app.com/stomp

通过这种方式,我们可以释放负载均衡器 IP 并且不需要特定端口。我们确实希望同时支持两个 url - 因为客户端已经连接到旧的。我们如何才能做到这一点?

我能想到的选项(我们使用 helm):

  • 使用 Ingress 服务创建单独的图表和部署 - 旧的仍然使用 LoadBalancer
  • 相同的图表 - 以两种方式公开服务(这真的可能吗?)
  • 将当前的更改为 Ingress - 并以某种方式确保我们将请求路由到旧的 url 到新的 Ingress(如何?)

或者任何其他可能的方法

解决方法

我猜您拥有舵图,因此您可以对其进行更改。如果是这样,您可以使用 Ingress 和 LoadBalancer 服务公开您的服务。除了添加 Ingress 资源之外,您不需要对掌舵图中的任何其他资源进行任何更改。当您可以停止支持它时,您可以删除 LoadBalancer 对象。