VK Cloud logo

SaaS-қосымшаны қосуBeta

Marketplace сервисі мен SaaS-қосымша SaaS-брокер арқылы VK OSB протоколы бойынша өзара әрекеттеседі. Протоколды VK Cloud платформасы ұсынады.

SaaS-брокерге қойылатын талаптар:

  • Брокер сервис инстанстарының өмірлік циклін сипаттайтын әдістерді іске асыруы тиіс. Әдістер сызбада көрсетілген.

  • Брокерде сенімді сертификаттау орталығы берген сертификаты бар қауіпсіз HTTPS протоколы бойынша аутентификация бапталуы тиіс.

SaaS-қосымшаның жеткізушісі SaaS-брокерді толықтай өздігінен немесе VK Cloud платформасы ұсынатын қалып негізінде әзірлейді. Қалыпта дүкен мен брокер арасындағы өзара әрекеттесу әлдеқашан іске асырылған. Оны брокердің нақты SaaS-қосымшамен өзара әрекеттесу сипаттамасымен толықтыру қажет. Қалып Python тілінде FastAPI фреймворкі негізінде әзірленген.

Бұл нұсқаулық VK Cloud ұсынған қалып негізінде SaaS-брокерді әзірлеу жағдайына арналған.

Дайындық қадамдары

  1. marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта мыналарды сұраңыз:

    • VK OSB протоколын;
    • SaaS-брокерді әзірлеуге арналған қалыпты;
    • Marketplace-тің тестілік және ашық namespace атауларын және оларға қолжетімділікті.
  2. VK Cloud платформасында тіркеліңіз. VK Cloud тіркелгісі дүкендегі қолданбаны тестілеу үшін қажет.

