Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Container Registry
  • Начало работы
  • Yandex Container Solution
    • Все руководства
    • Подпись и проверка Docker-образов в Managed Service for Kubernetes
    • Сканирование уязвимостей при непрерывном развертывании приложений Managed Service for Kubernetes с помощью GitLab
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Хранение Docker-образов из проектов Yandex Managed Service for GitLab
    • Подключение к Container Registry из VPC
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Запуск внешних агентов для нагрузочного тестирования
    • Запуск контейнерного приложения в Yandex Serverless Containers
    • Развертывание gRPC-сервиса на основе Docker-образа
    • Развертывание сервиса в DataSphere на основе Docker-образа
    • Развертывание сервиса в DataSphere на основе Docker-образа с FastAPI
    • Настройка подключения к Managed Service for PostgreSQL из контейнера Serverless Containers
    • Интеграция с Container Registry
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Решение проблем
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте облачную сеть и подсеть
  • Настройте группу безопасности
  • Создайте виртуальную машину с MongoDB
  • Создайте секрет Yandex Lockbox
  • Создайте реестр Container Registry
  • Загрузите Docker-образ в реестр
  • Создайте контейнер Serverless Containers
  • Создайте API-шлюз API Gateway
  • Проверьте работу приложения
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Запуск контейнерного приложения в Yandex Serverless Containers

Запуск контейнерного приложения в Yandex Serverless Containers

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 5 августа 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте облачную сеть и подсеть
  • Настройте группу безопасности
  • Создайте виртуальную машину с MongoDB
  • Создайте секрет Yandex Lockbox
  • Создайте реестр Container Registry
  • Загрузите Docker-образ в реестр
  • Создайте контейнер Serverless Containers
  • Создайте API-шлюз API Gateway
  • Проверьте работу приложения
  • Как удалить созданные ресурсы

С помощью этого руководства вы сможете развернуть контейнер с приложением в сервисе Serverless Containers для администрирования СУБД MongoDB.

СУБД развернута на виртуальной машине Yandex Compute Cloud, контейнер с приложением хранится в реестре Yandex Container Registry, чувствительные данные зашифрованы с помощью Yandex Lockbox, а безопасный доступ к приложению реализован через API-шлюз Yandex API Gateway. Вся инфраструктура контейнерного приложения располагается в одном каталоге.

Чтобы развернуть контейнерное приложение:

  1. Подготовьте облако к работе.
  2. Создайте сервисный аккаунт.
  3. Создайте облачную сеть и подсеть.
  4. Настройте группу безопасности.
  5. Создайте виртуальную машину Compute Cloud с MongoDB.
  6. Создайте секрет Yandex Lockbox и версию.
  7. Создайте реестр Container Registry.
  8. Загрузите Docker-образ в Container Registry.
  9. Создайте контейнер Serverless Containers.
  10. Создайте API-шлюз API Gateway.
  11. Проверьте работу приложения.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки приложения входит:

  • плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
  • плата за хранение секретов (см. тарифы Yandex Lockbox);
  • плата за хранение Docker-образа (см. тарифы Yandex Container Registry);
  • плата за количество вызовов контейнера, вычислительные ресурсы, выделенные для выполнения приложения, и исходящий трафик (см. тарифы Serverless Containers);
  • плата за запросы к API-шлюзу (см. тарифы Yandex API Gateway);
  • плата за запись и хранение данных в лог-группе (см. тарифы Yandex Cloud Logging).

Создайте сервисный аккаунтСоздайте сервисный аккаунт

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

