【问题标题】:GKE ingress path mapping can't handle url paramsGKE 入口路径映射无法处理 url 参数
【发布时间】:2022-10-24 20:56:08
【问题描述】:

我在 GKE 中运行一个入口。我将大部分流量路由到一个后端,但我希望将一些呼叫路由到另一个后端。入口看起来像这样:

---
apiVersion: networking.k8s.io/v1
kind: Ingress
spec:
  rules:
    - http:
        paths:
          - backend:
              service:
                name: zone-search
                port:
                  name: external
            path: /api/v2/zones/location-search
            pathType: Prefix
    - http:
        paths:
          - backend:
              service:
                name: api-service
                port:
                  name: external
            path: /*
            pathType: ImplementationSpecific

如果我提出GET /api/v2/zones/location-search 之类的请求,它可以正常工作。

但是,如果我执行GET /api/v2/zones/location-search?foo=bar,我的请求最终会出现在 api-service 后端,而不是我预期的区域搜索。

我尝试过使用pathType: ImplementationSpecific 并同时使用path: /api/v2/zones/location-searchpath: /api/v2/zones/location-search/*,但仍然没有进展。 Google 要求通配符跟在斜杠后面,但 location-search 是端点本身,后面没有斜杠。

我还尝试使用具有相同结果的默认后端。问题似乎仍然是包含?foo=bar 的url 与我指定的路径不匹配。

我不能这样做path: /api/v2/zones/*,因为 api 中有其他端点会进入不应该的区域搜索后端。

更新

我尝试使用双引号,并删除第二个

    - http:
        paths:

并开始收到failed_to_pick_backend 错误。它最终通过更改后端服务的健康检查来解决。

我不知道健康检查问题是否意味着当区域搜索服务不健康时选择了 api 服务作为备份,或者我的两个更改之一是否解决了我最初的问题。

【问题讨论】:

  • 它绝对应该像您预期的那样工作。我会查看是否有任何其他 Ingress 影响(可能是旧版本)。还可以尝试在路径中使用双引号。

标签: google-cloud-platform google-kubernetes-engine kubernetes-ingress


【解决方案1】:

基于名称的虚拟主机支持将 HTTP 流量路由到同一 IP 地址的多个主机名。您可以使用Ingress 为多个域名、子域重用负载均衡器,并在单个 IP 地址和负载均衡器上公开多个服务。查看 simple fanoutname-based virtual hosting 示例,了解如何为这些任务配置 Ingress。

注意:始终通过 Ingress 对象修改负载均衡器的属性。直接对负载平衡资源进行更改可能会丢失或被 GKE Ingress 控制器覆盖。

另一方面 : 每个外部 HTTP(S) 负载平衡器或内部 HTTP(S) 负载平衡器都使用一个引用 one or more backend services 的 URL 映射。一个后端服务对应于入口引用的每个服务。

此外,创建一个根据请求中的 URL 路径指定路由请求规则的 Ingress。创建 Ingress 时,GKE Ingress 控制器会创建并配置外部 HTTP(S) 负载均衡器,请参阅官方 documentation

【讨论】:

  • 感谢你的回复。但是,它非常广泛,并没有解决我的具体查询。您是否知道在哪里可以找到有关如何处理路径的更详细文档?标准文档不涉及 url 参数的主题。
猜你喜欢
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多