Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка 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
  • Решение проблем
  • Вопросы и ответы
  • Обучающие курсы

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

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте каталог
  • Создайте реестр Container Registry
  • Создайте сервисный аккаунт для проекта DataSphere
  • Создайте авторизованный ключ для сервисного аккаунта
  • Подготовьте Docker-образ для развертывания сервиса
  • Создайте Docker-образ сервиса
  • Загрузите Docker-образ в Container Registry
  • Разверните сервис в DataSphere
  • Проверьте работу развернутого сервиса
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Развертывание сервиса в DataSphere на основе Docker-образа с FastAPI

Развертывание сервиса в Yandex DataSphere на основе Docker-образа с FastAPI

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
    • Создайте каталог
    • Создайте реестр Container Registry
    • Создайте сервисный аккаунт для проекта DataSphere
    • Создайте авторизованный ключ для сервисного аккаунта
  • Подготовьте Docker-образ для развертывания сервиса
    • Создайте Docker-образ сервиса
    • Загрузите Docker-образ в Container Registry
  • Разверните сервис в DataSphere
  • Проверьте работу развернутого сервиса
  • Как удалить созданные ресурсы

В этом практическом руководстве вы развернете сервис FastAPI на основе Docker-образа. Сервис передает метрики в текстовом формате Prometheus. Сервис будет запускаться на IP-адресе 0.0.0.0 и порте 9875.

Чтобы развернуть сервис на основе Docker-образа с FastAPI:

  1. Подготовьте инфраструктуру.
  2. Подготовьте Docker-образ для развертывания сервиса.
  3. Разверните сервис в DataSphere.
  4. Проверьте работу развернутого сервиса.

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

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

Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:

  1. На главной странице DataSphere нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO).
  2. Выберите организацию Yandex Cloud Organization, в которой вы будете работать в Yandex Cloud.
  3. Создайте сообщество.
  4. Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.

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

В стоимость развертывания сервиса на основе Docker-образа входят:

  • плата за постоянно запущенные инстансы ноды (см. тарифы DataSphere);
  • плата за запуск ячеек с кодом для проверки работы развернутого сервиса;
  • объем хранилища, занятый данными Yandex Container Registry (см. тарифы Container Registry).

Подготовьте инфраструктуруПодготовьте инфраструктуру

Войдите в консоль управления Yandex Cloud и выберите организацию, в которой вы работаете с DataSphere. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт.

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

Примечание

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

Создайте каталогСоздайте каталог

Примечание

В примере инфраструктура Yandex Cloud и развернутый сервис работают в одном каталоге Yandex Cloud, однако это не обязательно.

Консоль управления
  1. В консоли управления выберите облако и нажмите кнопку Создать каталог.
  2. Введите имя каталога, например data-folder.
  3. Нажмите кнопку Создать.

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

DataSphere может создать ноду из Docker-образа, который хранится в Yandex Container Registry. Чтобы загрузить образ, создайте реестр:

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

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

Консоль управления
  1. Перейдите в каталог data-folder.

  2. В списке сервисов выберите Identity and Access Management.

  3. Нажмите кнопку Создать сервисный аккаунт.

  4. Введите имя сервисного аккаунта, например sa-for-datasphere.

  5. Нажмите Добавить роль и назначьте сервисному аккаунту роли:

    • container-registry.images.puller — чтобы разрешить DataSphere скачивать ваш Docker-образ для создания ноды.
    • vpc.user — для работы с сетью DataSphere.
    • datasphere.user — чтобы отправлять запросы в ноду.
  6. Нажмите кнопку Создать.

Создайте авторизованный ключ для сервисного аккаунтаСоздайте авторизованный ключ для сервисного аккаунта

Чтобы сервисный аккаунт мог аутентифицироваться в Yandex Container Registry, создайте авторизованный ключ.

Примечание

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

Консоль управления
  1. Перейдите в каталог data-folder.

  2. В списке сервисов выберите Identity and Access Management.

  3. На панели слева выберите Сервисные аккаунты.

  4. В открывшемся списке выберите сервисный аккаунт sa-for-datasphere.

  5. Нажмите кнопку Создать новый ключ на верхней панели.

  6. Выберите пункт Создать авторизованный ключ.

  7. Выберите алгоритм шифрования.

  8. Сохраните открытый и закрытый ключи: закрытый ключ не сохраняется в Yandex Cloud, открытый ключ нельзя будет посмотреть в консоли управления.

    Совет

    Вы можете сохранить файл с ключом на свой компьютер. Его содержимое понадобится позднее при создании секрета для доступа DataSphere в Container Registry.

Подготовьте Docker-образ для развертывания сервисаПодготовьте Docker-образ для развертывания сервиса

Если у вас еще нет Docker, установите его.

Создайте Docker-образ сервисаСоздайте Docker-образ сервиса

  1. Создайте папку, в которой будет храниться конфигурация Docker-образа и все необходимые файлы, например /home/docker-images.

  2. Склонируйте репозиторий на GitHub и поместите файлы в созданную папку.

  3. Запустите Docker Desktop.

  4. В командной оболочке перейдите в папку, где хранится созданный вами Dockerfile.

    cd docker-images
    
  5. Соберите Docker-образ:

    docker build --platform linux/amd64 -t fastapi-docker .
    

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

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