Консоль управления
CLI
API
  1. В консоли управления перейдите в каталог, в котором будет размещаться инфраструктура контейнерного приложения.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта — mongo-express.
  5. Нажмите Добавить роль и выберите роли container-registry.images.puller, lockbox.payloadViewer и serverless-containers.containerInvoker.
  6. Нажмите Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Создайте сервисный аккаунт с именем mongo-express:

    yc iam service-account create --name mongo-express
    

    Результат:

    id: aje3pdqm1cul********
    folder_id: b1g681qpemb4********
    created_at: "2025-06-14T10:31:06.911280565Z"
    name: mongo-express
    
  2. Назначьте сервисному аккаунту роли container-registry.images.puller, lockbox.payloadViewer и serverless-containers.containerInvoker на каталог, в котором будет размещаться контейнер:

    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role container-registry.images.puller \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    
    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role lockbox.payloadViewer \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    
    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role serverless-containers.containerInvoker \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Где:

    • <имя_или_идентификатор_каталога> — имя или идентификатор каталога, в котором будет размещаться контейнер.
    • --subject serviceAccount — идентификатор сервисного аккаунта mongo-express.

    Результат:

    effective_deltas:
      - action: ADD
        access_binding:
          role_id: container-registry.images.puller
          subject:
            id: aje3pdqm1cul********
            type: serviceAccount
    
    effective_deltas:
      - action: ADD
        access_binding:
          role_id: lockbox.payloadViewer
          subject:
            id: aje3pdqm1cul********
            type: serviceAccount
    
    effective_deltas:
      - action: ADD
        access_binding:
          role_id: serverless-containers.containerInvoker
          subject:
            id: aje3pdqm1cul********
            type: serviceAccount
    
  1. Чтобы создать сервисный аккаунт, воспользуйтесь методом REST API create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create.
  2. Чтобы назначить сервисному аккаунту роли на каталог, воспользуйтесь методом REST API updateAccessBindings для ресурса Folder или вызовом gRPC API FolderService/UpdateAccessBindings.

Создайте облачную сеть и подсетьСоздайте облачную сеть и подсеть

Создайте облачную сеть и подсеть, в которых будет располагаться ВМ.

Консоль управления
CLI
API
  1. В консоли управления в списке сервисов выберите Virtual Private Cloud.
  2. Справа сверху нажмите Создать сеть.
  3. В поле Имя укажите mongo-express-network.
  4. В поле Дополнительно выберите опцию Создать подсети.
  5. Нажмите Создать сеть.
  6. На панели слева выберите Подсети.
  7. Справа сверху нажмите Создать.
  8. В поле Имя укажите mongo-express-subnet-ru-central1-b.
  9. В поле Зона выберите зону доступности ru-central1-b.
  10. В поле Сеть выберите облачную сеть mongo-express-network.
  11. В поле CIDR укажите 192.168.1.0/24.
  12. Нажмите Создать подсеть.
  1. Создайте облачную сеть:

    yc vpc network create \
      --name mongo-express-network
    

    Результат:

    id: enp1b4okmg57********
    folder_id: b1g681qpemb4********
    created_at: "2025-06-13T12:57:02Z"
    name: mongo-express-network
    default_security_group_id: enphs1omp6m4********
    

    Сохраните идентификатор группы безопасности по умолчанию, указанный в поле default_security_group_id.

  2. Создайте подсеть:

    yc vpc subnet create \
       --name mongo-express-subnet-ru-central1-b \
       --zone ru-central1-b \
       --network-id <идентификатор_сети> \
       --range 192.168.1.0/24
    

    Где:

    • --name — название подсети.
    • --zone — зона доступности.
    • --network-id — идентификатор сети mongo-express-network.
    • --range — список IPv4-адресов, откуда или куда будет поступать трафик.

    Результат:

    id: e2l9i0eaq32t********
    folder_id: b1g681qpemb4********
    created_at: "2025-06-14T09:27:37Z"
    name: mongo-express-subnet-ru-central1-b
    network_id: enp1b4okmg57********
    zone_id: ru-central1-b
    v4_cidr_blocks:
      - 192.168.1.0/24
    
  1. Чтобы создать облачную сеть, воспользуйтесь методом REST API create для ресурса Network или вызовом gRPC API NetworkService/Create и передайте в запросе:

    • Идентификатор каталога, в котором будет размещаться сеть.
    • Имя новой сети mongo-express-network в параметре name.
  2. Чтобы создать подсеть, воспользуйтесь методом REST API create для ресурса Subnet или вызовом gRPC API SubnetService/Create.

