Istio VirtualService 重写前缀的工作方式类似于精确匹配

Ash*_*mar 1 kubernetes google-kubernetes-engine istio amazon-eks

我正在使用 istio 并在路径“/”和“/app”上运行服务,“/”和“/app”都将提供同一页面。为了实现这一点,我将“/app”上的重写规则添加到“/”,并且效果很好。

但是当我尝试点击“/app/login”时,重写不提供页面“/login”。

    - match:
      - uri:
          prefix: /app
      rewrite:
        uri: /
      route:
      - destination:
          host: app-svc
          port:
            number: 8000
Run Code Online (Sandbox Code Playgroud)

Emi*_* Gi 8

这个github 问题讨论了这种行为。您当前的规则将重写/app/login//login而不是/login. 显然重复的斜杠不会被自动忽略。现在最好的解决方案是调整您的规则,如本评论中所述:

- match:
  - uri:
      prefix: "/app/"
  - uri:
      prefix: "/app"
  rewrite:
    uri: "/"
Run Code Online (Sandbox Code Playgroud)