В этом разделе мы рассмотрим два подхода к использованию эфемерных сред на Kubernetes. Первый подход заключается в использовании общего кластера Kubernetes, где каждая эфемерная среда создается в отдельном пространстве имен (namespace), но сам кластер остается единым для всех. Второй подход предусматривает создание отдельного кластера для каждой эфемерной среды.
Первый подход более экономичен, так как позволяет использовать ресурсы кластера более рационально. Второй же обеспечивает лучшую изоляцию между различными средами, что может быть необходимо для соблюдения нормативных требований.
Вы можете найти GitHub репозиторий с примером этого демонстрационного проекта здесь.
В этой демонстрации система будет состоять из двух микросервисов и одной базы данных Mongo для хранения данных. Когда мы откроем Pull Request (PR) для одного из микросервисов, на Kubernetes будет автоматически создана новая среда. Для создания и уничтожения эфемерной среды мы будем использовать инструмент vcluster. После завершения тестирования можно будет легко закрыть или смержить PR, что запустит еще один конвейер для удаления эфемерной среды.
Эти рабочие нагрузки мы развернули локально на кластере Kubernetes. Конвейеры созданы с использованием рабочих процессов GitHub Actions и инструмента kustomize для простого развертывания всей системы.
Для сред разработки нам необходимо создать конвейеры для автоматизации создания эфемерной среды для каждого микросервиса, наш конвейер должен иметь следующие шаги:
- Проверка кода
- Сборка Docker-образа
- Отправка нового Docker-образа
- Обновление манифестов Kubernetes
- Развертывание нового временного окружения
- Развертывание всей системы в этом окружении
- Предоставление доступа к этому окружению