【问题标题】:Istio-ingress behind Google cloud Layer 7 load balancer谷歌云第 7 层负载均衡器背后的 Istio-ingress
【发布时间】:2019-10-22 13:46:56
【问题描述】:

我面临的问题是,我的 istio-ingressgateway 在网络层负载均衡器(L4 负载均衡器或 TCP 负载均衡器)上完美运行文件,但是当我通过在后端服务附加 nodePort 将 istio-ingressgateway 连接到 Layer7 负载均衡器时。之后http 到 https 重定向无法正常工作,即使我使用 https 协议请求,它也总是给出响应代码 301。

【问题讨论】:

  • 您使用 GKE 吗?还是自定义 K8S 部署?
  • 我正在使用 GKE。 @guillaumeblaquiere
  • 你使用 istio 插件吗?还是你自己安装 Istio?
  • 我自己安装的@guillaumeblaquiere
  • 只是为了理解好。你有一个由 Istio 定义的入口网关。此网关在 GCP 上生成了一个 TCP 负载平衡器。您已将服务公开为 NodePort,定义了 istio 网关和 istio 虚拟服务,您可以通过 TCP 负载均衡器访问您的服务。现在,您要创建一个 HTTP 负载均衡器,将实例组定义为后端并通过 HTTP 和 HTTPS 访问它。我对么?后端是健康的,但响应是 301。你如何测试你的 HTTP 负载均衡器?卷曲?通过浏览器?

标签: google-cloud-platform istio google-cloud-load-balancer


【解决方案1】:

我成功配置了相同的架构。这里是重现的步骤:

  • 部署 GKE 集群。可以使用 Istio,也可以使用之后安装的 istio。
  • 为 http:获取 Istio-ingressgateway 节点端口:
kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}'
  • 创建全局负载均衡器
  • 创建后端服务并选择您的集群 InstanceGroup。
  • 将 istio-ingressgateway 节点端口设置为端口
  • 在 TCP 模式下,在相同的节点端口值上创建健康检查
  • 配置你的 URL 路径
  • 验证并等待 5-10 分钟,让运行状况检查时间来验证您的配置并路由流量

现在,您可以通过具有全局负载均衡器的 Istio Nodeport 访问您的 K8S 集群。在 Istio 上部署服务,您可以通过 Global Loadbalancer 访问它。

【讨论】:

  • 您是否尝试过使用 L7 负载均衡器进行 https 重定向?因为我能够将应用程序与 L7 负载均衡器连接,但 HTTPS 重定向无法正常工作
  • @gguillaume-blaquiere 为什么健康检查必须在 TCP 模式下?我们不能使用 HTTP 健康检查吗?我用 HTTP 健康检查尝试了你的方法,检查 istio-ingressgateway 的 /healthz/ready 路径,健康检查通过但应用返回 404。
【解决方案2】:

GitHub有问题,请查看:https://github.com/istio/istio/issues/17980

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2020-12-31
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    相关资源
    最近更新 更多