Настройте группу безопасностиНастройте группу безопасности

Настройте группу безопасности по умолчанию в созданной ранее облачной сети.

Консоль управления
CLI
API
  1. В консоли управления в списке сервисов выберите Virtual Private Cloud.

  2. На панели слева выберите Группы безопасности.

  3. Напротив группы безопасности, созданной по умолчанию для сети mongo-express-network, нажмите и выберите Редактировать.

  4. В блоке Правила перейдите на вкладку Исходящий трафик.

  5. Нажмите Добавить правило и создайте правило по таблице:

    Направление
    трафика
    Описание Диапазон портов Протокол Назначение /
    Источник
    CIDR блоки
    Входящий any 27017 Любой CIDR 0.0.0.0/0
  6. Нажмите Сохранить.

Добавьте правило в группу безопасности:

yc vpc security-group update-rules <идентификатор_группы_безопасности> \
  --add-rule "direction=ingress,port=27017,protocol=any,v4-cidrs=[0.0.0.0/0,0.0.0.0/0]"

Где <идентификатор_группы_безопасности> — значение default_security_group_id, полученное на предыдущем шаге.

Результат:

id: enpmal7qcb1q********
folder_id: b1g681qpemb4********
created_at: "2025-06-14T09:24:47Z"
name: default-sg-enpeiqghds1j********
description: Default security group for network
network_id: enpeiqghds1j********
status: ACTIVE
rules:
  ...
  - id: enprm96de4ec********
    direction: INGRESS
    ports:
      from_port: "27017"
      to_port: "27017"
    protocol_name: ANY
    protocol_number: "-1"
    cidr_blocks:
      v4_cidr_blocks:
        - 0.0.0.0/0
        - 0.0.0.0/0
default_for_network: true

Чтобы добавить правило в группу безопасности, воспользуйтесь методом REST API updateRules для ресурса SecurityGroup или вызовом gRPC API SecurityGroupService/UpdateRules и передайте в запросе:

  • Идентификатор группы безопасности, в которую будут добавлены правила, в параметре securityGroupId.

    Чтобы узнать идентификатор группы безопасности, воспользуйтесь методом REST API list для ресурса SecurityGroup или вызовом gRPC API SecurityGroupService/List и передайте в запросе идентификатор каталога в параметре folderId.

  • Новые правила группы безопасности в массиве additionRuleSpecs[]:

    • Направление трафика — ingress.
    • Имя протокола передачи трафика в параметре additionRuleSpecs[].protocolName — any.
    • Список CIDR и масок подсетей в параметре additionRuleSpecs[].cidrBlocks.v4CidrBlocks[] — [0.0.0.0/0,0.0.0.0/0].
    • Первый порт из диапазона портов для трафика в параметре additionRuleSpecs[].ports.fromPort — 0.
    • Последний порт из диапазона портов для трафика в параметре additionRuleSpecs[].ports.toPort — 65535.

Создайте виртуальную машину с MongoDBСоздайте виртуальную машину с MongoDB

Рекомендуем использовать ВМ в минимальной конфигурации.

