DANic
@DANic
Интроверт

Как использовать istio virtualservice внутри кластера вне mesh сети?

Добрый день,
В кластере есть сервисы с istio и без, так же service ip доступны для сервисов вне кластера

Есть podы в k8s с istio сайдкар котейнером, для них есть сервис service

Я хочу использовать возмоноти isto что бы балансировать трафик между подами с липкими сессиями по httpHeaderName

При этом нужно что бы клиенты ходил к сервису по cluster dns service.default.svc.cluster.local

Я создал VirtualService и DestinationRule
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: "service"
spec:
  hosts:
    - "service"
  gateways:
    - mesh
  http:
    - route:
        - destination:
            host: "service"

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: "service"
spec:
  host: "service"
  trafficPolicy:
    loadBalancer:
      consistentHash:
        httpHeaderName: "threadId"


делаю
curl 'http://service.default.svc.cluster.local:8080/debug?threadId=XXX'

Запросы игнорируют VirtualService и DestinationRule раскидыаются по RR между подами

Как сделать так что бы VirtualService работал для трафика поступающего из вне mesh сети к сервису?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
@MadridianFox
Web-программист, многостаночник
Istio не влияет на работу класткрного dns. Обращаясь к нему вы получаете ip подов и всё работает по старому.
Чтобы трафик шёл через меш, istio добавляет в под init контейнер, который через iptables захватывает весь исходящий трафик и направляет его в сайдкар.

По хорошему внешние сервисы должны обращаться к внутренним через ingress, который, будучи таким же подом как и все другие, исходящий трафик шлёт уже через меш.
Если нужно чтобы обращения были по внутренним доменам, то можно давать ингресам такие домены, а на стороне внешнего сервиса поиграться с dns.

Другой вариант - поднять на стороне внешнего сервиса агент istio - тот же сервис, который работает в сайдкар. Вот официальная документация как раз для такого случая https://istio.io/latest/docs/setup/install/virtual...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы