Istio

Відкрита сервісна мережа (service mesh) для безпечного з'єднання мікросервісів.

Istio — це платформа сервісної сітки з відкритим вихідним кодом, яка забезпечує прозорий спосіб безпечного з'єднання та моніторингу сервісів. Вона розроблена для управління складністю архітектур мікросервісів шляхом абстрагування мережевого рівня. Istio зазвичай розгортається як набір мікросервісів у кластері Kubernetes. Його архітектура складається з двох основних компонентів: площини керування (Control Plane) та площини даних (Data Plane). Площина керування (наприклад, Pilot, Citadel, Galley) керує та налаштовує проксі в площині даних. Площина даних складається з проксі Envoy, розгорнутих як сайдкари поряд з кожним екземпляром сервісу. Ці проксі Envoy перехоплюють весь мережевий трафік між сервісами, застосовуючи політики та збираючи телеметрію. Ключові функції включають управління трафіком (наприклад, маршрутизація, балансування навантаження, впровадження відмов), безпеку (наприклад, взаємне TLS-аутентифікація, політики авторизації) та спостережуваність (наприклад, метрики, логи, розподілене трасування). Компроміси включають введення операційної складності та накладних витрат на ресурси через сайдкар-проксі, але це часто компенсується значними перевагами в управлінні розподіленими системами. 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;

      

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

🌍 Уявіть місто, де у кожного будинку (сервісу) є свій охоронець біля дверей. Istio — це головний офіс, який надає інструкції цим охоронцям: кого впускати, куди направляти відвідувачів і як стежити за порядком.

🤓 Expert Deep Dive

Архітектура Istio використовує проксі Envoy як сайдкари, впроваджуючи їх у поди додатків для перехоплення та управління всім вхідним та вихідним трафіком. Площина керування, історично складалася з Pilot (управління трафіком), Citadel (безпека) та Galley (валідація конфігурації), еволюціонувала з компонентами, такими як istiod, що консолідує багато функцій. Pilot налаштовує проксі Envoy через API xDS (Discovery Service), забезпечуючи динамічну маршрутизацію, балансування навантаження та впровадження відмов. Citadel забезпечує надійну автентифікацію та авторизацію між сервісами, використовуючи ідентифікатори SPIFFE/SPIRE, та керує ротацією сертифікатів. Galley відповідає за прийом та валідацію конфігурації. Компроміси включають значні накладні витрати на ресурси (CPU/пам'ять) від запуску сайдкар-проксі для кожного екземпляра сервісу та додаткову затримку, спричинену додатковим мережевим стрибком. Вразливості можуть виникати через неправильні конфігурації політик авторизації, потенційні експлойти в самому проксі Envoy або проблеми в компонентах площини керування Istio. Забезпечення послідовного застосування політик у динамічному середовищі мікросервісів є ключовим викликом.

📚 Джерела