System Design Space
Граф знанийНастройки

Обновлено: 25 июня 2026 г. в 02:29

Архитектура сервисной сетки (service mesh)

сложный

Архитектура сервисной сетки: контур управления и контур обработки, взаимная TLS-аутентификация, правила трафика, наблюдаемость и операционные компромиссы.

Сервисная сетка оправдана только там, где сетевые правила, безопасность и наблюдаемость уже слишком дороги для локального решения внутри каждого сервиса.

Для реальных проектных решений глава показывает, как разделение на контур управления и контур обработки позволяет вынести взаимную TLS-аутентификацию, правила трафика, повторы, тайм-ауты и размыкатель цепи в платформенный слой.

Для интервью и инженерных разборов она помогает честно проговаривать цену такого слоя: сложность контура управления, накладные расходы ресурсов, диагностику сетевого поведения и кривую обучения команды.

Практическая польза главы

Практика проектирования

Отделяйте сетевые правила от бизнес-логики через соседний прокси и контур обработки.

Качество решений

Проектируйте взаимную TLS-аутентификацию, повторы, тайм-ауты, размыкатель цепи и правила доступа на уровне платформы.

Аргументация на интервью

Аргументируйте, когда сервисная сетка оправдана и как она влияет на задержку, защищённость и наблюдаемость.

Формулировка компромиссов

Фиксируйте цену внедрения: сложность контура управления, накладные расходы ресурсов и операционная кривая обучения.

Контекст

Inside Envoy

Сервисные сетки выросли из практики L7-прокси и централизованного управления межсервисным трафиком.

Открыть фильм

выносит сетевые правила и защитные политики из кода приложений в платформенный слой. Выигрыш — единая управляемость межсервисного трафика, шифрования, авторизации и телеметрии на масштабе.

Главная цена такого подхода — операционная сложность: контур управления становится критичной частью платформы, а в классической каждый соседний прокси-контейнер добавляет ресурсы, сетевой путь и новые сценарии диагностики. Цена прокси в каждом поде больше не неизбежна: sidecarless-модели — ambient-режим Istio и Cilium Service Mesh — меняют экономику сервисной сетки, хотя и со своими компромиссами.

Зачем внедряют сервисную сетку

  • Единая и политики идентичности между сервисами без дублирования защитного кода в каждом приложении.
  • Управляемая : , , , и .
  • Сквозная : метрики, трассировки и в едином формате и с общим контекстом.
  • Паттерны устойчивости — например — раскатываются по платформе централизованно, а не переписываются в каждом сервисе вручную, где их легко забыть или реализовать по-разному.

Архитектурные слои

Контур обработки

Перехватывает внутрикластерный трафик и применяет правила во время выполнения: маршрутизацию, повторы, тайм-ауты и mTLS-рукопожатие.

Включает

Envoy/ztunnel, фильтры L4/L7, пулы соединений.

Операционный риск

Некорректные тайм-ауты и повторы быстро повышают p99 задержки и долю ошибок.

Слой: Прокси рядом с сервисом или на узле
Цикл: намерение -> распространение -> применение -> наблюдение
rev 42

Очередь изменений

MESH-201checkout-api
канареечный трафик 10% / tenant:acme
MESH-202mobile-gateway
настройка бюджета повторов / user:42
MESH-203orders-api
ужесточение тайм-аута / order:7712
MESH-204checkout-api
строгий режим mTLS / tenant:globex

Контур согласования

Ожидание нового изменения

сигналы телеметрии: 0

payments-svc

cluster-a
RPS: 118ошибки: 2версия политики: 42mTLS: вкл

profile-svc

cluster-b
RPS: 96ошибки: 1версия политики: 42mTLS: вкл

inventory-svc

cluster-c
RPS: 112ошибки: 3версия политики: 42mTLS: вкл
Готово

Готово к симуляции контуров сервисной сетки. Можно запустить авто-режим или сделать один шаг.

Последнее решение: —

Модели контура обработки: паттерн Sidecar и sidecarless

Паттерн Sidecar: прокси в каждом поде