Консоль управления
CLI
  1. На странице каталога в консоли управления нажмите Создать ресурс и выберите Виртуальная машина.

  2. Выберите вариант Расширенная настройка.

  3. В блоке Образ загрузочного диска:

    1. Перейдите на вкладку Container Solution и нажмите Настроить.

    2. В открывшемся окне перейдите на вкладку Docker-compose и укажите спецификацию Docker-контейнера:

      version: '3.1'
      
      services:
        mongo:
          image: mongo
          restart: always
          environment:
            MONGO_INITDB_ROOT_USERNAME: mongo_db_user
            MONGO_INITDB_ROOT_PASSWORD: <пароль>
          ports:
            - 27017:27017
      

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

    3. Нажмите Применить.

  4. В блоке Расположение выберите зону доступности, в которой будет создана ВМ. Если вы не знаете, какая зона доступности вам нужна, оставьте выбранную по умолчанию.

  5. В блоке Сетевые настройки:

    • В поле Подсеть выберите подсеть mongo-express-subnet-ru-central1-b.
    • В поле Публичный IP-адрес выберите Автоматически.
  6. В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:

    • В поле Логин введите имя пользователя. Не используйте имя root или другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.
    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      1. Нажмите кнопку Добавить ключ.

      2. Задайте имя SSH-ключа.

      3. Выберите вариант:

        • Ввести вручную — вставьте содержимое открытого SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно.

        • Загрузить из файла — загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно.

        • Сгенерировать ключ — автоматическое создание пары SSH-ключей.

          При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку /home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папку C:\Users\<имя_пользователя>/.ssh. Дополнительно вводить открытый ключ в консоли управления не требуется.

      4. Нажмите кнопку Добавить.

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

  7. В блоке Общая информация задайте имя ВМ: mongo-vm.

  8. Нажмите Создать ВМ.

Дождитесь перехода ВМ в статус Running и сохраните ее публичный IP-адрес — он потребуется для подключения к БД.

  1. Подготовьте пару ключей (открытый и закрытый) для SSH-доступа на ВМ.

  2. Подготовьте файл спецификации Docker-контейнера docker-spec.yaml:

    version: '3.1'
    
    services:
      mongo:
        image: mongo
        restart: always
        environment:
          MONGO_INITDB_ROOT_USERNAME: mongo_db_user
          MONGO_INITDB_ROOT_PASSWORD: <пароль>
        ports:
          - 27017:27017
    

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

  3. Выполните команду:

    yc compute instance create-with-container \
      --docker-compose-file docker-spec.yaml \
      --name mongo-vm \
      --zone ru-central1-b \
      --network-interface subnet-name=mongo-express-subnet-ru-central1-b,nat-ip-version=ipv4 \
      --ssh-key <путь_к_файлу_открытого_ключа> \
      --create-boot-disk size=30
    

    Где:

    • --docker-compose-file — путь к файлу спецификации Docker-контейнера.

    • --name — имя ВМ.

    • --zone — зона доступности.

    • --network-interface — сетевые настройки ВМ.

    • --ssh-key — путь к файлу открытого ключа SSH, например ./ssh-key.pub. Имя пользователя по умолчанию для доступа по SSH — yc-user.

    • --create-boot-disk size — размер загрузочного диска. Должен быть не менее 30 ГБ.

    Результат:

    id: epde18u4mahl********
    folder_id: b1g7gvsi89m3********
    created_at: "2023-02-08T10:34:06.601Z"
    name: mongo-vm
    ...
    

Создайте секрет Yandex LockboxСоздайте секрет Yandex Lockbox

В секрете Yandex Lockbox в зашифрованном виде будут храниться данные для аутентификации.

Консоль управления
CLI
API
  1. В консоли управления в списке сервисов выберите Lockbox.

  2. Нажмите Создать секрет.

  3. В поле Имя введите имя секрета — mongodb-creds.

  4. В блоке Версия:

    • В поле Ключ введите login.
    • В поле Значение введите логин пользователя БД — mongo_db_user.
  5. Нажмите Добавить ключ/значение и укажите второй секрет:

    • В поле Ключ введите password.
    • В поле Значение введите пароль для доступа к БД — значение MONGO_INITDB_ROOT_PASSWORD из спецификации Docker-контейнера.
  6. Нажмите Создать.

Создайте секрет mongodb-creds:

yc lockbox secret create \
  --name mongodb-creds \
  --payload "[{'key': 'login', 'text_value': 'mongo_db_user'},{'key': 'password', 'text_value': '<пароль>'}]"

Где:

  • --name — имя секрета.
  • --payload — содержимое секрета в виде массива YAML или JSON.
  • <пароль> — значение MONGO_INITDB_ROOT_PASSWORD из спецификации Docker-контейнера.

