yandex
Поиск
Связаться с нами

Как сохранить данные в S3 при работе с Evolution Container Apps

Допустим, вы разработчик. Вы пишете код, получаете от этого удовольствие и намерены приложить максимум усилий для создания и развития своего проекта. А вот разбираться с тем, где и как он будет запущен, вам не хочется. Что делать? 

Инструкции
Иллюстрация для статьи на тему «Как сохранить данные в S3 при работе с Evolution Container Apps»
Продукты из этой статьи:
Иконка-Evolution Container Apps
Evolution Container Apps
Иконка-Evolution Artifact Registry
Evolution Artifact Registry
Иконка-Evolution Object Storage
Evolution Object Storage

Мы в Cloud.ru создали среду, в которой можно развернуть приложение, не тратя время на создание виртуальных машин (ВМ), установку Docker и настройку кластеров Kubernetes. Один из ключевых элементов этой среды — Evolution Container Apps, сервис для запуска контейнерных приложений в облаке. В статье я расскажу, в чем его преимущества и как с его помощью за пару кликов запустить приложение из контейнера, не потеряв при этом данные.

Evolution Container Apps: что это и в чем его преимущества

Evolution Container Apps — это сервис для запуска приложений на базе Docker-образов в облаке. В числе его аналогов значатся продукты от таких гигантов зарубежного облачного рынка, как Google, Amazon и Azure. Вслед за этой большой тройкой мы предлагаем российскому бизнесу собственный сервис для быстрого запуска проектов и их вывода на рынок. 

Чтобы просто объяснить, зачем нужен Evolution Container Apps, представьте, что вы написали проект и хотите его запустить. Для этого нужно будет сделать примерно следующее: 

  • сначала собрать Docker-образ и выгрузить его в сервис Evolution Artifact Registry — облачный реестр для хранения OCI-артефактов;

  • затем перейти к работе с образом прямо в интерфейсе Evolution Artifact Registry или в Evolution Container Apps, выбрать порт, отметить, что сервис должен быть доступен для всех, и нажать кнопку Создать

После этого проект будет развернут и станет доступен для пользователей.

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим
Схема работы с Docker-образом в облаке Cloud.ru EvolutionСхема работы с Docker-образом в облаке Cloud.ru Evolution

Использование сервиса Evolution Container Apps дает разработчику ряд преимуществ:

  • Высокая скорость развертывания приложений. Сервис позволяет отказаться от настройки виртуальных машин, которая часто бывает долгой и энергоемкой.

  • Низкий порог входа. При использовании Evolution Container Apps можно забыть не только про настройку ВМ, но и про отладку автоматического восстановления работоспособности приложения при сбоях, а также про настройку Nginx и сертификатов. 

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

Отмечу, что опробовать Evolution Container Apps в деле можно бесплатно, используя Evolution free tier — объем облачных ресурсов, за который не нужно платить. 

При использовании Evolution Container Apps с free tier каждый месяц в личный кабинет пользователя начисляется объем ресурсов для работы контейнера: 480 ГБ RAM и 120 vCPU. Этого достаточно для тестирования и запуска небольших приложений. 

Ключевые преимущества сервиса Evolution Container AppsКлючевые преимущества сервиса Evolution Container Apps

Здесь важно сказать, что при спаде трафика до нуля гибкая модель оплаты подразумевает деактивацию экземпляров контейнеров и, как следствие, потерю данных. И тут на помощь приходит Evolution Object Storage — сервис на основе S3, который позволяет создавать бакеты и хранить данные вне зависимости от потока трафика. 

Запуск приложений в Evolution Container Apps и сохранение данных в Evolution Object Storage

Чтобы понять, как Evolution Object Storage помогает сохранять данные проекта, размещенного с помощью Evolution Container Apps, давайте создадим django-приложение для раздачи фотографий.  

Допустим, на старте работы есть: 

  • nginx-сервис для раздачи фотографий, который умеет раздавать файлы из папки с медиа; 

  • объектное хранилище S3 на платформе Cloud.ru Evolution, которое мы можем подключить к папке с медиа;

  • сервис управления файлами для добавления данных в папку с медиа и хранилище. 

Элементы, которые нужны для запуска приложения для раздачи фотографий без потери данныхЭлементы, которые нужны для запуска приложения для раздачи фотографий без потери данных

Для эффективной настройки работы приложения нужно сделать следующее: 

1. C помощью Evolution Container Apps создать Container App и первую ревизию — неизменяемую версию контейнера.

2. Связать созданный контейнер с сервисом Evolution Object Storage.

Туториал 1: как создать Container App и первую ревизию

Перед началом работы нужно создать реестр в Evolution Artifact Registry, пройти аутентификацию и загрузить Docker-образ в репозиторий. Далее перейдите к развертыванию приложения в контейнере: 

1. В личном кабинете Cloud.ru выберите сервис Container Apps на платформе Cloud.ru Evolution и нажмите Создать

2. Введите название приложения.

