【问题标题】:Kubernetes Ingress - Pass only sub path to backend and not full pathKubernetes Ingress - 仅将子路径传递给后端,而不是完整路径
【发布时间】:2021-09-29 05:41:58
【问题描述】:

我想要一个 Ingress,它将 host.com/abc/xyz 路由到 service/xyz。 我有以下配置,但它的路由 host.com/abc/xyzservice/abc/xyz

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "30"
    appgw.ingress.kubernetes.io/request-timeout: "300"
    appgw.ingress.kubernetes.io/health-probe-status-codes: "200-399, 401"
    kubernetes.io/ingress.class: azure/application-gateway
  generation: 1
  name: serviceAingress
  namespace: pantry-services
spec:
  rules:
  - host: myhost.net
    http:
      paths:
      - backend:
          serviceName: serviceA
          servicePort: 8083
        path: /abc/*
        pathType: Prefix
      - backend:
          serviceName: serviceA
          servicePort: 8083
        path: /abc
        pathType: Prefix

如何将 myhost.net/abc/* 路由到 service/* ? abc 不应包含在后端调用中。我也尝试将 pathType 作为 ImplementationSpecific

【问题讨论】:

  • GitHub here 上的 Azure 应用程序网关入口文档中描述了类似的想法。这可能会帮助您找到解决方案。

标签: kubernetes kubernetes-ingress azure-application-gateway


【解决方案1】:

【讨论】:

    【解决方案2】:

    如果您的服务 是主机名。基于名称的虚拟主机支持将 HTTP 流量路由到同一 IP 地址的多个主机名。 建议您使用以下内容。 yaml代码

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: name-virtual-host-ingress
    spec:
      rules:
      - host: myhost.net
        http:
          paths:
          - pathType: Prefix
            path: "abc/*"
            backend:
              service:
                name: service1
                port:
                  number: 80
      - host: service
        http:
          paths:
          - pathType: Prefix
            path: "/*"
            backend:
              service:
                name: service2
                port:
                  number: 80
    

    如果您创建的 Ingress 资源没有在规则中定义任何主机,则可以匹配到您的 Ingress 控制器 IP 地址的任何 Web 流量,而无需基于名称的虚拟主机。

    例如,以下 Ingress 将对 myhost.net/abc/ 请求的流量路由到 service1,将 service/* 请求到 service2

    参考:https://kubernetes.io/docs/concepts/services-networking/ingress/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多