Как стать автором
Обновить
97.21
Cloud.ru
Провайдер облачных сервисов и AI-технологий

Запускаем приложения в облаке без Kubernetes и настройки виртуальных машин: лабораторная

Время на прочтение7 мин
Количество просмотров481

Многие из вас прекрасно знают, насколько удобные и полезные инструменты виртуализация и Managed Kubernetes. А также понимают — чтобы ими управлять, нужен DevOps или как минимум тот, кто сможет настроить балансировщик. Но давайте на чистоту: когда приложение уже готово, заниматься инфраструктурными настройками не сильно хочется. Хочется быстро развернуть его и сразу показать коллегам, друзьям и другим пользователям интернета. 

Я Никита Бутримов — лидер направления в Cloud.ru, и сегодня я покажу, как быстро запускать frontend- и backend-приложения в облаке. А помогут нам в этом два сервиса — Evolution Container Apps и Evolution Artifact Registry.

Evolution Container Apps + Evolution Artifact Registry: как это работает

Как подготовить среду

Как развернуть frontend-приложение в облаке 

Как развернуть backend-приложение на Python, Go, Java Script или C# в облаке

Evolution Container Apps + Evolution Artifact Registry: как это работает

Для начала расскажу про сервисы. Evolution Container Apps — это сервис для создания и запуска контейнерных приложений. Контейнеры запускаются из Docker-образов, которые в свою очередь хранятся в приватном защищенном репозитории Evolution Artifact Registry

Логика работы простая:

  1. Вы загружаете Docker-образ приложения в Evolution Artifact Registry.

  2. Затем создаете контейнер из загруженного образа в Evolution Container Apps.

  3. Приложение запускается в контейнере и становится доступно всем пользователям интернета.

Схема развертывания приложения с помощью сервисов Evolution Container Apps и Evolution Artifact Registry
Схема развертывания приложения с помощью сервисов Evolution Container Apps и Evolution Artifact Registry

Кстати, сервисы Evolution Container Apps и Evolution Artifact Registry проинтегрированы с другими сервисами нашей облачной платформы и позволяют динамически масштабироваться. Даже если у вас стартап и пока нет пользователей, когда они появятся, вы сможете быстро отмасштабировать приложение в зависимости от нагрузки — как горизонтально, так и вертикально. 

Теперь перейдем к главному — запустим приложение в облаке на примере простого frontend- и backend-приложения. Для этого сначала подготовим среду.

Как подготовить среду

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

  1. Зарегистрируйтесь в личном кабинете Cloud.ru или войдите, если уже зарегистрированы.

  2. Подключите сервисы Evolution Container Apps и Evolution Artifact Registry.

  3. Установите Docker Desktop.

  4. Установите Docker CLI (или используйте любой другой терминал на вашем компьютере).

Готово. Теперь перейдем к размещению приложения.

Как развернуть frontend-приложение в облаке 

Давайте посмотрим, как загрузить Docker-образ с готовым приложением в реестр, создать контейнер и опубликовать приложение в интернете.

Опционально

Вы можете зарегистрироваться в GitVerse, познакомиться с новой системой контроля версий, а также клонировать оттуда репозиторий кода. Для этого:

  1. Перейдите в нужную директорию на локальном компьютере.

  2. Выполните команду в терминале GitBash: 

git clone https://gitverse.ru/cloudru/evo-containerapp-react-sample

1. Создайте реестр в Evolution Artifact Registry

В личном кабинете перейдите в карточку сервиса Evolution Artifact Registry:

../_images/ar-go-console.png

Придумайте и пропишите название реестра — оно станет частью URI, который вы будете использовать при работе в Docker CLI. Затем нажмите Создать:

../_images/ar-registry-create.png

Скопируйте URI реестра — он пригодится на следующих шагах:

../_images/ar-registry-copy-uri.png

2. Получите ключи доступа для аутентификации

В личном кабинете Cloud.ru перейдите в раздел Управление профилем:

revision-running

Выберите раздел Ключи доступа и нажмите Создать ключ:

Введите краткое описание ключа, которое в будущем поможет идентифицировать его среди других ключей. Задайте время жизни ключа: от 1 до 365 дней. Затем нажмите Создать.

После этого будут сгенерированы Key ID (логин) и Key Secret (пароль). Сохраните Key Secret. Обратите внимание: если вы закроете окно, его нельзя будет открыть повторно.

3. Пройдите аутентификацию в реестре Evolution Artifact Registry

Откройте любой удобный терминал и введите команду для аутентификации: 

docker login <URI_реестра> -u <key_id> -p <key_secret>

Где:

  • <URI_реестра> — URI, сгенерированный после создания реестра;

  • <key_id> — логин персонального ключа (Key ID);

  • <key_secret> — пароль персонального ключа (Key Secret).

4. Соберите и подготовьте Docker-образ

На локальном компьютере соберите готовый Docker-образ из репозитория (в нашем примере из GitVerse) командой:

docker build --tag <URI_реестра>/react-hello-world https://gitverse.ru/sc/cloudru/evo-containerapp-react-sample.git#master --platform linux/amd64

Команда собирает образ и тегирует его для дальнейшей загрузки в реестр. Обратите внимание: Docker-образ должен быть собран под платформу linux/amd64, поэтому в команде используется флаг platform со значением linux/amd64.

