Добавление image-based приложенияBeta

Чтобы добавить ваше image-based приложение в сервис Marketplace выполните подготовительные шаги. Затем:

  1. Создайте основу для файловой структуры сервисного пакета.
  2. Опишите конфигурацию сервиса (тарифные планы, опции).
  3. Создайте манифесты Terraform с описанием конфигурации инфраструктуры для вашего сервиса.
  4. (Опционально) Проверьте корректность указания существующих ресурсов в манифестах Terraform.
  5. (Опционально) Протестируйте манифесты Terraform локально.
  6. (Опционально) Протестируйте манифесты Terraform с системой развертывания.
  7. (Опционально) Просмотрите логи и результаты работы агента Marketplace.
  8. Загрузите сервисный пакет на Marketplace.
  9. Протестируйте загруженный сервис до публикации.
  10. Опубликуйте образ сервиса.
  11. Опубликуйте сервис в Marketplace.

Подготовительные шаги

  1. Убедитесь, что ваше приложение удовлетворяет требованиям сервиса Marketplace.
  2. Создайте и загрузите в VK Cloud образ image-based приложения.
  3. Определитесь с типом тарификации для вашего приложения, разработайте тарифные планы и опции.
  4. Подключитесь к кабинету поставщика.

1. Создайте основу для файловой структуры сервисного пакета

Вся информация, необходимая для загрузки image-based приложения в Marketplace, подготавливается в виде сервисного пакета с определенной файловой структурой.

Чтобы подготовить файловую структуру:

  1. Создайте директорию сервиса с именем <ИМЯ_СЕРВИСА>.

  2. В директории сервиса создайте файл version.yaml. В файле укажите:

    version: 0.0.1
  3. В директории <ИМЯ_СЕРВИСА> создайте директории images, parameters и plans.

  4. В директорию images поместите файл с иконкой сервиса в формате .png или .svg. Размер файла — не более 1 МБ. Разрешение изображения — не менее 62 × 62 пикселей.

    Иконка сервиса будет отображаться в карточке сервиса:

    • в каталоге Marketplace;
    • на вкладке Описание сервиса на странице сервиса.

2. Опишите конфигурацию сервиса (тарифные планы, опции)

Конфигурация сервиса описывается с помощью файлов формата .yaml и .md.

  1. В директории <ИМЯ_СЕРВИСА> создайте файл 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>
  2. В директории <ИМЯ_СЕРВИСА> создайте файл full_description.md и заполните его описанием сервиса в формате Markdown. Содержание файла будет отображаться на его странице в Marketplace.

    Структура файла:

    <!--Небольшое общее описание сервиса в 2-3 предложениях--><!--Наименование поставщика-->## Решаемые задачи<!--Для решения каких задач можно использовать сервис-->## Характеристики сервиса:<!--Технические характеристики, желательно в форме таблицы--><!--Требования к инфраструктуре, какие ресурсы могут быть использованы--># Правила тарификации<!--По какой модели тарифицируется сервис, какие есть тарифные планы--># Полезные ссылки<!--Ссылка на раздел Marketplace в документации VK Cloud + ссылка на документацию на портале поставщика--># Техническая поддержка<!--Информация о технической поддержке сервиса, технической поддержки VK Cloud, контакты технической поддержки сервиса--># Лицензионное соглашение<!--Ссылка на юридические документы VK Cloud и сервиса поставщика-->
  3. В директории parameters для каждой тарифной опции создайте файл <ИМЯ_ОПЦИИ>.yaml и заполните его согласно примерам.

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

  4. В директории 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: 550   schema.minimum: 550
  5. В директории <ИМЯ_ПЛАНА> создайте и заполните файл display.yaml с описанием мастера конфигурации тарифного плана. Мастер конфигурации тарифного плана будет отображаться в Marketplace при подключении сервиса или обновлении тарифного плана.

