【问题标题】:Query params match in Istio Virtual ServiceIstio 虚拟服务中的查询参数匹配
【发布时间】:2021-10-18 08:54:29
【问题描述】:

在 Istio 虚拟服务中,我有这个工作匹配块:

 - match:
   - uri:
       prefix: "/whatever"

一切正常。但是现在,除了 uri,我还需要匹配 2 个查询参数。我试过这个:

 - match:
   - uri:
       prefix: "/whatever"
     queryParams:
       app-id:
         exact: "whatever"
       token:
         exact: "thisisthetoken"

它不起作用。它不会重定向到目的地。我做错了什么?

【问题讨论】:

  • 失败的请求是什么?
  • 请求GET /whatever?app-id=whatever&token=thisisthetoken 不会重定向到目的地
  • 是的。那是正确的。诡异的。您是否在输入服务的 FQDN?如果您只输入名称,有时会带来麻烦。

标签: kubernetes istio


【解决方案1】:

在我的 virtualservice.yaml 中,我直接在“-match”部分下定义了 queryParams,它运行良好。

如果我在 uri 下定义 queryParams 并保存更改,它会自动移出 uri 部分,之后就不起作用了。

这可能意味着 queryParams 对所有 uri 都是全局的,而不是针对特定 uri 的

【讨论】:

  • http:-匹配:-queryParams:key:exact:"value1" route:-destination:. . . .
【解决方案2】:

如果您查看 Istio 文档的 HTTPMatchRequest 部分,描述 queryParams 的表格行说:

注意:目前不支持prefix匹配。

所以你去。您无法将查询参数与prefix HTTP 匹配。

【讨论】:

  • 我没有将查询参数与前缀匹配,而是与exact
  • match.uri.prefix - 这个前缀匹配,不是match.uri.queryParams.*.exact
  • 那么,如果我使用match.uri.exact,它应该工作吗?
  • 继续尝试。如果还有问题请回复。
猜你喜欢
  • 1970-01-01
  • 2019-09-14
  • 2020-09-07
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2019-07-19
相关资源
最近更新 更多