Istio queryParams 总是返回 truthy

Istio queryParams always returning truthy

设置 istio 和基本的 bookinfo 应用程序

这样设置虚拟服务: 一个 headers:

kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: bookinfo
spec:
  hosts:
    - '*'
  gateways:
    - bookinfo-gateway
  http:
    - match:
        - headers:
            apiKey:
              exact: test
      rewrite:
        uri: /productpage
      route:
        - destination:
            host: productpage
            port:
              number: 9080
  tcp: ~
  tls: ~

另一个以 queryParams 作为路由区分器:

kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: bookinfo
spec:
  hosts:
    - '*'
  gateways:
    - bookinfo-gateway
  http:
    - match:
        - headers:
            apiKey:
              exact: test
      rewrite:
        uri: /productpage
      route:
        - destination:
            host: productpage
            port:
              number: 9080
  tcp: ~
  tls: ~

出于某种原因,header 政策似乎运作良好。即,如果我不提交 header=test,istio 将 return 404.

但是,对于 queryParams,它总是 returning thruthy。难道我做错了什么?或者这是一个与 istio 相关的核心问题。

(注意:这 2 个 vs 不是 运行 并行,而是从一个到另一个的更新,所以有 2 个相似的 vs 不会有什么奇怪的)

理想情况下,我希望 queryParam 与 headers 的行为相同。

这实际上是一个准缺陷。

istio-1.2 的文档错误地说明了 1.3 中的功能。

对于那些遇到类似情况的人,升级到 istio 1。3.x 应该可以解决它。