Командная разработка приложения с помощью систем CI/CD и сервисов Evolution

Из этого руководства вы узнаете, как настроить автоматическое развертывание приложения с помощью систем CI/CD и сервисов Cloud.ru Evolution:

  • Artifact Registry — сервис для хранения OCI-артефактов.

  • Container Apps — сервис для создания и публикации контейнеров в облаке.

Вы сможете создать процесс автоматической сборки и публикации Docker-образа из системы контроля версий в Artifact Registry. А также настроить автоматическое развертывание новой ревизии контейнера в Container Apps каждый раз после обновлении образа. Ниже представлена схема взаимодействия сервисов Cloud.ru Evolution при реализации этого сценария.

../_images/schm__deploy-app-ci-cd.svg

Используйте любую систему контроля версий, поддерживающую CI/CD: GitHub, GitLab, BitBucket, Azure DevOps и другие. В этом руководстве в качестве примера приведены GitHub и GitLab.

Перед началом работы

  1. Создайте репозиторий в GitLab или GitHub, если его еще нет.

  2. На локальном компьютере установите Docker Desktop.

  3. Соберите локально 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
    
  4. Создайте реестр и репозиторий в сервисе Artifact Registry.

  5. Получите ключи доступа в сервисе Artifact Registry.

Настройка пайплайна CI/CD и загрузка образа

На этом шаге вы настроите процесс автоматической сборки и публикации образа из системы контроля версий в Artifact Registry.

Запуск приложения в контейнере Container Apps

На этом шаге вы создадите ревизию контейнера и настроите автоматическое развертывание.

  1. Перейдите в раздел Evolution → Artifact Registry.

  2. В разделе Реестры выберите созданный реестр.

  3. Перейдите в раздел Репозитории → Артефакты репозитория

  4. В строке с нужным образом откройте меню Опции.

  5. Нажмите Создать Container App.

  6. Заполните поля и активируйте опции:

    • Название контейнера — произвольное название контейнера, может совпадать с именем образа.

    • Порт контейнера — порт, на котором будет работать контейнер.

      Принимаются значения от 1 до 65535 включительно.

    • vCPU/RAM — количество vCPU и RAM, которые выделяются для каждого экземпляра контейнера при обработке вызова.

    • Минимальное и максимальное количество экземпляров при масштабировании сервиса.

    • Опция Публичный адрес — активируйте опцию, чтобы получить URL-адрес для вызова контейнера из интернета по HTTPS без авторизации.

    • Опция Автоматическое развертывание — если опция активирована, то каждый раз после загрузки в Artifact Registry новой версии образа на стороне Container Apps будет автоматически создаваться новая ревизия контейнера на базе обновленной версии образа.

    • Маска тега — укажите значение в формате <имя_тега>.* или *. Например, если указать значение v.*, то при загрузке в Artifact Registry новых версий образов с тегами v.1, v.2, v.3 и далее будет автоматически создаваться новая ревизия контейнера в Container Apps.

    ../_images/s__cr__create-container.png
  7. Нажмите Создать.

    Вы будете перенаправлены на страницу сервиса Container Apps для дальнейшего управления контейнером. Контейнер будет создан и запущен в течение нескольких минут.

  8. Для вызова контейнера используйте Публичный URL, указав его в адресной строке браузера. Публичный URL доступен на странице контейнера в Container Apps.

Теперь каждый раз после обновления образа в репозитории GitHub/GitLab будет запускаться процесс сборки и загрузки образа в Artifact Registry.

На стороне Container Apps будет автоматически создаваться новая ревизия контейнера на базе обновленного образа. Запросы будут автоматически перенаправляться к последней созданной ревизии контейнера. Предыдущая ревизия станет недоступна для вызова.

Запустили Evolution free tier
для Dev & Test
Получить