Результат:

id: e6q6nbjfu9m2********
folder_id: b1qt6g8ht345********
created_at: "2023-02-08T10:34:06.601Z"
name: mongodb-creds
status: ACTIVE
current_version:
  id: e6q0s9airqca********
  secret_id: e6q6nbjfu9m2********
  created_at: "2023-02-08T10:34:06.601Z"
  status: ACTIVE
  payload_entry_keys:
    - login
    - password

Чтобы создать секрет, воспользуйтесь методом REST API create для ресурса Secret или вызовом gRPC API SecretService/Create.

Создайте реестр Container RegistryСоздайте реестр Container Registry

В реестре Container Registry будет храниться Docker-образ приложения mongo-express.

Консоль управления
CLI
API
  1. В консоли управления в списке сервисов выберите Container Registry.
  2. Нажмите Создать реестр.
  3. Задайте имя реестра app-registry.
  4. Нажмите Создать реестр.

Создайте реестр app-registry:

yc container registry create --name app-registry

Результат:

id: crpd50616s9a********
folder_id: b1g88tflru0e********
name: app-registry
status: ACTIVE
created_at: "2023-02-08T10:34:06.601Z"

Чтобы создать реестр, воспользуйтесь методом REST API create для ресурса Registry или вызовом gRPC API RegistryService/CreateRegistryRequest.

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

  1. Зарегистрируйтесь на Docker Hub.

  2. Установите Docker:

    • Версия для Windows.
    • Версия для Linux.
    • Версия для Mac.
  3. Скачайте образ mongo-express:

    docker pull mongo-express
    

    Результат выполнения команды:

    Using default tag: latest
    latest: Pulling from library/mongo-express
    6a428f9f83b0: Pull complete
    ...
    e60224d64a04: Pull complete
    Digest: sha256:dcfcf89bf91238ff129469a5a94523b3025913dcc41597d72d4d5f4a********
    Status: Downloaded newer image for mongo-express:latest
    docker.io/library/mongo-express:latest
    
  4. Аутентифицируйтесь в Container Registry с помощью Docker Credential helper:

    CLI
    1. Сконфигурируйте Docker для использования docker-credential-yc:

      yc container registry configure-docker
      

      Результат:

      Credential helper is configured in '/home/<user>/.docker/config.json'
      

      Настройки сохраняются в профиле текущего пользователя.

    2. Проверьте, что Docker сконфигурирован — в конфигурационном файле ${HOME}/.docker/config.json должна появиться строка:

      "cr.yandex": "yc"
      

    Docker готов к использованию.

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

    CLI
    1. Присвойте загруженному образу mongo-express URL вида cr.yandex/<идентификатор_реестра>/<имя_Docker-образа>:<тег>:

      docker tag mongo-express \
      cr.yandex/<идентификатор_реестра>/mongo-express:mongo-tag
      
    2. Загрузите образ mongo-express в реестр:

      docker push cr.yandex/<идентификатор_реестра>/mongo-express:mongo-tag
      

      Результат:

      \The push refers to repository [cr.yandex/crpbr3qaut47********/mongo-express]
      7c550ce9591d: Pushed
      ...
      aedc3bda2944: Pushed
      mongo-tag: digest: sha256:c641... size: 1993
      

Создайте контейнер Serverless ContainersСоздайте контейнер Serverless Containers

Чтобы запустить приложение в Yandex Cloud, создайте контейнер и его ревизию.

