Частичная отгрузка системы для проверки фичи в конкретном сервисе
Отгрузка сервиса с кастомными параметрами
При отгрузках qkey-123 ветки в кластер kubernetes в Jenkins есть возможность выбрать название релиза и ветку values конфигов.
При "Сборке и параметрами" в Jenkins У вас появляются текстовые поля VALUES_BRANCH и RELEASE_NAME.
Параметр VALUES_BRANCH дает возможность выбрать какую Values ветку будет использовать Jenkins для отгрузки в kubernetes. Параметр RELEASE_NAME можно выбрать как будет отгружаться сервис как "master" или как ветка задачи (qkey-123).
Это нужно для быстрого тестирования обратной совместимости вашего кода с другими сервисами.
Также была добавлена функциональность сохранения values ветки предыдущей отгрузки в кластер. Это нужно для того чтобы по коммиту в гитлаб ваш код сразу отгружался в кластер kubernetes с той веткой values с которой вы уже отгружали сервис.
Проблема
Закончив какую-то фичу вы должны отдать её на проверку менеджеру/тестировщику. Правки вы вносили в back сервис, а проверять нужно через какой-то front сервис, например через админку. Необходимо предоставить проверяющему front сервисы, через которые он сможет взаимодействовать с вашей версией back сервиса.
Решение
План такой: отгружаем свой сервис, он получает уникальное имя в соответствии с названием ветки в гите. Дополнительно отгружаем все необходимые сервисы чтобы можно было через front сервис работать с целевым back сервисом. Настраиваем все отгруженные сервисы так, чтобы они делали запросы друг к другу.
Необходимые действия
- Выясняем какие именно дополнительные сервисы нам нужно будет отгрузить
- В репозитории с values файлами создаём ветку для нашей задачи
- В этой ветке, в файле stage/common-env.yaml меняем адреса сервисов так
- Отгружаем целевой сервис из ветки задачи
- Отгружаем дополнительные сервисы из ветки мастер, но указав при отгрузке VALUES_BRANCH и RELEASE_NAME равный ветке задачи
Пример:
Есть сервисы admin-front
, admin-back
и oms
.
Мы сделали задачу qkey-123
в oms
и хотим чтобы менеджер её проверил через сервис admin-front
.
Закончив работу в oms
делаем в репозитории с values файлами ветку qkey-123
,
и меняем там адреса сервисов вот так:
app:
env:
ADMIN_BACK_HOST:
value: "http://admin-back-qkey-123.dev.svc.cluster.local"
OMS_HOST:
value: "http://oms-qkey-123.dev.svc.cluster.local"
адреса других сервисов не меняем.
Отгружаем ветку qkey-123
сервиса oms
.
Отгружаем сервисы admin-front
и admin-back
из ветки master
, но VALUES_BRANCH=qkey-123
+ RELEASE_NAME=qkey-123
.
Сервис admin-front
получит публичный адрес и менеджер сможет проверить задачу.
Сервисы удаляться автоматически через 14 дней если за это время они ни разу не будут отгружены.
Когда задача будет протестирована и одобрена для мержа в мастер, ветку qkey-123 в репозитории с values файлами нужно удалить.