В предыдущей статье показал вам как работают 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, интегрируясь с существующими инструментами и обеспечивая непрерывное тестирование и развертывание в различных средах.
Пример:

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

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

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

Как вы уже наверно догадались, это лишь одно из применений DevSpace и у этого инструмента есть много интересного и полезного о чем вы можете узнать на официальном сайте https://www.devspace.sh/docs/
Упрощённая таблица сравнения Garden.io и DevSpace:
Характеристика | ||
---|---|---|
Что делает | Упрощает работу разработчиков в Kubernetes | Позволяет разрабатывать и запускать приложения в Kubernetes в реальном времени |
Количество звезд на github | ||
Открытый код | Да | Да |
Особенности UI/UX | Менее интуитивный интерфейс | Удобный и интуитивный интерфейс |
Настройки | Настраивается через | Настраивается через |
Запуск и обновление | Сфокусирован на тестировании и запуске | Прямой процесс запуска и обновления |
Синхронизация | Обновляет код, но не сразу | Синхронизирует код быстро и в реальном времени |
Сообщество | Активное, но может быть меньше чем у DevSpace | Большое и активное |
Настройка и конфигурация | Более сложная | Простая и удобная для новичков |
Облако | Хорошо работает с облачными сервисами | Отличная интеграция с облаком |
Если вы знаете другие инструменты, которыми вы пользуетесь или пользовались, просьба отписаться в комментариях, по возможности буду обновлять пост с примерами других инструментов.