3. Активируйте опцию Привилегированный режим

Привилегированный режим дает контейнеру root-права при его выполнении. Использование этого режима опционально, но рекомендуется — некоторые Docker-образы со сторонними приложениями поддерживаются только в нем. 

4. На вкладке Общие параметры впишите все необходимое: выбрать конфигурацию (количество vCPU и RAM), добавить название контейнера, указать URI Docker-образа, выбрать порт, а также команду точки входа и аргументы. 

5. На вкладке Переменные укажите переменные окружения.

6. На вкладке Health-пробы добавьте liveness-пробу (опционально). 

7. На вкладке Тома добавьте том — бакет в сервисе Object Storage для хранения данных приложения. 

Именно тома помогают вашим бакетам подключиться к Evolution Container Apps. В них вы монтируете нужные папки, которые автоматически добавляются в контейнеры сервиса Evolution Container Apps, синхронизируются и отправляются в объектное хранилище. 

О том, как создавать бакеты в Object Storage, я расскажу подробнее чуть ниже.

Развертывание контейнера в Evolution Container AppsРазвертывание контейнера в Evolution Container Apps

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

9. Затем снова нажмите Следующий шаг и активируйте дополнительные опции: публичный адрес, тип масштабирования, логирование запросов, request- и idle-таймаут. 

10. В конце нажмите Создать. В течение нескольких секунд после этого контейнер опубликуется и будет готов для использования. 

Туториал 2: как создать бакет в Object Storage

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

Поэтому первым делом нужно создать бакет для базы данных. Для этого сделайте следующее: 

1. В личном кабинете Cloud.ru выберите сервис Object Storage на платформе Cloud.ru Evolution и нажмите Создать бакет.

2. Введите общие параметры бакета.

3. Нажмите Создать

После этого таким же образом создайте второй бакет для хранения медиаданных. 

Создание бакета в Evolution Object StorageСоздание бакета в Evolution Object Storage

Туториал 3: как связать бакеты Evolution Object Storage с приложение в контейнере Evolution Container Apps

Чтобы произвести ту самую магию, которая позволит не терять данные приложения даже при нулевом трафике, нам нужно связать два созданных бакета с ревизией в Evolution Container Apps. Для этого: 

1. Перейдите в личный кабинет Cloud.ru, среди сервисов платформы Cloud.ru Evolution выберите Container Apps и перейдите к ранее созданной ревизии. 

При этом прямо над ревизией можно увидеть публичный URL, по которому доступно приложение, а в блоке справа — общие параметры ревизии, переменные и секреты, health-пробы и тома. 

2. Перейдите на вкладку Тома и щелкните Добавить том.

3. Выберите тип тома — Постоянный.

4. Затем прикрепите к нему бакет в Object Storage с базой данных.

5. Нажмите Добавить и впишите путь к файлу в нашем сервисе для управления фотографиями в графу Путь

Процесс добавления тома с бакетом Evolution Object Storage в контейнер Evolution Container Apps  Процесс добавления тома с бакетом Evolution Object Storage в контейнер Evolution Container Apps

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

Указание пути к данным на вкладке Переменные в интерфейсе сервиса Evolution Container AppsУказание пути к данным на вкладке Переменные в интерфейсе сервиса Evolution Container Apps

6. В конце щелкните Создать, чтобы создать ревизию с томами, содержащими бакеты с данными. 

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

Туториал 4: запуск nginx-сервиса для раздачи файлов приложения 

Итак, у нас есть приложение, развернутое в облаке с помощью Evolution Container Apps. Также к нему подключены бакеты сервиса Evolution Object Storage — это гарантия того, что данные не потеряются. Что же дальше? Правильно. Пора начать раздавать файлы с помощью приложения. 

Для этого сделайте так: 

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

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

  3. Снова впишите все параметры и добавьте том с медиаданными в бакете Object Storage. 

  4. Щелкните Создать

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

  • в пользовательских логах содержатся данные приложения;

  • в системных – логи, которые отрабатываются в инфраструктуре облака. 

Просмотрев логи, можно убедиться, что запущенное nginx-приложение действительно работает, а в объектном хранилище хранятся загруженные фотографии. 

Если же при просмотре логов у вас возникнут вопросы или сомнения в том, что все настроено корректно, обратитесь к нам за помощью. Для этого воспользуйтесь нашим AI-помощником, кликнув по виджету внизу личного кабинета, или напишите на почту support@cloud.ru.

Итоги

Теперь вы знаете, как запускать приложение в Evolution Container Apps, а еще умеете связывать контейнеры в этом сервисе с бакетами объектного хранилища S3. Это гарантия того, что все его данные надежно хранятся в Evolution Object Storage, даже когда ваше приложение не раздает файлы.

Продукты из этой статьи:
Иконка-Evolution Container Apps
Evolution Container Apps
Иконка-Evolution Artifact Registry
Evolution Artifact Registry
Иконка-Evolution Object Storage
Evolution Object Storage
26 июня 2025

Вам может понравиться