Классическая реализация : рядом с каждым подом работает собственный Envoy, который терминирует трафик и применяет политики L4 и L7.

  • Изоляция границей пода: ключи, конфигурация и сбои прокси затрагивают только один под, а ресурсы прокси не делятся с соседями.
  • Полный набор возможностей в каждом поде: продвинутая маршрутизация L7, мультикластерные топологии и подключение VM.
  • Модель эксплуатируется в продакшене с 2017 года: больше всего накопленного опыта, инструментов и проверенных практик.

Ambient: ztunnel на узле + waypoint по требованию

Sidecarless-режим Istio (общая доступность с версии 1.24, ноябрь 2024): L4 и L7 разнесены по отдельным компонентам , а в подах приложений прокси нет вовсе.

  • ztunnel — лёгкий общий L4-прокси узла (написан на Rust): взаимная аутентификация на базе протокола защиты транспортного уровня (), , L4-авторизация и телеметрия; трафик между узлами идёт через туннель HBONE.
  • waypoint — опциональный на базе Envoy, включается по пространствам имён только там, где нужны маршрутизация, повторные попытки и насыщенная авторизация, и масштабируется отдельно от приложений.
  • Подключение нагрузок — пометкой пространства имён, без инъекции контейнеров и перезапуска подов; обновление контура обработки не требует перекатки приложений.

Когда паттерн Sidecar остаётся оправдан

  • Нужна изоляция на уровне пода: выделенные ресурсы и ключи каждого прокси, предсказуемое поведение без шумных соседей по узлу.
  • Нужен максимум возможностей уже сейчас: мультикластерные и мультисетевые топологии, VM-нагрузки — в ambient эти сценарии пока ограничены.
  • Команда ценит зрелость: по накоплено на порядок больше операционного опыта, интеграций и готовых ответов на инциденты.

Когда ambient выигрывает

  • Стоимость ресурсов: исчезает резервирование CPU и памяти под прокси в каждом поде — по данным Istio, в больших инсталляциях экономия может превышать 90%.
  • Упрощение операций: подключение без перезапуска подов, обновление контура обработки без перекатки приложений и меньше конфигурации на каждую нагрузку.
  • Постепенность: можно жить только на L4-слое (шифрование, авторизация, телеметрия), а waypoint включать точечно там, где L7-политики действительно нужны.

Что меняется в безопасности

В ambient взаимная аутентификация на базе протокола защиты транспортного уровня (TLS) терминируется не в поде, а на ztunnel — общем компоненте узла. Идентичность остаётся отдельной для каждой нагрузки (SPIFFE), но ключи переезжают из пода приложения на узловой прокси: компрометация приложения больше не раскрывает ключи сетки, зато компрометация ztunnel затрагивает все нагрузки этого узла. И помните: политики уровня применяются только при включённом waypoint — учитывайте это при переносе правил из .

Cilium Service Mesh: sidecarless-вариант сервисной сетки через eBPF

Cilium делает следующий шаг: L3 и L4 обрабатывают прямо в ядре, без прокси вообще, а для L7-сценариев используется общий Envoy на узел. Так сеть, сетевая политика и сервисная сетка сливаются в один слой — ценой привязки платформы к стеку Cilium и его кривой обучения.

Security

Zero Trust

Сервисная сетка даёт транспортный каркас, но модель доступа и управление идентичностью нужно проектировать отдельно.

Открыть главу

Стратегия внедрения

Начинайте с ограниченного — одного-двух пространств имён — и сравнивайте целевой уровень сервиса (SLO) до и после включения сервисной сетки.

Сначала включайте и политику маршрутизации, затем ужесточайте взаимную аутентификацию на базе протокола защиты транспортного уровня (TLS) и .

Контролируйте стоимость: по CPU и памяти, а также влияние на 99-й перцентиль . В эта цена умножается на число подов — для крупных инсталляций сравните со sidecarless-вариантом.

Держите резервный сценарий: возможность быстро отключить правило или обойти сервисную сетку для критичных сервисов.

Индустриальные инструменты

Istio

