Установка мультисетевой сетки primary-remote
Установите Istio в топологии primary-remote multi-network на двух кластерах.
В этой процедуре CLUSTER1 — это кластер East, а CLUSTER2 — кластер West. Кластер East является основным (primary), а кластер West — удалённым (remote).
Вы можете адаптировать эти инструкции для сетки, охватывающей более двух кластеров.
Содержание
ТопологияПредварительные требованияПроцедураПроверка топологии primary-remoteУдаление топологии primary-remote из среды разработкиТопология
Сервисные рабочие нагрузки, расположенные в разных кластерах, обмениваются данными косвенно через выделенные шлюзы для трафика east-west. Шлюз в каждом кластере должен быть доступен из другого кластера.
Сервисы в cluster2 будут обращаться к контрольной плоскости в cluster1 через тот же шлюз east-west.
Предварительные требования
- В каждом кластере, входящем в сетку, установлен плагин Alauda Container Platform Networking для Multus, при этом kube-ovn должен быть версии v4.1.5 или выше.
- У вас есть доступ к двум кластерам с поддержкой внешнего балансировщика нагрузки.
WARNING
В режиме primary-remote, если адрес внешнего балансировщика нагрузки — это IPv6-адрес, то установка в режиме primary-remote в настоящее время не поддерживается.
- На всех кластерах, входящих в сетку, установлен Alauda Service Mesh v2 Operator.
- Вы завершили создание сертификатов для мультикластерной сетки.
- Вы завершили применение сертификатов к мультисетевой мультикластерной топологии.
- У вас локально установлен
istioctlдля выполнения этих инструкций.
Процедура
Создайте переменную окружения ISTIO_VERSION, определяющую версию Istio для установки
Установите IstioCNI в кластере East
Установите ресурс IstioCNI в кластере East, выполнив следующую команду:
Установите Istio в кластере East
-
Создайте ресурс
Istioв кластере East, выполнив следующую команду:Сохраните следующий ресурс
Istioв файлistio-external.yaml:- Это позволяет контрольной плоскости, установленной в кластере East, выступать в роли внешней контрольной плоскости для других удалённых кластеров.
Примените ресурс
Istioс помощьюkubectl: -
Дождитесь, пока контрольная плоскость не вернёт статус "Ready", выполнив команду:
-
Создайте шлюз East-West в кластере East, выполнив команду:
WARNINGДля узлов с версиями ядра Linux ниже 4.11 (например, CentOS 7) требуется дополнительная настройка перед установкой шлюза.
Опционально: Развернуть шлюз East-West на Infra Nodes (нажмите для раскрытия)
Выполните следующую команду для патча деплоймента шлюза:
-
Откройте доступ к контрольной плоскости через шлюз, чтобы сервисы в кластере West могли получить к ней доступ, выполнив команду:
-
Откройте доступ к сервисам приложений через шлюз, выполнив команду:
Установите IstioCNI в кластере West
Установите ресурс IstioCNI в кластере West, выполнив следующую команду:
Установите Istio в кластере West
-
Сохраните IP-адрес шлюза East-West, работающего в кластере East, выполнив команду:
-
Создайте ресурс
Istioв кластере West, выполнив команду: -
Добавьте аннотацию к пространству имён
istio-systemв кластере West, чтобы оно управлялось контрольной плоскостью в кластере East, выполнив команду: -
Установите удалённый секрет в кластере East, предоставляющий доступ к API-серверу кластера West, выполнив команду:
-
Дождитесь, пока ресурс
Istioне вернёт статус "Ready", выполнив команду: -
Создайте шлюз East-West в кластере West, выполнив команду:
WARNINGДля узлов с версиями ядра Linux ниже 4.11 (например, CentOS 7) требуется дополнительная настройка перед установкой шлюза.
Опционально: Развернуть шлюз East-West на Infra Nodes (нажмите для раскрытия)
Выполните следующую команду для патча деплоймента шлюза:
NOTEПоскольку кластер West установлен с профилем remote, открытие доступа к сервисам приложений в кластере East открывает их на шлюзах East-West обоих кластеров.
Проверка топологии primary-remote
Чтобы убедиться, что ваша топология primary-remote функционирует корректно, разверните примерные приложения на двух отдельных кластерах Alauda Container Platform. Цель — создать базовую среду, в которой можно генерировать и наблюдать межкластерный трафик.
Процедура
Начните с развертывания необходимых примерных приложений в кластере East.
В этом кластере будет размещена версия v1 сервиса helloworld.
-
Создайте отдельное пространство имён для приложений в кластере
East. -
Включите автоматическую инъекцию sidecar Istio для пространства имён
sample, применив соответствующую метку. -
Разверните компоненты приложения
helloworld.a. Сначала создайте конечную точку сервиса
helloworld.b. Затем разверните экземпляр приложения
helloworldверсииv1. -
Разверните приложение
sleep, которое будет выступать в роли клиента для отправки тестовых запросов. -
Подождите, пока деплоймент
helloworld-v1не станет полностью доступен и готов. -
Аналогично дождитесь, пока деплоймент
sleepне получит статусReady.
Повторите настройку в кластере West.
В этом кластере будет размещена версия v2 сервиса helloworld.
-
Создайте пространство имён
sampleв кластереWest. -
Включите инъекцию sidecar Istio для этого пространства имён.
-
Разверните компоненты приложения
helloworld.a. Создайте общий сервисный endpoint
helloworldв кластереWest.b. Разверните экземпляр приложения
helloworldверсииv2. -
Разверните клиентское приложение
sleepв кластереWest. -
Подождите, пока деплоймент
helloworld-v2не станет полностью доступен. -
Наконец, убедитесь, что деплоймент
sleepв кластереWestготов.
Проверка потоков трафика между кластерами
После развертывания и запуска приложений в обоих кластерах следующий шаг — отправить запросы и подтвердить, что трафик корректно балансируется по всей сетке сервисов.
-
Из pod в кластере
Eastотправьте серию из 10 запросов к сервисуhelloworld.Ожидаемый результат — смешанные ответы от
helloworld-v1(East) иhelloworld-v2(West), что доказывает маршрутизацию запросов по границам кластеров.Пример вывода
-
Выполните тот же тест из кластера
West.Опять же, вы должны увидеть ответы от обеих версий
v1иv2сервиса, подтверждающие корректную работу балансировки нагрузки primary-remote независимо от источника запроса.
Удаление топологии primary-remote из среды разработки
После завершения проверки и экспериментов следует удалить конфигурацию primary-remote, чтобы очистить среду разработки и освободить ресурсы.
Процедура
-
Выполните одну команду для удаления всех компонентов Istio и примерных приложений из кластера
East. -
Выполните соответствующую команду для очистки кластера
West.