Istio

Открытая сервисная сетка (service mesh) для микросервисов.

Istio — это платформа service mesh с открытым исходным кодом, которая обеспечивает прозрачный способ защиты, соединения и мониторинга сервисов. Она предназначена для управления сложностью микросервисных архитектур путем абстрагирования сетевого уровня. Istio обычно работает как набор микросервисов, развернутых в кластере Kubernetes. Его архитектура состоит из двух основных компонентов: плоскости управления (Control Plane) и плоскости данных (Data Plane). Плоскость управления (например, Pilot, Citadel, Galley) управляет прокси-серверами в плоскости данных и настраивает их. Плоскость данных состоит из прокси-серверов Envoy, развернутых как sidecar-контейнеры вместе с каждым экземпляром сервиса. Эти прокси-серверы Envoy перехватывают весь сетевой трафик между сервисами, применяя политики и собирая телеметрию. Ключевые функции включают управление трафиком (например, маршрутизация, балансировка нагрузки, инъекция сбоев), безопасность (например, взаимная аутентификация TLS, политики авторизации) и наблюдаемость (например, метрики, логи, распределенная трассировка). Компромиссы включают в себя увеличение операционной сложности и накладных расходов на ресурсы из-за sidecar-прокси, но это часто компенсируется значительными преимуществами в управлении распределенными системами. Istio позволяет разработчикам сосредоточиться на бизнес-логике, а не на сетевых аспектах, предоставляя такие расширенные возможности, как поэтапное развертывание (canary deployments), A/B-тестирование и паттерны отказоустойчивости «из коробки».

        graph LR
  Center["Istio"]:::main
  Rel_advanced_propulsion_systems["advanced-propulsion-systems"]:::related -.-> Center
  click Rel_advanced_propulsion_systems "/terms/advanced-propulsion-systems"
  Rel_microservices["microservices"]:::related -.-> Center
  click Rel_microservices "/terms/microservices"
  Rel_service_mesh["service-mesh"]:::related -.-> Center
  click Rel_service_mesh "/terms/service-mesh"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Простыми словами

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

🤓 Expert Deep Dive

Архитектура Istio использует прокси-серверы Envoy в качестве sidecar-контейнеров, внедряя их в поды приложений для перехвата и управления всем входящим и исходящим трафиком. Плоскость управления, исторически состоявшая из Pilot (управление трафиком), Citadel (безопасность) и Galley (валидация конфигурации), эволюционировала с такими компонентами, как istiod, консолидирующими многие функции. Pilot настраивает прокси-серверы Envoy через API xDS (Discovery Service), обеспечивая динамическую маршрутизацию, балансировку нагрузки и инъекцию сбоев. Citadel обеспечивает надежную взаимную аутентификацию и авторизацию между сервисами с использованием идентификаторов SPIFFE/SPIRE и управляет ротацией сертификатов. Galley обрабатывает прием и валидацию конфигурации. Компромиссы включают значительные накладные расходы на ресурсы (ЦП/память) при запуске sidecar-прокси для каждого экземпляра сервиса и дополнительную задержку, вносимую дополнительным сетевым переходом. Уязвимости могут возникнуть из-за неправильной настройки политик авторизации, потенциальных эксплойтов в самом прокси-сервере Envoy или проблем в компонентах плоскости управления Istio. Обеспечение согласованного применения политик в динамичной среде микросервисов является ключевой проблемой.

📚 Источники