Встановлення Primary-Remote в різних мережах
Дотримуйтесь цього посібника для встановлення панелі управління Istio на cluster1
(primary кластер) та налаштування
cluster2
(remote кластер) для використання панелі управління в cluster1
. Кластер cluster1
розміщений в мережі network1
, а cluster2
— в мережі network2
. Це означає, що між podʼами в різних кластерах немає прямого зʼєднання.Перш ніж продовжити, переконайтеся, що ви виконали кроки з розділу перш ніж почати6.
У цій конфігурації кластер cluster1
буде спостерігати за API серверами в обох кластерах для пошуку точок доступу. Таким чином, панель управління зможе забезпечити виявлення сервісів для робочих навантажень в обох кластерах.
Робочі навантаження між кластерами взаємодіють опосередковано, через спеціалізовані шлюзи для трафіку east-west8. Шлюз у кожному кластері повинен бути досяжним з іншого кластера.
Сервіси в cluster2
будуть мати доступ до панелі управління в cluster1
через той самий шлюз east-west.
Налаштування стандартної мережі для cluster1
Якщо простір імен istio-system вже створений, необхідно встановити для нього мережу кластера:
Налаштування cluster1
як primary кластера
Створіть конфігурацію istioctl
для cluster1
:
Встановіть Istio як primary у cluster1
за допомогою istioctl та API IstioOperator
.
Застосуйте конфігурацію до cluster1
:
Зверніть увагу, що параметр values.global.externalIstiod
встановлено як true
. Це дозволяє панелі управління, встановленій в cluster1
, також слугувати зовнішньою панеллю управління для інших віддалених кластерів. Коли цю функцію увімкнено, istiod
намагатиметься отримати блокування лідерства і, відповідно, керувати належним чином позначеними віддаленими кластерами, які приєднані до нього (у цьому випадку, cluster2
).
Встановіть Istio як primary у cluster1
за допомогою наступних команд Helm:
Встановіть чарт base
у cluster1
:
Потім встановіть чарт istiod
в cluster1
з наступними налаштуваннями мультикластера:
Зверніть увагу, що values.global.externalIstiod
має значення true
. Це дозволить панелі управління, встановленій на cluster1
, також слугувати зовнішньою панеллю управління для інших віддалених кластерів. Коли цю можливість увімкнено, istiod
намагатиметься отримати блокування лідерства, а отже, керувати відповідно анотованими віддаленими кластерами, які до нього приєднано (у цьому випадку, cluster2
).
Встановлення шлюзу east-west в cluster1
Встановіть шлюз у cluster1
, який буде призначений для трафіку east-west. Стандартно цей шлюз буде доступний в Інтернеті. Операційні розгортання можуть вимагати додаткових обмежень доступу (наприклад, через правила брандмауера), щоб запобігти зовнішнім атакам. Зверніться до свого хмарного постачальника, щоб дізнатися про доступні варіанти.
Встановіть шлюз east-west у cluster1
за допомогою наступної команди Helm:
Очікуйте на призначення зовнішньої IP-адреси для шлюзу east-west:
Відкриття доступу до панелі управління в cluster1
Перш ніж ми зможемо виконати встановлення в cluster2
, необхідно спочатку відкрити доступ до панелі управління в cluster1
, щоб сервіси в cluster2
могли отримувати доступ до виявлення сервісів:
Налаштування панелі управління для cluster2
Необхідно визначити зовнішню панель управління, яка повинна керувати cluster2
, анотувавши простір імен istio-system:
Встановлення анотації простору імен topology.istio.io/controlPlaneClusters
в cluster1
інструктує istiod
, що працює в тому ж просторі імен (istio-system у цьому випадку) в cluster1
, управляти cluster2
, коли він буде приєднаний як віддалений кластер.
Налаштування стандартної мережі для cluster2
Встановіть мережу для cluster2
, додавши мітку до простору імен istio-system:
Налаштування cluster2
як remote кластера
Збережіть адресу шлюзу east-west cluster1
.
Тепер створіть віддалену конфігурацію на cluster2
.
Застосуйте конфігурацію до cluster2
:
Встановіть Istio як remote у cluster2
за допомогою наступних команд Helm:
Install the base
chart in cluster2
:
Потім встановіть чарт istiod
у cluster2
з наступними налаштуваннями мультикластера:
Приєднання cluster2
як віддаленого кластера до cluster1
Щоб приєднати віддалений кластер до його панелі управління, ми надаємо панелі управління в cluster1
доступ до API сервера в cluster2
. Це зробить наступне:
Дозволяє панелі управління автентифікувати запити на зʼєднання від робочих навантажень, що працюють в
cluster2
. Без доступу до API сервера панель управління відхилить запити.Дозволяє виявлення точок доступу сервісів, що працюють в
cluster2
.
Оскільки це включено в анотацію простору імен topology.istio.io/controlPlaneClusters
, панель управління на cluster1
також:
Застосовує патчі сертифікати в вебхуках в
cluster2
.Запускає контролер просторів імен, який записує configmap в простори імен в
cluster2
.
Щоб надати доступ до API сервера для cluster2
, ми створюємо віддалений секрет і застосовуємо його до cluster1
:
Встановлення шлюзу east-west в cluster2
Як і в cluster1
вище, встановіть шлюз у cluster2
, який буде призначений для трафіку east-west та експонує сервіси користувача.
Встановіть шлюз east-west у cluster2
за допомогою наступної команди Helm:
Очікуйте, поки для шлюзу east-west буде призначена зовнішня IP-адреса:
Експонування сервісів у cluster1
та cluster2
Оскільки кластери знаходяться в окремих мережах, нам також потрібно відкрити всі сервіси користувачів (*.local) шлюзі east-west в обох кластерах. Хоча ці шлюзи є публічними в Інтернет, сервіси за ними можуть бути доступні тільки сервісам з довіреними сертифікатами mTLS та ідентифікаторами робочих навантажень, так само як якби вони були в одній мережі.
Вітаємо! Ви успішно встановили Istio mesh в основному та віддаленому кластерах в різних мережах!
Подальші кроки
Тепер ви можете перевірити встановлення13.
Очищення
Видаліть Istio з cluster1
і cluster2
за допомогою того ж механізму, за допомогою якого ви встановлювали Istio (istioctl або Helm).
Видаліть Istio з cluster1
:
Видаліть Istio з cluster2
:
Видаліть встановлення Istio Helm з cluster1
:
Видаліть простір імен istio-system
з cluster1
:
Видаліть встановлення Istio Helm з cluster2
:
Видаліть простір імен istio-system
з cluster2
:
(Опціонально) Видаліть CRD, встановлені Istio:
Видалення CRD назавжди видаляє всі ресурси Istio, які ви створили у ваших кластерах. Щоб видалити Istio CRD, встановлені у ваших кластерах: