![](https://habrastorage.org/getpro/habr/post_images/83b/36e/e0b/83b36ee0bc8ba785116ec27befe716bc.png)
Потестируйте Backyards на собственных кластерах: curl https://getbackyards.sh | sh && backyards install -a --run-demo
. Если интересно, см. детали последнего релиза.
В июне мы представили Backyards, автоматизированную «сервисную сетку» (service mesh) поверх нашего оператора Istio. Она сильно упрощает управление service mesh в многооблачной и гибридной инфраструктуре. Backyards интегрирован в платформу управления контейнерами Pipeline на Banzai Cloud, но также доступен как отдельный продукт. Конечно, интеграция с Pipeline даёт множество конкретных преимуществ (как управление приложениями на нескольких облаках), но Backyards работает на любой установке Kubernetes.
В анонсе Backyards мы обсудили некоторые из основных функций: создание service mesh в несколько щелчков мыши, мониторинг приложений через уникальное графическое представление и управление функциями Istio из удобного UI. Тогда мы упомянули, что платформа способна управлять многокластерными сервисными сетками Istio в многооблачных и гибридных развёртываниях.
В этой статье более подробно рассмотрим эту функцию — автоматизированный многокластерный service mesh.
Будь то один или несколько кластеров, многооблачная или гибридная среда, Backyards использует один и тот же набор функций и удобный интерфейс. Чрезвычайно просто начать с одного кластера, а потом в несколько щелчков мыши расширить service mesh на другие кластеры (multi-cloud или hybrid-cloud).
Мотивация
Гибридные и многооблачные системы быстро входят в обиход предприятий. Интерес и принятие таких решений сильно выросли после того, как Google представила Anthos в апреле этого года.
Мы тоже заметили увеличение такого интереса в большинстве компаний, с которыми обсуждали эту тему. Кто-то предпочитает обрабатывать данные в собственных дата-центрах, обращаясь к облачным сервисам только в моменты пиковых нагрузок. Другие постоянно ищут у облачных провайдеров самые низкие тарифы и выгодные предложения, увеличивая рабочую нагрузку только когда цена это позволяет. Всем им нужен удобный способ перемещения между различными облаками по запросу конкретного клиента, из-за нормативных регулирований или требований бизнеса, а также для построения нескольких разных топологий поверх этой многооблачной и гибридной инфраструктуры.
По мере роста спроса на гибридные и многокластерные решения мы стали думать, как удовлетворить потребности наших клиентов.
Пользователи Pipeline работают с одним или несколькими облаками. От этого зависит, какие конкретно функции им нужны. Можно выделить три ключевые функции:
Предпосылки
С самого начала платформа Pipeline поддерживала подключение разных облачных провайдеров на разных уровнях (кластеры, развертывания и службы). Это всегда было одним из наших приоритетов.
Одновременно мы активно работали над Istio. Сначала выпустили оператор для упрощения деплоя и управления Istio, а затем исследовали его мультикластерные возможности. В результате мы создали Backyards, автоматизированный продукт для многооблачной и гибридной инфраструктуры, интегрированный в Pipeline, c опенсорсным оператором Istio.
Backyards в Pipeline
В Pipeline вы можете установить гибридный или многокластерный service mesh и управлять им в локальной среде или в любой комбинации из пяти поддерживаемых нами облачных провайдеров.
Функция группировки кластеров (Cluster group) позволяет сформировать группы из кластеров при условии выбора одного кластера в качестве главного. Затем можно связать их с различными функциями, такими какMulti-cluster Deployment
илиService Mesh
.
Multi-cluster Deployment
позволяет развернуть приложение одновременно на нескольких кластерах. Здесь мы не заостряем внимание на этой функции, но она будет использоваться для простого развертывания приложения на нескольких кластерах. Подробнее о ней можно почитать в этой статье.
В этой статье подробно рассмотрим функциюService Mesh
. Она устанавливает Istio на главном кластере и автоматически соединяет все кластеры в группе с помощью оператора Istio. После этого вы получаете межкластерное представление своих служб, а многокластерный mesh с точки зрения управления практически не отличается от обычного однокластерного.
Функции
Создание service mesh
Начнем с создания кластера на AWS, используя легкий и CNCF-сертифицированный дистрибутив Kubernetes — PKE. Затем построим service mesh Istio на этом кластере.
При создании service mesh в фоне также формируется кластерная группа (cluster group).
Через несколько секунд «сетка» установлена и готова к использованию.
![](https://habrastorage.org/webt/y3/in/et/y3inetitm4ngvd4wbcwkzrtpbzw.gif)
Развертывание приложения
Теперь нам нужно демонстрационное приложение с микросервисами, чтобы показать возможности нашего продукта. В демонстрационных целях мы создали очень простой проект AllSpark, а также сделали диаграмму Helm c предварительной конфигурацией развертывания AllSpark, которое имитирует систему бронирования билетов в кинотеатре. Всё сделано в нашем облачном (SaaS) сервисе для диаграмм Helm.
С помощью вышеупомянутой функции
Multi-cluster Deployment
развернем это приложение, перейдя на вкладку Multi Cluster Deployments
в UI. Добавляем в Pipeline репозиторий https://charts.banzaicloud.io/gh/spotguidetest
, затем диаграмму meshdemo
и нажимаем DEPLOY
(для установки всех компонентов убедитесь, что все значения установлены в true
).![](https://habrastorage.org/webt/xm/el/jy/xmeljy6q3iqbshd48bybu8lqmig.gif)
Можно было выбрать простое развертывание на один кластер, но мы указали мультикластерный вариант, который пригодится позже, при работе с несколькими кластерами.
Обзор service mesh
Если вернуться к списку service mesh и нажать кнопку
observe
, появится панель управления. Поскольку в нашем тестовом приложении нет никакого трафика, а в системе нет метрик, то здесь мы пока не увидим никакой визуализации. В интерфейсе есть функция test flight
, которая направляет трафик к выбранным конечным точкам. Если нажать кнопку HTTP
в правом верхнем углу, вы сможете заполнить форму, содержащую сведения о конечной точке, и отправить в свои службы некоторый тестовый трафик. В нашем примере трафик должен попасть в службу frontpage на порту 8080.Через несколько секунд появится график ваших служб. Узлы на нем представляют собой службы или рабочие нагрузки, а стрелки — сетевые соединения между различными службами. График построен по метрикам Istio, которые приходят из Prometheus.
![](https://habrastorage.org/getpro/habr/post_images/a39/7e0/099/a397e00992f49c862bb4fc039328d4cb.png)
Создание дополнительных кластеров
Расширение service mesh на дополнительные кластеры — даже у нескольких разных облачных провайдеров — выполняется всего в несколько щелчков мыши. Давайте создадим три дополнительных кластера у трех разных провайдеров, так интереснее. Мы можем легко развернуть еще один кластер PKE в Azure, а также кластеры OKE и GKE.
![](https://habrastorage.org/webt/bd/g7/wp/bdg7wpkuagluo5redzodlh3q0ka.gif)
Расширение service mesh
Вернемся к списку service mesh, нажмем кнопку
RESIZE MESH
, а затем ADD NEW CLUSTER
. Выбираем ранее созданные кластеры и нажимаем кнопку ADD
. Вот и всё.![](https://habrastorage.org/webt/mm/g9/rp/mmg9rp74sdp8hmybk7odulh9yzi.gif)
Расширение может занять несколько минут: каждый кластер должен подключиться и дойти до состояния
HEALTHY
.Развёртывание приложения в нескольких кластерах
Теперь у нас service mesh на несколько кластеров, а ранее была активирована функция
Multi-cluster Deployment
в Pipeline, поэтому можно легко развернуть на этих кластерах наши демонстрационные микросервисы. В этой конкретной диаграмме Helm можно запросто включать и выключать компоненты. Поскольку функция Multi-cluster Deployment
поддерживает переопределение параметров для каждого кластера, нужно лишь отредактировать деплой и установить, какие компоненты мы хотим запустить в каком кластере.Для мультикластерного развертывания мы изменили настройки таким образом:
PKE на AWS
services: true
istioresources: true
frontpage: true
catalog: true
bookings: true
PKE на Azure
services: true
moviesv1: true
moviesv2: true
moviesv3: true
OKE
services: true
payments: true
notifications: true
GKE
services: true
analytics: true
![](https://habrastorage.org/webt/hi/zd/1a/hizd1ajvovnzl7nn0cg5dstgtrg.gif)
Обзор service mesh на нескольких кластерах
Опять выбираем
test flight
в интерфейсе, чтобы направить дополнительный трафик на выбранную ранее конечную точку. Через несколько секунд появится что-то похожее на граф внизу. Теперь наше приложение распределено по четырем кластерам у четырех разных провайдеров.Потрясающе, правда?!
![](https://habrastorage.org/getpro/habr/post_images/11a/72c/12a/11a72c12a16805ea697effda2d9d17f9.png)
Конфигурация НРА
Прежде чем закончить статью, взглянем на последнюю настройку: горизонтальное автомасштабирование pod'ов (Horizontal Pod Autoscaler). На странице
Single-cluster Deployment
в Pipeline вы можете легко настроить HPA на любое развертывание (в нашем случае analytics-v1
).![](https://habrastorage.org/getpro/habr/post_images/1ef/ac0/7ec/1efac07ecb4dc9f722b6b970c8a2647a.png)
Когда вы установили HPA и направили на свои службы достаточно трафика для запуска автомасштабирования, вы увидите, как в интерфейсе появляется все больше pod'ов, соответствующих проекту
analytics-v1
. Вы также увидите увеличение потока запросов по ребрам графа, что отражается в цифрах и в толщине ребер.![](https://habrastorage.org/webt/lw/0p/7d/lw0p7dzyj5eq9rtbcaqgc_l53km.gif)
Резюме
Благодаря Backyards в Pipeline легко настроить гибридный или многокластерный service mesh. Затем можно деплоить, отслеживать, управлять и устранять неполадки приложений на нескольких кластерах с помощью одного удобного пользовательского интерфейса.
Пробуйте бесплатно!