Перейти к содержанию

Интеграция с Yandex Cloud

Данный функционал доступен только в enterprise версии GitFlic


Интеграция с Yandex Cloud позволяет выполнять GitFlic CI/CD конвейеры на специально выделенных виртуальных машинах с минимальными простоями вычислительных ресурсов.

Настройка Yandex Cloud

Для начала работы с интеграцией необходимо сконфигурировать облачное окружение. Подробнее о структуре облака можно узнать в официальной документации.

Обратите внимание на квоты, накладываемые облаком на объем используемых ресурсов.

Наиболее важными являются ограничения на количество одновременно выполняемых операций с виртуальными машинами в рамках одного каталога (по умолчанию 15); максимальное количество виртуальных машин в облаке (по умолчанию 10).

В облаке по умолчанию присутствуют каталог, 3 подсети и 1 группа безопасности. Для настройки интеграции можно использовать данные сущности или создать новые.

Для взаимодействия GitFlic с Yandex Cloud в каталоге требуется создать сервисный аккаунт с правами не ниже editor.

Для авторизации используется oauth токен, процесс генерации токена описан в документации. Токен необходимо генерировать пользователем, у которого есть доступ к целевому облаку с ролью не ниже editor.

Далее необходимо получить доступ к официальному образу облачного агента GitFlic.

Механика получения доступа к официальному образу находится в проработке.

На этом настройки на стороне облака завершены.

Настройка на стороне GitFlic Enterprise

Необходимо добавить следующие параметры в application.properties:

togglz.features.GITFLIC_YANDEX_RUNNER.enabled=true
gitflic.ci-cd.cloud.enabled=true

После чего требуется перезагрузить приложение.

Далее в панели администратора необходимо перейти во вкладку Настройки -> Настройки конфигурации яндекс-агентов.

На странице представлены конфигурации, на основе которых будут создаваться виртуальные машины для облачных агентов.

Конфигурация будет выбрана для задачи по тегу - если задача имеет единственный тег - будет выбрана конфигурация, название которой совпадает с данным тегом, если такая есть. Если задача не имеет тегов, будет выбрана конфигурация по умолчанию, если такая есть.

В рамках примера будут изменены параметры light конфигурации, которая присутствует в сборке по умолчанию. Необходимо установить ID образа, ID подсети и группу безопасности.

Для подсети и группы безопасности можно использовать соответствующие сущности, которые были созданы яндекс облаком по умолчанию. Значение параметра ID образа должен соответствовать ID образа облачного агента GitFlic.

Для завершения настроек интеграции требуется сконфигурировать отдельно развернутый координатор.

Настройка на стороне GitFlic Coordinator

Координатор должен быть доступен извне. В дополнение к остальным обязательным конфигурационным параметрам необходимо указать следующие значения в application.properties:

# протокол, домен или хост координатора
gitflic.coordinator.url=

# протокол, домен или хост, по которому осуществляется транспорт данных
gitflic.transport.url=

togglz.features.GITFLIC_YANDEX_RUNNER.enabled=true
gitflic.ci-cd.cloud.enabled=true
togglz.features.GITFLIC_COMPANY_TARIFICATION.enabled=false

# ID сервисного аккаунта
yandex.cloud.connection.service-account-id=
# OAUTH токен от облака
yandex.cloud.connection.oauth-token=
# ID облака
yandex.cloud.cloud-id=
# ID каталога, в котором будут создаваться виртуальные машины под задачи
yandex.cloud.folder-list[0].id=
# квота по одновременным операциям, по умолчанию 15
yandex.cloud.folder-list[0].operation-quota=15
# если каталогов больше одного, далее можно перечислить их свойства, например yandex.cloud.folder-list[1].id=...

При перезапуске координатора произойдет проверка указанных настроек, а также данных по конфигурациям, которые были указаны в панели администратора. Для работы конфигурации необходимо исправить ошибки, возникшие при проверке, если такие есть.

Если проверка прошла успешна, в логах координатора должно появиться сообщение вида “работа с облачным CI/CD начнется через X секунд”. По прошествии этого времени координатор начнет обрабатывать задачи, которые находятся в статусе “Ожидает ресурсы”.

Включение облачного CI/CD для целевых компаний

По умолчанию выполнение CI/CD на основе интеграции выключено для всех компаний.

Включить работу интеграции для целевых компаний можно в панели администратора. В панели администратора требуется перейти на вкладку Компании -> целевая компания из списка -> Управление агентами CI/CD.

Параметры “Разрешить использование облачных агентов” и “Максимальное количество облачных агентов” влияют на доступность облачных агентов для компании.

После завершения данных настроек CI/CD в проектах соответствующих компаний будет выполняться на мощностях облачных агентов.

Дополнительные настройки

Если требуется внести модификации в образ облачного агента, то сделать это можно запустив на основе исходного образа ВМ, с пробросом в метаданных ключа maintenance-mode со значением 1. Это введет агента в режим отладки, что позволит модифицировать конфигурацию ВМ. После этого необходимо создать новый образ и изменить конфигурацию облачных агентов в панели администратора, поменяв ID образа на актуальный.

Если требуется в рамках работы облачных агентов использовать собственный Docker-реестр, то параметры подключения к нему можно указать с помощью объявления следующих CI/CD переменных на уровне сервиса, родительской компании, проекта или конфигурационного файла:

# для какого реестра будет выполнена команда docker login
YANDEX_DOCKER_REGISTRY_URL=

# пользователь, под которым будет выполнен docker login
YANDEX_DOCKER_REGISTRY_USER=

# пароль, используемый для docker login (рекомендуем маскировать данную переменную)
YANDEX_DOCKER_REGISTRY_PASSWORD=

Дополнительные настройки в application.properties GitFlic Enterprise и Coordinator:

# включен ли облачный CI/CD
gitflic.ci-cd.cloud.enabled=true

Дополнительные настройки в application.properties GitFlic Coordinator:

Режим Hot-reserve – облачным агентам отдаются лишь те задачи, которые не были подхвачены другими агентами в течение N секунд (по умолчанию 300).

# включен ли режим hot-reserve
gitflic.ci-cd.yandex.tactic.hot-reserve=false

# через данное кол-во секунд облачные агенты начинают выполнять задачу
gitflic.ci-cd.yandex.tactic.hot-reserve.agent.timeout=300