Консоль управления
CLI
API
  1. В консоли управления в списке сервисов выберите сервис Serverless Containers.

  2. Нажмите Создать контейнер.

  3. Введите имя контейнера mongo-express-container.

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

  5. Перейдите на вкладку Редактор.

    1. В блоке Ресурсы укажите объем RAM — 1024 МБ.

    2. В блоке Параметры образа:

      1. В поле URL образа укажите URL Docker-образа, загруженного ранее.

      2. В поле Переменные окружения добавьте переменные:

        • ME_CONFIG_BASICAUTH_USERNAME — оставьте значение пустым.
        • ME_CONFIG_BASICAUTH_PASSWORD — оставьте значение пустым.
        • VCAP_APP_PORT — укажите порт 8080.
        • ME_CONFIG_MONGODB_SERVER — укажите публичный адрес ВМ, полученный ранее.
      3. В поле Секреты Lockbox укажите секреты:

        • ME_CONFIG_MONGODB_AUTH_USERNAME — укажите секрет с ключом login.
        • ME_CONFIG_MONGODB_AUTH_PASSWORD — укажите секрет с ключом password.
    3. В блоке Настройки:

      1. В поле Сервисный аккаунт укажите mongo-express.
      2. В поле Таймаут укажите 15.
  6. Нажмите Создать ревизию.

  1. Создайте контейнер:

    yc serverless container create --name mongo-express-container
    

    Результат:

    id: bba3fva6ka5g********
    folder_id: b1gqvft7kjk3********
    created_at: "2023-02-08T10:34:06.601Z"
    name: mongo-express-container
    url: https://bba3fva6ka5g********.containers.yandexcloud.net/
    status: ACTIVE
    
  2. Создайте ревизию контейнера:

    yc serverless container revision deploy \
      --container-name mongo-express-container \
      --cores 1 \
      --memory 1GB \
      --image cr.yandex/<идентификатор_реестра>/mongo-express:mongo-tag \
      --environment ME_CONFIG_BASICAUTH=false \
      --environment VCAP_APP_PORT=8080 \
      --environment ME_CONFIG_MONGODB_SERVER=<публичный_адрес_ВМ> \
      --secret environment-variable=ME_CONFIG_MONGODB_AUTH_USERNAME,key=login,id=<идентификатор_секрета> \
      --secret environment-variable=ME_CONFIG_MONGODB_AUTH_PASSWORD,key=password,id=<идентификатор_секрета> \
      --service-account-id <идентификатор_сервисного_аккаунта_mongo-express> \
      --network-id <идентификатор_сети> \
      --execution-timeout 15s \
      --concurrency 1
    

    Где:

    • --image — URL Docker-образа mongo-express, загруженного ранее.

    • --environment — переменные окружения:

      • ME_CONFIG_BASICAUTH — укажите значение false.
      • VCAP_APP_PORT — укажите порт 8080.
      • ME_CONFIG_MONGODB_SERVER — укажите публичный адрес ВМ, полученный ранее.
    • --secret environment-variable — секреты ME_CONFIG_MONGODB_AUTH_USERNAME и ME_CONFIG_MONGODB_AUTH_PASSWORD, созданные ранее.

    • --service-account-id — идентификатор сервисного аккаунта mongo-express, созданного ранее.

    • --network-id — идентификатор сети mongo-express-network.

    Результат:

    id: bbas0ktemln9********
    container_id: bbai45hrl5et********
    created_at: "2025-06-14T10:18:06.791Z"
    image:
      image_url: cr.yandex/crpbr3qaut47********/mongo-express:mongo-tag
      image_digest: sha256:c641....
      environment:
        ME_CONFIG_BASICAUTH: "false"
        ME_CONFIG_MONGODB_SERVER: 89.169.***.***
        VCAP_APP_PORT: "8080"
    resources:
      memory: "1073741824"
      cores: "1"
      core_fraction: "100"
    execution_timeout: 15s
    concurrency: "1"
    service_account_id: ajeldi88vl73********
    status: ACTIVE
    secrets:
      - id: e6qfi832v2j8********
        version_id: e6qj9a9oifme********
        key: login
        environment_variable: ME_CONFIG_MONGODB_AUTH_USERNAME
      - id: e6qfi832v2j8********
        version_id: e6qj9a9oifme********
        key: password
        environment_variable: ME_CONFIG_MONGODB_AUTH_PASSWORD
    log_options:
      folder_id: b1g681qpemb4********
    runtime:
      http: {}
    
  1. Чтобы создать контейнер, воспользуйтесь методом REST API create для ресурса Container или вызовом gRPC API ContainerService/Create.
  2. Чтобы создать ревизию контейнера, воспользуйтесь методом REST API deployRevision для ресурса Container или вызовом gRPC API ContainerService/DeployRevision.

