Istio VirtualService HTTPRewrite полностью игнорируется - PullRequest
0 голосов
/ 07 июля 2019

Я проверил журналы контейнеров с коляской istio-proxy в модулях развертывания api-service и в развертывании istio-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 Ответ

1 голос
/ 07 июля 2019

Я обнаружил, что перенаправление действительно работает, но коляска посланника не отражает это в своих журналах, как я предполагал.

Я сделал вывод из документов что коляска посланника будет записывать переписанный путь (см. Описание поля rewrite ):

Будет выполнена перезаписьперед пересылкой.

Я проверил журналы доступа для моего веб-сервера, работающего в моем развертывании api-service, и обнаружил некорректные запросы: GET //some-resource/123/ (из /api/some-resource/123/).

Поворотылишние / (из rewrite.url: /) вызывали 404 ошибки. Комментарий Github от проблемы istio представил исправление: пробел.

Поскольку пользователь предупреждает, неясно, предназначено ли это поведение.

...