Синхронизация локальных изменений с kubernetes контейнером. Часть 2

В предыдущей статье показал вам как работают docker desktop watch, skaffold dev и tilt, но инструменты на этом не закончилис и сегодня хочу рассказать и показать вам работу таких инструментов как Garden и DevSpace.

Конфиги настроены для kubernetes, самый простой способ развернуть у себя локальный кластер — это docker desktop, заходим в настройки и отмечаем галочкой Enable Kubernetes или же можем воспользоваться minikube
У garden есть встроенный ephemeral kubernetes провайдер, который позволяет запускать временный кластер kubernetes

Garden

Garden — это современный инструмент для автоматизации разработки и тестирования в Kubernetes. Он позволяет разработчикам быстро и эффективно создавать, тестировать и развертывать микросервисы в Kubernetes, поддерживая эфемерные кластеры для изоляции и масштабируемости. Garden упрощает процесс CI/CD, интегрируясь с существующими инструментами и обеспечивая непрерывное тестирование и развертывание в различных средах.

Пример:

https://github.com/idsulik/local-dev/blob/main/deploy/skaffold.yaml

Пока писал конфиг для garden не покидало ощущение, что я пишу манифесты k8s, т.к. по структуре они очень похожи, что очень удобно. Настройка довольно простая, создаем одно окружение local, объявляем провайдер local_kubernetes, для сборки указываем container тип, контекст и путь до dockerfile. Последним идет деплоя, где мы указываем, что деплой зависит от build.web-app(указываем на конфигурацию сборки выше), а в spec задаем параметры деплоя, такие как — sync(что синхронизировать и куда, режим синхронизации и какую папку исключить), ports(название порта и номер норта в контейнере), ingresses(путь и порт, по которому хотим открывать это приложение)

Для деплоя в режиме синхронизации, нужно запустить следующую команду:

garden deploy --sync

Пример работы skaffold dev

Пример работы skaffold dev

У garden очень много функционала, в данной статье рассмотрел лишь простое применение для сборки, деплоя и синхронизации изменений в контейнер пода, рекомендую открыть официальную документацию и посмотреть все возможности этого инструмента https://docs.garden.io/

Devspace

DevSpace — это мощный инструмент для разработчиков, упрощающий процесс разработки и развертывания приложений в Kubernetes. Он обеспечивает быструю итерацию и локальную отладку микросервисов непосредственно в Kubernetes, минимизируя разрыв между локальной разработкой и продакшн-средой. DevSpace поддерживает гибкую настройку рабочих процессов, интеграцию с CI/CD и возможность работы с множественными кластерами и средами, облегчая управление сложными микросервисными архитектурами.

Пример:

https://github.com/idsulik/local-dev/blob/main/deploy/Tiltfile

Конфигурация не похожа не k8s манифесты, как у Garden, но тоже выглядит довольно простой. Указываем в images образы, в нашем случае один образ app, у которого указан context и путь до dockerfile, в deployments указываем, что мы хотим деплоить и как, у нас это app и путь до kubernetes manifest.

Для запуска в режиме разработки выполняем следующую команду:

devspace dev

Пример работы title up

Пример работы title up

Как вы уже наверно догадались, это лишь одно из применений DevSpace и у этого инструмента есть много интересного и полезного о чем вы можете узнать на официальном сайте https://www.devspace.sh/docs/

Упрощённая таблица сравнения Garden.io и DevSpace:

Характеристика

Garden.io

DevSpace

Что делает

Упрощает работу разработчиков в Kubernetes

Позволяет разрабатывать и запускать приложения в Kubernetes в реальном времени

Количество звезд на github

3.1k

4k

Открытый код

Да

Да

Особенности UI/UX

Менее интуитивный интерфейс

Удобный и интуитивный интерфейс

Настройки

Настраивается через garden.yml

Настраивается через devspace.yaml

Запуск и обновление

Сфокусирован на тестировании и запуске

Прямой процесс запуска и обновления

Синхронизация

Обновляет код, но не сразу

Синхронизирует код быстро и в реальном времени

Сообщество

Активное, но может быть меньше чем у DevSpace

Большое и активное

Настройка и конфигурация

Более сложная

Простая и удобная для новичков

Облако

Хорошо работает с облачными сервисами

Отличная интеграция с облаком

Если вы знаете другие инструменты, которыми вы пользуетесь или пользовались, просьба отписаться в комментариях, по возможности буду обновлять пост с примерами других инструментов.

Все исходники можно найти тут

© Habrahabr.ru