Управление трафиком

Istio поддерживает парадигму декларативных конфигураций и позволяет пользователям задать требуемое состояние сети. Конфигурации описываются в YAML-файлах (манифестах).

Gateway CRD

Манифест Gateway конфигурирует изолированный envoy-proxy, который управляет всем входящим (ingress-шлюз) или исходящим (egress-шлюз) трафиком сети.
Gateway позволяет иметь большую гибкость конфигураций трафика в отличие от API-объекта Kubernetes с именем Ingress. Он определяет список портов, которые должны быть открыты, используемые протоколы соединения, SNI-конфигурации (Server Name Indication).
Ниже представлен пример подобного манифеста, при имплементации которого ingress-шлюз с селектором ingress-gw, контролирующий весь входящий трафик в Service Mesh, откроет порт 80 для создания HTTP-соединений с именем хоста example.com.
Image

Увеличить

VirtualService CRD

Манифест VirtualService определяет список правил маршрутизации трафика внутри Service Mesh в привязке к имени вызываемого хоста. Каждое правило содержит спецификации трафика, его источника, протокола соединения и прочее, при совпадении которых происходит выполнение правила — направление трафика на указанный сервис или на его отдельную версию.
Image

Увеличить

На схеме слева - манифест VirtualService, справа - результат применения политики маршрутизации данного манифеста: выбор направления трафика из шлюза ingress-gw в прокси-сервер пода, содержащего Service A.

DestinationRule CRD

Манифест DestinationRule определяет политики, управляющие трафиком после выполнения маршрутизации:
  • режим балансировки нагрузки на сервис назначения, в том числе на разные его версии;
  • размер пула соединений прокси-сервера сервиса назначения (host в VirtualService);
  • признаки пода с нарушенной работоспособностью и параметры вывода его из балансировки (например, 5xx ошибки, время вывода из балансировки).
На схеме ниже представлен результат применения политики маршрутизации DestinationRule: создана балансировка трафика на все инстансы пода с бизнес-сервисом.
Image

Увеличить

ServiceEntry CRD

Манифест ServiceEntry позволяет внести новый сервис и service endpoint (манифестация сервиса, позволяющая достичь его в сети) во внутренний реестр сервисов Istio и выполнить их конфигурацию:
  • направить трафик на сервисы вне Service Mesh;
  • задать параметры соединений (например: retry, timeout).
Ниже представлен пример манифеста. В результате его применения во внутренний реестр сервисов Istio будет добавлен новый сервис со значением хоста example.com, что наряду с другими конфигурациями egress-шлюза позволит Service B совершить исходящий запрос на внешний сервис.
Image

Увеличить

Предыдущий раздел
1.9 Интеграционное взаимодействие
Следующий раздел
Быстрый старт
Была ли страница полезной?