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