5. Загрузите Docker-образ в реестр

Загрузите образ в реестр Evolution Artifact Registry командой:

docker push <URI_реестра>/react-hello-world

Где:

  • <URI_реестра> — URI, сгенерированный после создания реестра;

  • react-hello-world — имя будущего репозитория в Evolution Artifact Registry. При этом имя репозитория должно соответствовать имени Docker-образа.

Убедитесь, что репозиторий и загруженный образ появились в Evolution Artifact Registry. Для этого перейдите в раздел РеестрыРепозиторииАртефакты сервиса.

../_images/ar-repository-sucess.png

6. Создайте и запустите контейнер

Нажмите на троеточие, чтобы открыть меню загруженного образа, и кликните Создать Container App:

../_images/ar-create-container.png

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

  • Название контейнера — глобально уникальное имя, на базе которого формируется адрес вашего приложения в домене *.containers.cloud.ru.

  • Порт контейнера — должен совпадать с портом вашего приложения. В примере порт 8080.

server {

    listen 8080;

    root /usr/share/nginx/html;

    index index.html;

    location / {

        try_files $uri $uri/ /index.html;

    }

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

  • Минимальное и максимальное количество экземпляров при масштабировании сервиса. По умолчанию происходит масштабирование с 0, что может вызывать небольшую задержку при старте вашего приложения. Установите минимальное количество экземпляров 0, а максимальное — 1.

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

Затем нажмите Создать:

run_from_ar_form

После этого откроется страница сервиса Evolution Container Apps, контейнер запуститься в течение нескольких секунд. Когда контейнер перейдет в статус «Выполняется», значит он успешно запущен:

../_images/ca-container-run.png

7. Проверьте развернутое приложение

Дождитесь, когда сформируется публичный URL, и скопируйте его. 

revision-running

Затем вставьте его в адресную строку браузера и проверьте работоспособность приложения.

Если приложение не отвечает: в списке ревизий проверьте, что последняя созданная ревизия находится в статусе «Выполняется». Если она в статусе «Публикуется» или «Ошибка», попробуйте создать новую ревизию — нажмите кнопку Создать ревизию на основе выбранной.

Готово, вы развернули frontend-приложение в облачном контейнере и опубликовали его в интернет. Теперь посмотрим на дополнительные настройки сервиса Evolution Container Apps на примере backend-приложения. 

Как развернуть backend-приложение на Python, Go, Java Script или C# в облаке

Можно использовать репозиторий ниже — в нем находится исходный код простого REST API приложения, написанного на разных языках (Java Script, Python, Go, C#).

git clone https://gitverse.ru/cloudru/evo-containerapp-restapi-js-go-python-dotnet-sample

1. Соберите образ и присвойте тег

Используйте реестр (как его создать, рассказали на шаге 1 инструкции выше), выполнив команду:

docker build --tag <registry_name>.cr.cloud.ru/restapi-python https://gitverse.ru/sc/cloudru/evo-containerapp-restapi-js-go-python-dotnet-sample.git#master:restapi-python/src --platform linux/amd64

2. Загрузите Docker-образ в реестр

Загрузите образ в реестр Evolution Artifact Registry командой:

docker push <registry_name>.cr.cloud.ru/restapi-python

Где:

  • <registry_name> — название реестра, которое вы указывали в Artifact Registry при его создании;

  • restapi-python — название будущего репозитория в Artifact Registry. Название репозитория должно соответствовать имени Docker-образа.

3. Создайте и запустите контейнер

Нажмите на троеточие, чтобы открыть меню загруженного образа, и кликните Создать Container App:

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

  • Название контейнера — глобально уникальное имя, на базе которого формируется адрес вашего приложения в домене *.containers.cloud.ru.

  • Порт контейнера — должен совпадать с портом вашего приложения. В примере порт 8080.

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

  • Минимальное и максимальное количество экземпляров при масштабировании сервиса. По умолчанию происходит масштабирование с 0, что может вызывать небольшую задержку при старте вашего приложения. Установите минимальное количество экземпляров 0, а максимальное — 1.

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

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

Затем нажмите Создать:

run_from_ar_form

После этого откроется страница сервиса Evolution Container Apps, контейнер запуститься в течение нескольких секунд. Когда контейнер перейдет в статус «Выполняется», значит он успешно запущен:

../_images/ca-container-run-restapi.png

4. Проверьте развернутое приложение

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

../_images/ca-public-url-restapi.png

Готово, вы развернули backend-приложение в облачном контейнере и опубликовали его в интернет.

Заключение

Вот так за несколько шагов можно развернуть приложение и сделать его доступным для всех пользователей интернета 🙂.

Теперь вы умеете:

  • загружать Docker-образ в Evolution Artifact Registry;

  • создавать репозитории в существующих реестрах Evolution Artifact Registry;

  • создавать и запускать контейнер в Evolution Container Apps;

  • управлять настройками масштабирования.

В следующей части статьи я планирую показать, как развернуть Jupyter Server. А пока вы можете попробовать и протестировать другие сервисы нашей облачной платформы с помощью бесплатного объема облачных ресурсов Evolution free tier.


Интересное в блоге:

Теги:
Хабы:
0
Комментарии0

Публикации

Информация

Сайт
cloud.ru
Дата регистрации
Дата основания
2019
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
Елизавета