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

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

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

Увеличить