CLI
  1. Задайте каталог data-folder каталогом по умолчанию:

    yc config set folder-id <идентификатор_каталога>
    
  2. Аутентифицируйтесь в Container Registry.

    1. Получите IAM-токен для своего пользовательского аккаунта:
    yc iam create-token
    

    В ответе будет IAM-токен. Если вы аутентифицируетесь от имени федеративного аккаунта, CLI перенаправит вас в консоль управления для аутентификации, а после этого пришлет IAM-токен.

    Примечание

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

    1. Выполните команду, подставив вместо <IAM-токен> значение токена, которое вы получили на предыдущем шаге:
    docker login \
      --username iam \
      --password <IAM-токен> \
      cr.yandex
    
  3. Получите список реестров каталога data-folder:

    yc container registry list
    

    Идентификатор реестра понадобится вам на следующем шаге. Пример вывода команды:

    +----------------------+---------------------+----------------------+
    |          ID          |        NAME         |      FOLDER ID       |
    +----------------------+---------------------+----------------------+
    | crp86bmgl1da******** | datasphere-registry | b1g4bh24c406******** |
    +----------------------+---------------------+----------------------+
    
  4. Загрузите Docker-образ в Container Registry, подставив идентификатор вашего реестра datasphere-registry:

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

Разверните сервис в DataSphereРазверните сервис в DataSphere

  1. Откройте главную страницу DataSphere. На панели слева выберите Сообщества.

  2. Выберите сообщество с привязанным платежным аккаунтом.
  3. Создайте проект Node from Docker.
  4. В настройках проекта укажите:
    • Каталог по умолчанию — data-folder.
    • Сервисный аккаунт — sa-for-datasphere.
  5. Создайте секрет key-for-sa, добавив в него содержимое файла с авторизованным ключом для сервисного аккаунта sa-for-datasphere полностью без каких-либо изменений.
  6. Создайте ноду. Для этого на странице проекта в правом верхнем углу нажмите кнопку Создать ресурс. Во всплывающем окне выберите Нода. Укажите настройки ноды:
    1. В поле Имя введите имя ноды — fastapi.
    2. В блоке Образ Docker:
      • Тип — выберите Docker-образ.
      • Хранилище Docker-образов — выберите Yandex Container Registry.
      • Путь к образу — задайте путь к образу Container Registry вида cr.yandex/<идентификатор_реестра>/<имя_образа>:<тег>. Его можно получить в консоли управления, скопировав полное значение на странице репозитория. Также вы можете заполнить поле вручную. Идентификатор реестра можно получить в CLI, выполнив команду yc container registry list.
      • Секрет с паролем — выберите key-for-sa.
    3. В блоке Эндпоинт:
      • Тип — выберите протокол HTTP.
      • Порт — 9875.
    4. Включите опцию Телеметрия и укажите:
      • Тип — выберите Prometheus.
      • HTTP-адрес — /metrics.
      • Порт — 9875.
    5. Включите опцию Проверка и укажите:
      • Тип — выберите HTTP.
      • Путь — /.
      • Порт — 9875.
      • Таймаут — 1.
      • Интервал — 15.
      • Неудачные проверки — 3.
      • Пройденные проверки — 3.
    6. В блоке Каталог выберите каталог data-folder.
    7. В блоке Обеспечение выберите конфигурацию g1.1.
    8. Нажмите кнопку Создать.

Проверьте работу развернутого сервисаПроверьте работу развернутого сервиса

  1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

  2. В списке ресурсов выберите Нода.

  3. Нажмите на созданную ноду Node from Docker.

  4. Перейдите на вкладку Запрос.

  5. В форме Создать тестовый запрос выберите метод GET.

  6. В поле Path введите /urls.

  7. Нажмите кнопку Выполнить, чтобы получить полный список URI для проверки работоспособности и метрик.

    Результат:

    [
    {
       "path": "/openapi.json",
       "name": "openapi"
    },
    {
       "path": "/docs",
       "name": "swagger_ui_html"
    },
    {
       "path": "/docs/oauth2-redirect",
       "name": "swagger_ui_redirect"
    },
    {
       "path": "/redoc",
       "name": "redoc_html"
    },
    {
       "path": "/metrics",
       "name": "metrics"
    },
    {
       "path": "/",
       "name": "root"
    },
    {
       "path": "/urls",
       "name": "get_all_urls"
    },
    {
       "path": "/health-check",
       "name": "healthcheck"
    }
    ]
    

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

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

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

  1. Удалите ноду.
  2. Удалите секрет.
  3. Удалите авторизованный ключ сервисного аккаунта.
  4. Удалите Docker-образ.
  5. Удалите реестр Container Registry.

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

Предыдущая
Развертывание сервиса в DataSphere на основе Docker-образа
Следующая
Настройка подключения к Managed Service for PostgreSQL из контейнера Serverless Containers
Проект Яндекса
© 2025 ООО «Яндекс.Облако»