Как я могу использовать Istio для создания псевдонимов служб? - PullRequest
0 голосов
/ 11 декабря 2018

Согласно документации Istio , VirtualServices должен иметь возможность направлять запросы в «совершенно другую службу, чем была запрошена».Я хотел бы использовать эту функцию для предоставления службам различных псевдонимов в разных приложениях.

Я начинаю с определения VirtualService, например:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-vs
spec:
  hosts:
  - my-alias
  http:
  - route:
    - destination:
        host: my-service

Предполагается, что клиентский модуль вСетка должна иметь возможность отправлять запросы на http://my -alias и направлять их в my-service.В будущем я дополню это правилами соответствия, чтобы псевдоним по-разному работал для разных клиентов, но даже простая версия не работает.

Без других настроек клиент не может разрешить my-aliasчерез DNS.Я могу решить эту проблему, добавив службу k8s без селектора с именем my-alias, чтобы разрешить ее DNS, но тогда VirtualService, похоже, не выполняет перенаправление.Если я добавлю внешний хост, например google.com, в VirtualService, он успешно перенаправит все запросы на google.com на my-service.Использование полного имени хоста (my-alias.default.svc.cluster.local) не помогает.

Так что кажется, что VirtualService не позволяет мне перенаправлять трафик, связанный с другим сервисом в сетке.Ожидается ли это, и есть ли способ, которым я могу обойти это?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Проблема закончилась тем, что я использовал неназванные порты для своих сервисов, поэтому трафик никогда не попадал в меш.Согласно https://istio.io/docs/setup/kubernetes/spec-requirements/, порт HTTP должен называться http.

0 голосов
/ 12 декабря 2018

Вы должны переписать authority (заголовок HOST) вашего запроса, поскольку HTTP-маршрутизация в Istio выполняется заголовком HOST.

Добавьте предложение HTTPRewrite кhttp пункт:

apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: my-vs spec: hosts: - my-alias http: - route: - destination: host: my-service rewrite: authority: my-service

...