Крупные платформы на базе Kubernetes с жёсткими требованиями к маршрутизации, безопасности и архитектурному управлению.

Сильные стороны

  • Продвинутая маршрутизация L7: канареечный запуск, , и .
  • Сильный защитный контур: взаимная аутентификация на базе протокола защиты транспортного уровня (TLS), , политика авторизации и интеграция с экосистемой идентичности.
  • Зрелая экосистема, много промышленных кейсов и у облачных провайдеров.
  • Два режима контура обработки на выбор: классический и sidecarless ambient (ztunnel L4 на узле плюс опциональные waypoint-прокси L7), причём режимы совместимы в одной сетке.

Компромиссы

  • Высокая операционная сложность контура управления и обновлений жизненного цикла.
  • Требуется дисциплина управления конфигурацией и явная платформенной команды.
  • Ambient пока отстаёт от в мультикластерных и мультисетевых топологиях и в поддержке VM-нагрузок.

Практики промышленной эксплуатации

Делайте платформенный API над политиками сервисной сетки: шаблоны повторных попыток, тайм-аутов и авторизации вместо ручного YAML в каждой команде.

Внедряйте политики поэтапно: режим проверки без применения, аудит, канареечное пространство имён и только потом массовое включение.

Сразу определяйте базовый набор телеметрии: , насыщение ресурсов, ошибки рукопожатия протокола защиты транспортного уровня (TLS) и целевой уровень сервиса (SLO) для контура управления.

Держите отдельную инструкцию обновления: совместимость контура управления и контура обработки, окна изменений и автоматические триггеры отката.

Документируйте аварийный обход для критичных сервисов, чтобы реагирование на инцидент не блокировалось политикой сервисной сетки.

Как выбирать стек сервисной сетки

  1. Где будет работать сервисная сетка: только платформа Kubernetes или гибрид из Kubernetes, VM и bare metal.
  2. Насколько сложны политики маршрутизации: нужны ли продвинутая маршрутизация L7 и внедрение отказов или достаточно повторных попыток и тайм-аутов.
  3. Какая модель контура обработки подходит: ради изоляции на уровне пода и полного набора возможностей или sidecarless (Istio ambient, Cilium) ради экономии ресурсов и упрощения операций.
  4. Какой уровень : сможет ли команда стабильно сопровождать контур управления и частые обновления.
  5. Требования к безопасности: взаимная аутентификация на базе протокола защиты транспортного уровня (TLS) везде, точная политика авторизации, интеграция с и политики как код.
  6. Ограничения по стоимости: допустимые и влияние на p95 и 99-й перцентиль задержки.

Типичные ошибки

Сервисная сетка как серебряная пуля

Она перекладывает сетевые правила в платформу, но не чинит плохие границы сервисов и неявные контракты между командами — эти проблемы просто переезжают на новый слой и остаются дороже в отладке.

Слишком ранний массовый запуск

Включение сразу для всей платформы без поэтапного внедрения обычно заканчивается сложными инцидентами и срочным откатом.

Недооценка операционной сложности

становится критичной платформой. Нужны версии, целевой уровень сервиса (SLO), и понятная зона ответственности.

Шифрование без политики доступа

Взаимная аутентификация на базе протокола защиты транспортного уровня (TLS) защищает канал, но сама по себе не отвечает на вопрос, какие действия сервисам разрешены.

Источники

Связанные главы

  • Inside Envoy: The Proxy for the Future - История Envoy как технологической основы большинства сервисных сеток.
  • Zero Trust Architecture - Принципы безопасности от идентичности, которые сервисная сетка помогает применять на практике.
  • Observability & Monitoring Design - Как использовать телеметрию сервисной сетки для диагностики задержек и расходования бюджета ошибок.
  • Паттерны отказоустойчивости - Почему размыкатель цепи, повторные попытки и тайм-ауты часто централизуют на сетевом слое.
  • Kubernetes Fundamentals - Базовый платформенный контекст для промышленной эксплуатации сервисной сетки.

Чтобы отмечать прохождение, включи трекинг в Настройки