Добавление image-based приложенияBeta
Чтобы добавить ваше image-based приложение в сервис Marketplace выполните подготовительные шаги. Затем:
- Создайте основу для файловой структуры сервисного пакета.
- Опишите конфигурацию сервиса (тарифные планы, опции).
- Создайте манифесты Terraform с описанием конфигурации инфраструктуры для вашего сервиса.
- (Опционально) Проверьте корректность указания существующих ресурсов в манифестах Terraform.
- (Опционально) Протестируйте манифесты Terraform локально.
- (Опционально) Протестируйте манифесты Terraform с системой развертывания.
- (Опционально) Просмотрите логи и результаты работы агента Marketplace.
- Загрузите сервисный пакет на Marketplace.
- Протестируйте загруженный сервис до публикации.
- Опубликуйте образ сервиса.
- Опубликуйте сервис в Marketplace.
- Убедитесь, что ваше приложение удовлетворяет требованиям сервиса Marketplace.
- Создайте и загрузите в VK Cloud образ image-based приложения.
- Определитесь с типом тарификации для вашего приложения, разработайте тарифные планы и опции.
- Подключитесь к кабинету поставщика.
Вся информация, необходимая для загрузки image-based приложения в Marketplace, подготавливается в виде сервисного пакета с определенной файловой структурой.
Чтобы подготовить файловую структуру:
-
Создайте директорию сервиса с именем
<ИМЯ_СЕРВИСА>. -
В директории сервиса создайте файл
version.yaml. В файле укажите:version: 0.0.1 -
В директории
<ИМЯ_СЕРВИСА>создайте директорииimages,parametersиplans. -
В директорию
imagesпоместите файл с иконкой сервиса в формате.pngили.svg. Размер файла — не более 1 МБ. Разрешение изображения — не менее 62 × 62 пикселей.Иконка сервиса будет отображаться в карточке сервиса:
- в каталоге Marketplace;
- на вкладке Описание сервиса на странице сервиса.
Конфигурация сервиса описывается с помощью файлов формата .yaml и .md.
-
В директории
<ИМЯ_СЕРВИСА>создайте файлservice.yamlи заполните его.Файл
service.yamlсодержит:- общие параметры сервиса;
- имена тарифных планов (далее —
<ИМЯ_ПЛАНА>) в виде массиваplans; - имена тарифных опций (далее —
<ИМЯ_ОПЦИИ>) в виде массиваparametersв секцииpreview.
<ИМЯ_ПЛАНА>и<ИМЯ_ОПЦИИ>используются только внутри сервисного пакета и не отображаются в интерфейсе Marketplace.Структура файла:
# Общие параметры сервисаid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXrevision: v. X.Xname: <ИМЯ_СЕРВИСА>short_description: <КОРОТКОЕ_ОПИСАНИЕ>singleton: <ФЛАГ> # true | falseauto_bind: <ФЛАГ> # true | falseicon: <ФАЙЛ> # Имя файла с иконкой сервисаhelp: <URL> # Ссылка на документацию сервисаbindable: <ФЛАГ> # true | falseplan_updateable: <ФЛАГ> # true | falsedeactivatable: <ФЛАГ> # true | falsebindings_retrievable: <ФЛАГ> # true | falseinstances_retrievable: <ФЛАГ> # true | false# Массив plansplans:- name: <ИМЯ_ПЛАНА_1>- name: <ИМЯ_ПЛАНА_2># Секция previewpreview:parameters:- name: <ИМЯ_ОПЦИИ_1>- name: <ИМЯ_ОПЦИИ_2>- name: <ИМЯ_ОПЦИИ_3> -
В директории
<ИМЯ_СЕРВИСА>создайте файлfull_description.mdи заполните его описанием сервиса в формате Markdown. Содержание файла будет отображаться на его странице в Marketplace.Структура файла:
<!--Небольшое общее описание сервиса в 2-3 предложениях--><!--Наименование поставщика-->## Решаемые задачи<!--Для решения каких задач можно использовать сервис-->## Характеристики сервиса:<!--Технические характеристики, желательно в форме таблицы--><!--Требования к инфраструктуре, какие ресурсы могут быть использованы--># Правила тарификации<!--По какой модели тарифицируется сервис, какие есть тарифные планы--># Полезные ссылки<!--Ссылка на раздел Marketplace в документации VK Cloud + ссылка на документацию на портале поставщика--># Техническая поддержка<!--Информация о технической поддержке сервиса, технической поддержки VK Cloud, контакты технической поддержки сервиса--># Лицензионное соглашение<!--Ссылка на юридические документы VK Cloud и сервиса поставщика--> -
В директории
parametersдля каждой тарифной опции создайте файл<ИМЯ_ОПЦИИ>.yamlи заполните его согласно примерам.Для платных тарифных опций на период тестирования укажите минимальную стоимость сервиса, чтобы не допустить лишнего потребления средств.
-
В директории
plansдля каждого тарифного плана cоздайте директорию<ИМЯ_ПЛАНА>. В каждой директории<ИМЯ_ПЛАНА>создайте и заполните файлplan.yaml:Структура файла:
# Общие параметры тарифного планаid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXrevision: v. X.Xname: <ИМЯ_ПЛАНА>description: <КОРОТКОЕ_ОПИСАНИЕ>free: <ФЛАГ> # true | false# Секция billingbilling:cost: <СТОИМОСТЬ>refundable: <ФЛАГ> # true | falsebilling_cycle_flat: <ДЛИНА_ОТЧЕТНОГО_ПЕРИОДА># Секция parameters_patchparameters_patch:users:schema.const: 5000volume_data_size:schema.default: 550schema.minimum: 550 -
В директории
<ИМЯ_ПЛАНА>создайте и заполните файлdisplay.yamlс описанием мастера конфигурации тарифного плана. Мастер конфигурации тарифного плана будет отображаться в Marketplace при подключении сервиса или обновлении тарифного плана.
-
В директории
plans/<ИМЯ_ПЛАНА>создайте директориюdeployment. -
В директории
deploymentсоздайте и заполните:-
Файл
deploy.tfс манифестом Terraform, описывающим инфраструктуру и процесс развертывания в Marketplace тарифного плана<ИМЯ_ПЛАНА>. -
(Опционально) Файл settings.yaml с настройками выполнения манифеста. Если в сервисном пакете нет файла
settings.yaml, к манифестам Terraform будут применены значения параметров по умолчанию.
-
Чтобы сократить время тестирования манифестов Terraform и исключить попытки создания ресурсов с некорректной конфигурацией, перед тестированием манифестов рекомендуется проверить, что в них верно указаны параметры уже существующих ресурсов VK Cloud, например: тип ВМ, образ сервиса и т.д.
-
Установите Terraform и настройте окружение, если это не сделано ранее.
-
В рабочей директории выполните команду:
terraform init -
В рабочей директории создайте файл
main.tf. -
Поместите в файл
main.tfобращения к нужным источникам данных провайдера VK CS.Пример обращения к источнику данных vkcs_compute_flavor:
data "vkcs_compute_flavor" "compute" {flavor_id = "4e115a9b-XXXX-95cf130d63c7"}В этом примере проверяется, что тип ВМ с ID
4e115a9b-XXXX-95cf130d63c7существует в VK Cloud. -
В рабочей директории выполните команду:
terraform applyПри запросе подтверждения введите
yes. -
Дождитесь завершения операции. Убедитесь, что при обращении к источникам данных не возникло ошибок.
Протестируйте локально манифесты Terraform plans/<ИМЯ_ПЛАНА>/deployment/deploy.tf для каждого тарифного плана вашего приложения, используя инструкцию.
Перед загрузкой сервисного пакета на Marketplace протестируйте каждый манифест Terraform plans/<ИМЯ_ПЛАНА>/deployment/deploy.tfдля каждого плана вашего приложения с помощью API системы развертывания:
- Активируйте доступ по API, если это не было сделано ранее.
- Получите токен доступа к API.
- Загрузите один из манифестов
plans/<ИМЯ_ПЛАНА>/deployment/deploy.tfв систему развертывания. - Проверьте текущую конфигурацию загруженного манифеста.
- Создайте инстанс сервиса.
- В процессе создания и после создания инстанса проверьте его статус. Если статус
failed, найдите описание ошибки в логах инстанса. - Удалите инстанс сервиса.
- Проверьте статус удаленного инстанса сервиса. Если статус
failed, найдите описание ошибки в логах инстанса.
Аналогичным образом протестируйте манифесты для остальных тарифных планов вашего приложения.
Вы можете выявить ошибки при развертывании инстанса сервиса, просмотрев логи и результаты работы агента Marketplace. Они доступны, если при развертывании вашего приложения используются скрипты, которые выполняются с помощью ресурса ivkcs_agent_exec.
Чтобы посмотреть логи и результаты работы агента:
-
Подключитесь к ВМ, на которой установлен агент, по протоколу удаленного доступа или с помощью VNC-консоли в личном кабинете VK Cloud.
Имя ВМ, на которой был установлен агент, задано в ресурсе
ivkcs_agent_initилиivkcs_user_dataв манифестеplans/<ИМЯ_ПЛАНА>/deployment/deploy.tf. -
Чтобы просмотреть логи, выполните команду
journalctl -u sower. -
Чтобы просмотреть результаты, перейдите в директорию
/etc/sower/result.
-
Запакуйте сервисный пакет, т.е. директорию
<ИМЯ_СЕРВИСА>с конфигурационными файлами сервиса и манифестами Terraform, в zip-архив. Размер архива должен быть не более 30 МБ. -
Загрузите архив на Marketplace одним из следующих способов:
Кабинет поставщикаInfra API- Перейдите в личный кабинет VK Cloud.
- В разделе Магазин приложений нажмите кнопку Перейти в кабинет поставщика.
- На вкладке Управление сервисами нажмите кнопку Добавить сервис.
- Выберите zip-архив на своем устройстве для загрузки в систему.
- Нажмите кнопку Добавить.
После этого добавленный сервис появится в списке сервисов в статусе
Скрыто. Файл загруженного архива будет отправлен на валидацию.Сервисный пакет, загруженный на Marketplace, сначала попадет в тестовое пространство имен, после публикации — в открытое.
-
После окончания загрузки сервиса зайдите в личный кабинет VK Cloud и убедитесь, что сервис отображается в Marketplace. Загруженный сервис будет доступен только пользователям тестовых пространств имен Marketplace, указанных в сервисном ключе.
Если после загрузки сервис не отображается в Marketplace, выйдите из личного кабинета и войдите заново.
Чтобы проверить, как сервис будет функционировать в тестовом пространстве имен Marketplace:
-
Перейдите в раздел Магазин приложений личного кабинета VK Cloud.
-
Нажмите кнопку Все решения.
-
Нажмите на карточку вашего сервиса и перейдите на вкладку Тарифные планы.
-
Убедитесь, что мастер конфигурации каждого тарифного плана отображается корректно.
-
Подключите сервис. Убедитесь, что развертывание инстанса сервиса выполнено успешно.
Если при развертывании инстанса сервиса не удалось создать ресурс, описанный в манифесте, система развертывания запустит процесс развертывания сервиса повторно. Повторные попытки могут занимать до 1,5 ч и могут быть отключены в файле settings.yaml.
-
Если при подключении сервиса возникла ошибка, посмотрите логи, воспользовавшись инструкцией.
-
Обновите инстанс сервиса:
- Поменяйте значения тарифных опций текущего тарифного плана.
- Перейдите на новый тарифный план.
Изменение параметров ресурсов, описанных в манифесте, запустит процесс переустановки инстанса сервиса.
Если система развертывания не сможет обновить ресурсы, она будет пробовать сделать это повторно. Процесс обновления конфигурации инстанса сервиса с учетом повторных попыток может занимать до 1,5 ч. Повторные попытки можно отключить в файле settings.yaml.
-
Проверьте основные пользовательские сценарии сервиса.
-
Удалите инстанс сервиса.
-
(Опционально) Обновите конфигурацию сервиса.
- Измените конфигурацию сервиса, если в результате тестирования возникла такая необходимость.
- Если в конфигурации сервиса на время тестирования и отладки были заданы тестовые значения для стоимости сервиса, отредактируйте их.
-
Отправьте письмо на marketplace@cloud.vk.com.
В письме укажите ID образа сервиса.
Указанный образ будет опубликован и доступен всем пользователям облачной платформы. В ответном письме будет выслан ID публичного образа сервиса.
-
В манифестах Terraform
plans/<ИМЯ_ПЛАНА>/deployment/deploy.tfпоменяйте ID образа сервиса на ID публичного образа сервиса. -
В файле service.yaml укажите новую ревизию сервиса.
-
Загрузите сервисный пакет с ID публичного образа сервиса на Marketplace через кабинет поставщика или с помощью запроса к сервису Infra API.
Отправьте письмо на marketplace@cloud.vk.com. В письме укажите ID сервиса и его ревизию.
Будет проведено модерирование сервисного пакета. После этого сервис будет опубликован на Marketplace.
Публикуемая ревизия сервиса будет перемещена из тестового пространства имен Marketplace в открытое, указанное в сервисном ключе. Сервис станет доступен всем пользователям, у которых есть доступ в это открытое пространство имен.