Перейти к основному содержимому

Частичная отгрузка системы для проверки фичи в конкретном сервисе

Отгрузка сервиса с кастомными параметрами

При отгрузках 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 сервисом. Настраиваем все отгруженные сервисы так, чтобы они делали запросы друг к другу.

Необходимые действия

  1. Выясняем какие именно дополнительные сервисы нам нужно будет отгрузить
  2. В репозитории с values файлами создаём ветку для нашей задачи
  3. В этой ветке, в файле stage/common-env.yaml меняем адреса сервисов так
  4. Отгружаем целевой сервис из ветки задачи
  5. Отгружаем дополнительные сервисы из ветки мастер, но указав при отгрузке 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 файлами нужно удалить.