Создайте API-шлюз API GatewayСоздайте API-шлюз API Gateway

Создайте API-шлюз с расширением x-yc-apigateway-integration:serverless_containers.

Консоль управления
CLI
API
  1. В консоли управления в списке сервисов выберите API Gateway.

  2. Нажмите Создать API-шлюз.

  3. В поле Имя введите название API-шлюза — mongo-express-gw.

  4. В блок Спецификация добавьте спецификацию:

    openapi: 3.0.0
    info:
      title: Sample API
      version: 1.0.0
    paths:
      /{proxy+}:
        x-yc-apigateway-any-method:
          x-yc-apigateway-integration:
            type: serverless_containers
            container_id: <идентификатор_контейнера>
            service_account_id: <идентификатор_сервисного_аккаунта>
          parameters:
          - explode: false
            in: path
            name: proxy
            required: false
            schema:
              default: '-'
              type: string
            style: simple
    

    Где:

    • container_id — идентификатор контейнера mongo-express-container.
    • service_account_id — идентификатор сервисного аккаунта mongo-express.
  5. Нажмите Создать.

  6. Откройте созданный API-шлюз и скопируйте ссылку из поля Служебный домен.

  1. Подготовьте файл спецификации API по стандарту OpenAPI 3.0.

    Спецификация
    openapi: 3.0.0
    info:
      title: Sample API
      version: 1.0.0
    paths:
      /{proxy+}:
        x-yc-apigateway-any-method:
          x-yc-apigateway-integration:
            type: serverless_containers
            container_id: <идентификатор_контейнера>
            service_account_id: <идентификатор_сервисного_аккаунта>
          parameters:
          - explode: false
            in: path
            name: proxy
            required: false
            schema:
              default: '-'
              type: string
            style: simple
    

    Где:

    • container_id — идентификатор контейнера mongo-express-container.
    • service_account_id — идентификатор сервисного аккаунта mongo-express.
  2. Укажите параметры и создайте API-шлюз с помощью команды:

    yc serverless api-gateway create \
        --name mongo-express-gw \
        --spec=<путь_к_файлу_спецификации>
    

    Результат:

    id: d5d63uh1h26g********
    folder_id: b1g681qpemb4********
    created_at: "2025-06-14T10:23:19.682Z"
    name: mongo-express-gw
    status: ACTIVE
    domain: d5d63uh1h26g********.********.apigw.yandexcloud.net
    connectivity: {}
    log_options:
      folder_id: b1g681qpemb4********
    execution_timeout: 300s
    

    Сохраните ссылку, указанную в поле domain.

Чтобы создать API-шлюз, воспользуйтесь методом REST API create для ресурса ApiGateway или вызовом gRPC API ApiGatewayService/Create.

Проверьте работу приложенияПроверьте работу приложения

Перейдите по ссылке вида d5d63uh1h26g********.********.apigw.yandexcloud.net, полученной на предыдущем шаге. Откроется административная панель MongoDB.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите API-шлюз mongo-express-gw.
  2. Удалите контейнер mongo-express-container.
  3. Удалите образ из реестра app-registry.
  4. Удалите реестр app-registry.
  5. Удалите секрет mongodb-creds.
  6. Удалите ВМ mongo-vm.
  7. Удалите сервисный аккаунт mongo-express.

Была ли статья полезна?

Предыдущая
Запуск внешних агентов для нагрузочного тестирования
Следующая
Развертывание gRPC-сервиса на основе Docker-образа
Проект Яндекса
© 2025 ООО «Яндекс.Облако»