Istio VirtualService HTTPRewrite被完全忽略

时间:2019-07-07 17:45:18

标签: url-rewriting istio

我检查了istio-proxy部署吊舱和默认api-service部署中的istio-ingressgateway边车集装箱的日志。从Ingressgateway到我的服务的路径保持不变。我希望请求看起来像这样:

Client: 'GET mysite.com/api/some-resource/123/'
  ||
  ||
  VV
Ingressgateway: 'GET mysite.com/api/some-resource/123/'
  ||
  ||
  VV
VirtualService: rewrite.uri: /
  ||
  ||
  VV
api-service: 'GET mysite.com/some-resource/123/'

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-route-rules
spec:
  hosts:
    - mysite.com
  gateways:
    - istio-system/mysite-gateway
  http:
    - match:
      - uri:
          prefix: /api
      rewrite:
        uri: /
      route:
        - destination:
            host: api-service.default.svc.cluster.local
            port:
              number: 7000
    - route:
        - destination:
            host: web-experience.default.svc.cluster.local
            port:
              number: 9000

1 个答案:

答案 0 :(得分:1)

我发现重定向实际上是有效的,但是特使同伴没有像我想象的那样在其日志中反映出来。

我从the docs推断出,特使边车将记录重写的路径(请查看rewrite 字段说明):< / p>

  

将在转发之前执行重写。

我检查了在api-service部署中运行的Web服务器的访问日志,发现格式错误的请求:GET //some-resource/123/(来自/api/some-resource/123/)。

结果(来自/的额外rewrite.url: /导致404错误。 A Github comment from an istio issue提出了一个解决方案:空白。

当用户警告时,不确定是否有此行为。