1. Сервис конфигурациясын сипаттаңыз (тарифтік жоспарлар, опциялар)

  1. catalog_<ИМЯ_СЕРВИСА>.json файлын жасаңыз.

  2. JSON-файлда сервистің конфигурациясын келесі құрылымды пайдаланып сипаттаңыз:

    {    "services": [    {    <ПАРАМЕТРЫ_СЕРВИСА>,    "preview": {        "parameters": [            {            "name": "<ИМЯ_ОПЦИИ_1>" // Имя первой тарифной опции            },            {            "name": "<ИМЯ_ОПЦИИ_2>" // Имя второй тарифной опции            },            ...        ]        },    "plans": [        { // Описание первого тарифного плана            <ПАРАМЕТРЫ_ПЛАНА>,            "display": {            },            "billing": {            },            "schemas": {            }        },        { // Описание второго тарифного плана            <ПАРАМЕТРЫ_ПЛАНА>,            "display": {            },            "billing": {            },            "schemas": {            }        },        ...        ]    }    ]}

    Мұнда:

    • <ПАРАМЕТРЫ_СЕРВИСА>сервис параметрлері.

    • preview және plans секциялары бірге тарифтік жоспарлар матрицасының көрінісін анықтайды. Матрицада plans секциясында көрсетілген барлық тарифтік жоспарлар және preview секциясында көрсетілген тарифтік опциялар бейнеленеді.

    • preview секциясының parameters массиві тарифтік опциялардың атауларын қамтиды, бос болуы мүмкін. Бұл атаулар тек конфигурациялық JSON-файлында қолданылады. Дүкен интерфейсінде тарифтік опциялар осы опциялардың schemas секциясындағы description параметрімен берілген атаулармен көрсетіледі.

    • plans секциясы тарифтік жоспарлар мен олардың опцияларын сипаттайды және әр жоспар үшін келесі блоктарды қамтиды:

2. SaaS-брокерді әзірлеңіз

  1. Сервисіңіздің API-імен өзара әрекеттесуге арналған клиентті әзірлеңіз.

  2. Брокер мен сервистің өзара әрекеттесуін сипаттайтын сервистік менеджерді әзірлеңіз. Ол үшін келесі әдістерді іске асырыңыз:

    Әдіс

    Кіріс деректері

    Тенантты немесе аккаунтты жасау

    • Сервисті қосу кезінде дүкен қалыптастыратын сервис инстансының OSB ID-і. OSB ID сервис инстансының ID-ін қалыптастыруы үшін SaaS-қосымшаға беріледі. Сервис инстансының ID-і төменде кестеде сипатталған әдістерде қолданылады.
    • Тарифтік жоспардың ID-і.
    • Сервис конфигурациясының JSON-файлындағы plans.schemas.service_instance.create бөлімінде сипатталған жоспардың тарифтік опциялары.
    • (Опционалды) Пайдаланушы туралы ақпаратты қамтитын контекст: электрондық пошта, жобаның бірегей идентификаторы (PID)

    Тенантты немесе аккаунтты жаңарту

    • Сервис инстансының ID-і.
    • Тарифтік жоспардың ID-і.
    • Сервис конфигурациясының JSON-файлындағы plans.schemas.service_instance.update бөлімінде сипатталған жоспардың тарифтік опциялары

    Тенантты немесе аккаунтты алу және жою

    Сервис инстансының ID-і

    Сервистік байланыстарды (bindings) жасау

    Сервистік байланыстарды алу және жою

    • Сервис инстансының ID-і.
    • Сервистік байланыстың ID-і
  3. Клиентті сервистік менеджерге интеграциялаңыз.

  4. Брокерде аутентификацияны баптаңыз.

  5. Егер SaaS-қосымшада постоплаталық тарифтік опциялар болса және олар бойынша метрикалар pull-моделі бойынша жиналса, қосымша әрекеттерді орындаңыз:

    1. Сервистік менеджерде SaaS-қосымшаның нақты пайдаланылған ресурстары бойынша есепті алу әдісін іске асырыңыз. Сұрауға жауап ретінде брокер дүкенге есепті беруі тиіс.

    2. Сервистік менеджерде есеп өңделгені туралы брокерге хабарлау әдісін іске асырыңыз (есеп бойынша қаражатты есептен шығару орындалды немесе жоспарланған).

3. Сервис конфигурациясын брокерге жүктеңіз

  1. Брокер бар директорияға өтіңіз.

  2. Сервис конфигурациясы бар catalog_<ИМЯ_СЕРВИСА>.json файлын resources ішкі директориясына орналастырыңыз.

  3. resources/plan_mapping.json файлында мыналарды көрсетіңіз:

    • <ИМЯ_СЕРВИСА> — сервис атауы.

    • <ID_ПЛАНА>catalog_<ИМЯ_СЕРВИСА>.json файлында көрсетілген тарифтік жоспарлардың ID-лері.

    • <SAAS_ID_ПЛАНА> (string пішімі) — сервис жағындағы <ID_ПЛАНА> тарифтік жоспарларының ID-леріне сәйкес келетін тарифтік жоспарлардың ID-лері.

      {  "<ИМЯ_СЕРВИСА>": {    "<ID_ПЛАНА>": <SAAS_ID_ПЛАНА>,    "<ID_ПЛАНА>": <SAAS_ID_ПЛАНА>  }}

    plan_mapping.json файлы мазмұнының мысалы:

    {  "VKT": {    "0dc54b75-XXXX-89d5a47eef71": 1,    "312b628e-XXXX-080ab4ca3acb": 2,    "e2ae1588-XXXX-3f5081a799a9": 3,    "b54e7247-XXXX-7a9dccc22e7b": 4  }}
  4. Брокер бар директорияда .env.example файлын .env деп қайта атаңыз.

  5. .env файлында BROKER_MODE ішінде сервис атауын көрсетіңіз:

    BROKER_MODE=<ИМЯ_СЕРВИСА>

4. (Опционалды) Брокерді жергілікті түрде тестілеңіз

  1. Брокер директориясындағы .env файлында орта айнымалыларын сипаттаңыз:

    • BROKER_PROVIDER_CLIENT_ID — SaaS-қосымшаға қол жеткізуге арналған брокер атауы.
    • BROKER_PROVIDER_SECRET — брокердің SaaS-қосымшаға қол жеткізу паролі.
    • BROKER_PROVIDER_URL — SaaS-қосымша URL-і.
    • BROKER_USERNAME — брокермен сервистераралық өзара әрекеттесу үшін дүкен атауы.
    • BROKER_PASSWORD — брокермен сервистераралық өзара әрекеттесу үшін дүкен паролі.
  2. Брокер директориясындағы .env файлында брокердің ДБ-сына қол жеткізуге арналған айнымалылардың мәндерін көрсетіңіз.

  3. Python кітапханаларын келесі пәрменді орындап орнатыңыз:

    pip install -r requirements/prod.txt
  4. Келесі пәрменді орындап брокерді іске қосыңыз:

    gunicorn app.main:app --log-file - --workers ${UVICORN_WORKERS:-1} --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:${BROKER_PORT:-8000} --timeout ${WORKER_TIMEOUT:-90}

    Брокерді іске қосу пәрменіне жауап мысалы:

    INFO:     Started server process [34934]INFO:     Waiting for application startup.INFO:     Application startup complete.INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
  5. Брокер орнатылғаннан кейін браузерде http://0.0.0.0:8000/docs бетін ашыңыз.

    Бұл бетте Swagger редакторындағы брокер API-інің сипаттамасы бар.

  6. API сұрауларын келесі параметрлерді пайдаланып орындаңыз:

    • VK OSB протоколының x-broker-api-version нұсқасының мәні (мысалы, "0.1").
    • .env файлындағы BROKER_USERNAME мәні.
    • .env файлындағы BROKER_PASSWORD мәні.

5. Брокер бар образды ортада орналастырыңыз

Образды жинау үшін брокер қалыбының директориясындағы Dockerfile файлын пайдаланыңыз.

6. Брокерді тіркеңіз

marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта мыналарды көрсетіңіз:

  • Компания туралы ақпарат:

    • компания атауы,
    • байланыс тұлғасы,
    • телефон.
  • Сервис инстанстарын жасау кезінде қателер туралы хабарламалар келіп тұратын пайдаланушының электрондық поштасы.

  • Кестеде келтірілген брокер параметрлері.

Атауы

Сипаттамасы

Пішімі

Міндетті

name

Брокер атауы

string

SaaS-қосымшаны қосу

url

Дүкеннен сұраулар жіберілетін URL

string

SaaS-қосымшаны қосу

description

Брокер сипаттамасы

string

SaaS-қосымшаны қосу

osb_version

VK OSB протоколының нұсқасы

string

SaaS-қосымшаны қосу

username

Брокермен сервистераралық өзара әрекеттесу үшін дүкен атауы.

string

SaaS-қосымшаны қосу

password

Брокермен сервистераралық өзара әрекеттесу үшін дүкен паролі.

string

SaaS-қосымшаны қосу

Брокер тіркелгеннен кейін SaaS-қосымша дүкеннің тестілік namespace-інде қолжетімді болады. Дүкеннің ашық namespace-інде сервис тек жарияланғаннан кейін ғана қолжетімді болады.

7. Дүкенде сервисті тестілеңіз

Сервистің VK Cloud ішінде қалай жұмыс істейтінін тексеру үшін оны дүкеннің тестілік namespace-інде тестілеңіз:

  1. Сервисті тестілеу үшін берілетін бонустарды алу мақсатында marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Қаражат VK Cloud ішіндегі жобаңыздың бонустық шотына есептеледі.

  2. Егер сервис конфигурациясында көрсетілген тестілік namespace-терге қолжетімділігіңіз болмаса, marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта мыналарды көрсетіңіз:

    • Сервис конфигурациясының JSON-файлындағы metadata параметрінде берілген Marketplace-тің тестілік namespace атаулары.
    • Marketplace-тің тестілік namespace-теріне қолжетімділік қажет пайдаланушының электрондық поштасы.
  3. Өтіңіз VK Cloud жеке кабинетінің Қолданбалар дүкені бөліміне.

  4. Барлық шешімдер батырмасын басыңыз.

  5. Қызметіңіздің карточкасын басып, Тарифтік жоспарлар қойындысына өтіңіз.

  6. Әр тарифтік жоспардың конфигурациялау шебері дұрыс көрсетілетініне көз жеткізіңіз.

  7. Сервисті қосыңыз.

  8. Сервис инстансын жаңартыңыз:

    1. Ағымдағы тарифтік жоспардың тарифтік опцияларының мәндерін өзгертіңіз.
    2. Жаңа тарифтік жоспарға өтіңіз.
  9. Сервистің негізгі пайдаланушы сценарийлерін тексеріңіз.

  10. Жойыңыз сервис инстансын.

  11. Қажет болса, сервис конфигурациясына өзгерістер енгізіңіз:

    1. Брокер бар директорияның resources ішкі директориясына өтіңіз.
    2. catalog_<ИМЯ_СЕРВИСА>.json және plan_mapping.json файлдарын өңдеңіз.
    3. Тестілеуді тағы бір рет қайталаңыз.
  12. Егер тестілеу мен жөндеу уақытына сервис конфигурациясында құнның тестілік мәндерін көрсеткен болсаңыз, catalog_<ИМЯ_СЕРВИСА>.json файлын өңдеп, онда нақты мәндерді көрсетіңіз.

8. Сервисті жариялаңыз

marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта сервис ID-ін және оның ревизиясын көрсетіңіз.

Сервис конфигурациясына модерация жүргізіледі. Осыдан кейін сервис дүкенде жарияланады.

Жарияланатын сервис ревизиясы дүкеннің тестілік namespace-інен metadata параметрінде көрсетілген сервис конфигурациясының JSON-файлындағы ашық namespace-ке ауыстырылады. Сервис осы ашық namespace-ке қолжетімділігі бар барлық пайдаланушыларға қолжетімді болады.