Заметка

Istio Ambient Mesh: sidecarless и конец двойного хопа

Ambient убрал Envoy из каждого пода. Где это снимает двойной хоп и накладные расходы — и где сайдкар всё ещё оправдан.

Service mesh продают как способ получить mTLS, отказоустойчивость и наблюдаемость, не трогая код приложения. Платой за это десять лет был сайдкар: рядом с каждым подом ставится Envoy-прокси, через который проходит весь трафик. Удобно — пока поды считаются десятками. На масштабе сайдкар превращается в налог, который платят все, даже те сервисы, которым из всего меша нужен один только mTLS. Ambient mode, ставший stable в Istio 1.24 в ноябре 2024, убирает Envoy из пода и переписывает эту экономику.

Чем сайдкар-модель упирается в потолок

Главная проблема сайдкара — двойной хоп. Запрос из пода A в под B проходит через два полноценных Envoy: исходящий прокси A и входящий прокси B. Даже когда вам нужен лишь mTLS на L4, трафик всё равно тащится сквозь два L7-проксирования с разбором HTTP. Это латентность и CPU на каждом вызове.

Дальше идёт стоимость владения. Envoy в каждом поде — это сотни мегабайт памяти, помноженные на число реплик. Сайдкар связан с жизненным циклом приложения: он должен стартовать раньше контейнера (отсюда костыль holdApplicationUntilProxyStarts, иначе первые запросы теряются), он замедляет остановку, его нельзя осмысленно встроить в batch-джобы. Включение инъекции требует рестарта подов, а апгрейд data plane — перекатки всего парка. И часть нагрузок просто не переваривает сайдкар.

Ambient: два слоя вместо одного прокси

Ambient разносит то, что сайдкар держал в одном Envoy, на два независимых слоя. ztunnel — это per-node компонент (DaemonSet, написан на Rust), который берёт на себя L4 и mTLS. Он строит mesh поверх туннелей HBONE (mTLS внутри HTTP/2 CONNECT) и шифрует трафик между нодами без единого прокси внутри пода. waypoint — это Envoy, который ставится на namespace или service account и включается только когда нужен L7: маршрутизация по заголовкам, traffic splitting, retries, L7-авторизация.

Ключевая идея — платить за слой по факту использования. Нужен дешёвый zero-trust mTLS на весь кластер? Хватит одного ztunnel, Envoy не появляется нигде. Нужен умный L7 на конкретном сервисе? Добавляете waypoint точечно, для него одного.

Где исчезает двойной хоп

L4-трафик в ambient идёт по пути «под → ztunnel ноды → ztunnel удалённой ноды → под». Полноценный Envoy не участвует — ztunnel легче на порядок (за четыре релиза его производительность выросла примерно на 75%). Сайдкарного двойного проксирования здесь просто нет.

Когда L7 действительно нужен, на путь вставляется один waypoint, а не два сайдкара с обоих концов. Вместо «всегда два тяжёлых Envoy на каждый вызов» получается «ztunnel для всех, плюс один waypoint там, где есть за что платить». Это и есть конец двойного хопа как обязательной платы.

Честный контрапункт

Бесплатного меша не бывает, меняется только форма счёта. ztunnel — общий на ноду, поэтому радиус поражения смещается с пода на ноду: его сбой или перегрузка задевают все поды на узле, тогда как упавший сайдкар ронял один под. Экосистема ambient моложе сайдкарной: меньше отлаженных продакшн-историй, часть продвинутых сценариев ещё догоняет, отладка переезжает с per-pod прокси на логи ztunnel и waypoint. Ambient требует совместимости с CNI и более свежего ядра. Это осознанный выбор архитектуры, а не «включить и забыть».

Где это окупается, а где нет

Правило решения простое. Ambient оправдан, когда вы хотите zero-trust mTLS дёшево и на весь кластер; когда поды крупные и плотные — GPU-узлы и LLM-инференс, где сайдкар на каждую реплику съедает заметную долю памяти (поэтому ambient и стал горячей темой под AI-нагрузки в 2026); когда в кластере есть нагрузки, которые сайдкар не принимают. Классический сайдкар всё ещё уместен там, где нужна жёсткая per-pod изоляция или фича, которой в ambient пока нет. А если L7-политик, mTLS и меша вам не нужно вовсе — обычного CNI достаточно, не платите за способности, которыми не пользуетесь.

С чего начать

Сильная сторона ambient — инкрементальность. Включается он по namespace, без переинъекции и рестарта подов. Начните с L4: поднимите ztunnel и получите mTLS по всему кластеру почти бесплатно. Waypoint добавляйте точечно — только тем сервисам, которым реально нужен L7-роутинг или авторизация. Не мигрируйте весь меш разом: ambient и сайдкар сосуществуют, и правильная стратегия — переводить трафик слоями, а не одним прыжком.

© 2026 axyi.ru · CC BY 4.0