3. Создайте манифесты Terraform с описанием конфигурации инфраструктуры для сервиса

  1. В директории plans/<ИМЯ_ПЛАНА> создайте директорию deployment.

  2. В директории deployment создайте и заполните:

    • Файл deploy.tf с манифестом Terraform, описывающим инфраструктуру и процесс развертывания в Marketplace тарифного плана <ИМЯ_ПЛАНА>.

    • (Опционально) Файл settings.yaml с настройками выполнения манифеста. Если в сервисном пакете нет файла settings.yaml, к манифестам Terraform будут применены значения параметров по умолчанию.

4. (Опционально) Проверьте корректность указания существующих ресурсов в манифестах Terraform

Чтобы сократить время тестирования манифестов Terraform и исключить попытки создания ресурсов с некорректной конфигурацией, перед тестированием манифестов рекомендуется проверить, что в них верно указаны параметры уже существующих ресурсов VK Cloud, например: тип ВМ, образ сервиса и т.д.

  1. Установите Terraform и настройте окружение, если это не сделано ранее.

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

    terraform init
  3. В рабочей директории создайте файл main.tf.

  4. Поместите в файл main.tf обращения к нужным источникам данных провайдера VK CS.

    Пример обращения к источнику данных vkcs_compute_flavor:

    data "vkcs_compute_flavor" "compute" {flavor_id = "4e115a9b-XXXX-95cf130d63c7"}

    В этом примере проверяется, что тип ВМ с ID 4e115a9b-XXXX-95cf130d63c7 существует в VK Cloud.

  5. В рабочей директории выполните команду:

    terraform apply

    При запросе подтверждения введите yes.

  6. Дождитесь завершения операции. Убедитесь, что при обращении к источникам данных не возникло ошибок.

5. (Опционально) Протестируйте манифесты Terraform локально

Протестируйте локально манифесты Terraform plans/<ИМЯ_ПЛАНА>/deployment/deploy.tf для каждого тарифного плана вашего приложения, используя инструкцию.

6. (Опционально) Протестируйте манифесты Terraform с системой развертывания

Перед загрузкой сервисного пакета на Marketplace протестируйте каждый манифест Terraform plans/<ИМЯ_ПЛАНА>/deployment/deploy.tfдля каждого плана вашего приложения с помощью API системы развертывания:

  1. Активируйте доступ по API, если это не было сделано ранее.
  2. Получите токен доступа к API.
  3. Загрузите один из манифестов plans/<ИМЯ_ПЛАНА>/deployment/deploy.tf в систему развертывания.
  4. Проверьте текущую конфигурацию загруженного манифеста.
  5. Создайте инстанс сервиса.
  6. В процессе создания и после создания инстанса проверьте его статус. Если статус failed, найдите описание ошибки в логах инстанса.
  7. Удалите инстанс сервиса.
  8. Проверьте статус удаленного инстанса сервиса. Если статус failed, найдите описание ошибки в логах инстанса.

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

7. (Опционально) Просмотрите логи и результаты работы агента Marketplace

Вы можете выявить ошибки при развертывании инстанса сервиса, просмотрев логи и результаты работы агента Marketplace. Они доступны, если при развертывании вашего приложения используются скрипты, которые выполняются с помощью ресурса ivkcs_agent_exec.

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

  1. Подключитесь к ВМ, на которой установлен агент, по протоколу удаленного доступа или с помощью VNC-консоли в личном кабинете VK Cloud.

    Имя ВМ, на которой был установлен агент, задано в ресурсе ivkcs_agent_init или ivkcs_user_data в манифесте plans/<ИМЯ_ПЛАНА>/deployment/deploy.tf.

  2. Чтобы просмотреть логи, выполните команду journalctl -u sower.

  3. Чтобы просмотреть результаты, перейдите в директорию /etc/sower/result.

