Командная разработка приложения с помощью систем CI/CD и сервисов Evolution
Из этого руководства вы узнаете, как настроить автоматическое развертывание приложения с помощью систем CI/CD и сервисов Cloud.ru Evolution:
Artifact Registry — сервис для хранения OCI-артефактов.
Container Apps — сервис для создания и публикации контейнеров в облаке.
Вы сможете создать процесс автоматической сборки и публикации Docker-образа из системы контроля версий в Artifact Registry. А также настроить автоматическое развертывание новой ревизии контейнера в Container Apps каждый раз после обновлении образа. Ниже представлена схема взаимодействия сервисов Cloud.ru Evolution при реализации этого сценария.
Используйте любую систему контроля версий, поддерживающую CI/CD: GitHub, GitLab, BitBucket, Azure DevOps и другие. В этом руководстве в качестве примера приведены GitHub и GitLab.
Перед началом работы
Создайте репозиторий в GitLab или GitHub, если его еще нет.
На локальном компьютере установите Docker Desktop.
Соберите локально Docker-образ для вашего приложения. Образ должен быть собран под платформу linux/amd64.
Вы также можете использовать готовый образ из публичного репозитория Cloud.ru. Для этого выполните команду в Docker CLI или любом привычном терминале на вашем компьютере:
docker build --tag <registry_name>.cr.cloud.ru/react-hello-world https://gitverse.ru/sc/cloudru/evo-containerapp-react-sample.git#master --platform linux/amd64
Создайте реестр и репозиторий в сервисе Artifact Registry.
Получите ключи доступа в сервисе Artifact Registry.
Настройка пайплайна CI/CD и загрузка образа
На этом шаге вы настроите процесс автоматической сборки и публикации образа из системы контроля версий в Artifact Registry.
Запуск приложения в контейнере Container Apps
На этом шаге вы создадите ревизию контейнера и настроите автоматическое развертывание.
Перейдите в раздел
.В разделе Реестры выберите созданный реестр.
Перейдите в раздел
В строке с нужным образом откройте меню .
Нажмите Создать Container App.
Заполните поля и активируйте опции:
Название контейнера — произвольное название контейнера, может совпадать с именем образа.
- Порт контейнера — порт, на котором будет работать контейнер.
Принимаются значения от 1 до 65535 включительно.
vCPU/RAM — количество vCPU и RAM, которые выделяются для каждого экземпляра контейнера при обработке вызова.
Минимальное и максимальное количество экземпляров при масштабировании сервиса.
Опция Публичный адрес — активируйте опцию, чтобы получить URL-адрес для вызова контейнера из интернета по HTTPS без авторизации.
Опция Автоматическое развертывание — если опция активирована, то каждый раз после загрузки в Artifact Registry новой версии образа на стороне Container Apps будет автоматически создаваться новая ревизия контейнера на базе обновленной версии образа.
Маска тега — укажите значение в формате
<имя_тега>.*
или*
. Например, если указать значениеv.*
, то при загрузке в Artifact Registry новых версий образов с тегами v.1, v.2, v.3 и далее будет автоматически создаваться новая ревизия контейнера в Container Apps.
Нажмите Создать.
Вы будете перенаправлены на страницу сервиса Container Apps для дальнейшего управления контейнером. Контейнер будет создан и запущен в течение нескольких минут.
Для вызова контейнера используйте Публичный URL, указав его в адресной строке браузера. Публичный URL доступен на странице контейнера в Container Apps.
Теперь каждый раз после обновления образа в репозитории GitHub/GitLab будет запускаться процесс сборки и загрузки образа в Artifact Registry.
На стороне Container Apps будет автоматически создаваться новая ревизия контейнера на базе обновленного образа. Запросы будут автоматически перенаправляться к последней созданной ревизии контейнера. Предыдущая ревизия станет недоступна для вызова.
для Dev & Test