Перейти до вмісту

Модуль 10.7: Мультихмарний Service Mesh (Istio Multi-Cluster)

Складність: [COMPLEX] | Час на виконання: 3 год | Передумови: Мережі Kubernetes, основи Service Mesh, Гібридна хмарна архітектура (Модуль 10.4)

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

У жовтні 2023 року велика технологічна компанія мала два кластери Kubernetes: основний в AWS (США) та резервний у Google Cloud (Європа). Коли в регіоні AWS стався частковий збій мережі, їхній план аварійного відновлення — ручне перемикання DNS на Google Cloud — зайняв 43 хвилини. Протягом цих 43 хвилин сервіс був недоступний для 12 мільйонів користувачів. Аналіз показав, що затримка сталася через потребу в координації між трьома різними командами. Збитки оцінили у $3.8 мільйона втраченого доходу.

Після інциденту вони впровадили Istio Multi-Cluster. Тепер трафік автоматично розподіляється між хмарами. Коли сервіс в AWS стає “хворим”, Istio сам перенаправляє запити на кластер у Google Cloud — без змін у DNS, без дзвінків о 3 годині ночі і без 43-хвилинного очікування. Наступний збій у хмарі (через два місяці) пройшов непомітно для користувачів: перемикання відбулося за 8 секунд.

Цей модуль навчить вас будувати такі системи. Ви вивчите топології мультикластерного Istio, навчитеся налаштовувати спільну довіру (mTLS) між різними хмарами через SPIFFE/SPIRE, опануєте маршрутизацію з урахуванням локації (locality-aware routing) та навчитеся виправляти складні помилки зв’язку між кластерами.


Топології Istio Multi-Cluster

Розділ «Топології Istio Multi-Cluster»

Є два основні способи з’єднати кластери в єдину мережу.

Один кластер є “головним” (Primary) — він тримає площину управління Istiod. Інші кластери (Remote) підключаються до нього.

  • Плюс: Легко керувати (один конфиг).
  • Мінус: Якщо головний кластер впаде — управління мережею в усіх кластерах зупиниться.
  • Для чого: сценарії Disaster Recovery (DR).

2. Multi-Primary (Рекомендовано для продакшну)

Розділ «2. Multi-Primary (Рекомендовано для продакшну)»

Кожен кластер має свій власний Istiod. Вони просто обмінюються інформацією про сервіси.

  • Плюс: Максимальна надійність. Кластери незалежні.
  • Мінус: Складніше налаштовувати сертифікати та синхронізацію.
  • Для чого: Active-Active архітектури, де обидві хмари працюють одночасно.

Спільна довіра: Shared Root CA

Розділ «Спільна довіра: Shared Root CA»

Щоб под в Amazon міг безпечно спілкуватися з подом у Google Cloud через mTLS, вони мають довіряти один одному. Для цього ви створюєте єдиний кореневий сертифікат (Root CA) для всієї компанії.

  1. Ви генеруєте Root CA в безпечному місці (напр. Vault).
  2. Видаєте кожному кластеру свій проміжний сертифікат (Intermediate CA), підписаний цим коренем. Результат: Будь-який сервіс у будь-якій хмарі може перевірити особу іншого сервісу.

East-West Gateway: Міст між хмарами

Розділ «East-West Gateway: Міст між хмарами»

Стандартний Ingress (North-South) приймає трафік з інтернету. East-West Gateway — це спеціальний вхід тільки для інших кластерів вашої мережі.

  • Трафік іде через mTLS.
  • Використовується режим AUTO_PASSTHROUGH: шлюз не розшифровує дані, а лише пересилає їх на потрібний под у своєму кластері.

Це “розумне” балансування трафіку:

  • Якщо сервіс є у вашому кластері — запит іде до нього (це швидко і безкоштовно).
  • Якщо локальний сервіс видає помилки — Istio автоматично відправляє 10% запитів у сусідню хмару.
  • Якщо локальний сервіс “помер” зовсім — 100% трафіку іде в іншу хмару.

ПомилкаЧому це стаєтьсяЯк виправити
Різні Root CAКластери створювалися окремоСтворіть єдиний Root CA перед встановленням Istio в обох кластерах
Закритий порт 15443Файрвол блокує East-West трафікВідкрийте порт 15443 (mTLS) між хмарами у групах безпеки
Немає Outlier DetectionIstio не бачить, що сусід впавЗавжди налаштовуйте outlierDetection у DestinationRule, щоб вчасно перемикати трафік
Strict mTLS для Health ChecksБалансувальник не вміє в mTLSНалаштуйте виключення для портів перевірки здоров’я в PeerAuthentication

1. Чому для мультихмарної мережі потрібен саме East-West Gateway, а не звичайний Ingress?

Тому що ми хочемо зберегти наскрізне шифрування (end-to-end mTLS) між подами в різних хмарах. Звичайний Ingress зазвичай розшифровує трафік на вході. East-West Gateway працює в режимі пропуску (passthrough), дозволяючи подам “домовитися” про безпеку самостійно.

2. Як Istio в одній хмарі дізнається про поди в іншій хмарі?

Ви створюєте Remote Secret. Це спеціальний файл, який дає право вашому Istiod читати список сервісів та подів із API іншого кластера. Це як “телефонна книга” іншої хмари.


Практична вправа: Cross-Cloud Failover

Розділ «Практична вправа: Cross-Cloud Failover»
  1. Розгорніть два кластери (simulated) і встановіть Istio в режимі Multi-Primary.
  2. Спроектуйте DestinationRule для сервісу payments з налаштуванням localityLbSetting.
  3. Налаштуйте outlierDetection, щоб под вимикався після 3 помилок поспіль.
  4. Симулюйте збій у першій хмарі (напр. видаліть усі поди сервісу).
  5. Перевірте, через скільки секунд трафік почне надходити до другої хмари.

Ви з’єднали сервіси, тепер час навести лад у деплоях. Переходьте до Модуля 10.8: Корпоративний GitOps та платформна інженерія — ми навчимося використовувати Backstage та ArgoCD для управління розгортаннями на сотні кластерів одночасно.