代码之家  ›  专栏  ›  技术社区  ›  Igor Korsun

入口后端路径的句柄是否不正确?

  •  0
  • Igor Korsun  · 技术社区  · 7 年前

    我试图通过istio入口路由我的微服务,配置如下:

        apiVersion: extensions/v1beta1
        kind: Ingress
        metadata:
          name: test
          annotations:
            kubernetes.io/ingress.class: "istio"
        spec:
          rules:
          - http:
              paths:
              - path: /internal/v1.0/service
                backend:
                  serviceName: sleep
                  servicePort: 80
              - path: /external/v1.0/service
                backend:
                  serviceName: sleep
                  servicePort: 80
    

    当我测试这个配置时,从集群得到404响应。 看来istio威胁到了我作为正则表达式的路径

        → istioctl -n istio-shop get ingress-rule test-1-1
        destination: sleep.istio-shop.svc.cluster.local
        match:
          httpHeaders:
            uri:
              regex: /internal/v1.0/service
        route:
        - tags:
            servicePortNum: "80"
            tlsSecret: ""
    

    我找到的唯一解决办法就是摆脱”在服务API版本中,并使用以下内容:

    - path: /internal/v1/service
    

    结果:

        → istioctl -n istio-shop get ingress-rule test-1-3
        destination: sleep.istio-shop.svc.cluster.local
        match:
          httpHeaders:
            uri:
              exact: /external/v1/service
        route:
        - tags:
            servicePortNum: "80"
            tlsSecret: ""
    

        - path: /internal/v1.*
    

    结果:

            → istioctl -n istio-shop get ingress-rule test-1-4
            destination: sleep.istio-shop.svc.cluster.local
            match:
              httpHeaders:
                uri:
                  prefix: /external/v1
            route:
            - tags:
                servicePortNum: "80"
                tlsSecret: ""
    

    我猜是“点”作为正则表达式部分处理,而不是常规符号。

    这是一个bug吗?因为“/internal/v1.0/service”不是正则表达式

    1 回复  |  直到 7 年前
        1
  •  0
  •   Frank B    7 年前

    https://github.com/istio/pilot/blob/master/adapter/config/ingress/conversion.go#L95

    一个简单的“.”单独的字符(例如,后面没有“*”)不应映射到正则表达式。

    请在中提交错误报告 https://github.com/istio/issues/issues . 谢谢