8. Загрузите сервисный пакет на Marketplace

  1. Запакуйте сервисный пакет, т.е. директорию <ИМЯ_СЕРВИСА> с конфигурационными файлами сервиса и манифестами Terraform, в zip-архив. Размер архива должен быть не более 30 МБ.

  2. Загрузите архив на Marketplace одним из следующих способов:

    1. Перейдите в личный кабинет VK Cloud.
    2. В разделе Магазин приложений нажмите кнопку Перейти в кабинет поставщика.
    3. На вкладке Управление сервисами нажмите кнопку Добавить сервис.
    4. Выберите zip-архив на своем устройстве для загрузки в систему.
    5. Нажмите кнопку Добавить.

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

    Сервисный пакет, загруженный на Marketplace, сначала попадет в тестовое пространство имен, после публикации — в открытое.

  3. После окончания загрузки сервиса зайдите в личный кабинет VK Cloud и убедитесь, что сервис отображается в Marketplace. Загруженный сервис будет доступен только пользователям тестовых пространств имен Marketplace, указанных в сервисном ключе.

    Если после загрузки сервис не отображается в Marketplace, выйдите из личного кабинета и войдите заново.

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

Чтобы проверить, как сервис будет функционировать в тестовом пространстве имен Marketplace:

  1. Перейдите в раздел Магазин приложений личного кабинета VK Cloud.

  2. Нажмите кнопку Все решения.

  3. Нажмите на карточку вашего сервиса и перейдите на вкладку Тарифные планы.

  4. Убедитесь, что мастер конфигурации каждого тарифного плана отображается корректно.

  5. Подключите сервис. Убедитесь, что развертывание инстанса сервиса выполнено успешно.

    Если при развертывании инстанса сервиса не удалось создать ресурс, описанный в манифесте, система развертывания запустит процесс развертывания сервиса повторно. Повторные попытки могут занимать до 1,5 ч и могут быть отключены в файле settings.yaml.

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

  7. Обновите инстанс сервиса:

    1. Поменяйте значения тарифных опций текущего тарифного плана.
    2. Перейдите на новый тарифный план.

    Изменение параметров ресурсов, описанных в манифесте, запустит процесс переустановки инстанса сервиса.

    Если система развертывания не сможет обновить ресурсы, она будет пробовать сделать это повторно. Процесс обновления конфигурации инстанса сервиса с учетом повторных попыток может занимать до 1,5 ч. Повторные попытки можно отключить в файле settings.yaml.

  8. Проверьте основные пользовательские сценарии сервиса.

  9. Удалите инстанс сервиса.

  10. (Опционально) Обновите конфигурацию сервиса.

    1. Измените конфигурацию сервиса, если в результате тестирования возникла такая необходимость.
    2. Если в конфигурации сервиса на время тестирования и отладки были заданы тестовые значения для стоимости сервиса, отредактируйте их.

10. Опубликуйте образ сервиса

  1. Отправьте письмо на marketplace@cloud.vk.com.

    В письме укажите ID образа сервиса.

    Указанный образ будет опубликован и доступен всем пользователям облачной платформы. В ответном письме будет выслан ID публичного образа сервиса.

  2. В манифестах Terraform plans/<ИМЯ_ПЛАНА>/deployment/deploy.tf поменяйте ID образа сервиса на ID публичного образа сервиса.

  3. В файле service.yaml укажите новую ревизию сервиса.

  4. Загрузите сервисный пакет с ID публичного образа сервиса на Marketplace через кабинет поставщика или с помощью запроса к сервису Infra API.

11. Опубликуйте сервис в Marketplace

Отправьте письмо на marketplace@cloud.vk.com. В письме укажите ID сервиса и его ревизию.

Будет проведено модерирование сервисного пакета. После этого сервис будет опубликован на Marketplace.

Публикуемая ревизия сервиса будет перемещена из тестового пространства имен Marketplace в открытое, указанное в сервисном ключе. Сервис станет доступен всем пользователям, у которых есть доступ в это открытое пространство имен.