SaaS-қосымшаны қосуBeta
Marketplace сервисі мен SaaS-қосымша SaaS-брокер арқылы VK OSB протоколы бойынша өзара әрекеттеседі. Протоколды VK Cloud платформасы ұсынады.
SaaS-брокерге қойылатын талаптар:
-
Брокер сервис инстанстарының өмірлік циклін сипаттайтын әдістерді іске асыруы тиіс. Әдістер сызбада көрсетілген.
-
Брокерде сенімді сертификаттау орталығы берген сертификаты бар қауіпсіз HTTPS протоколы бойынша аутентификация бапталуы тиіс.
SaaS-қосымшаның жеткізушісі SaaS-брокерді толықтай өздігінен немесе VK Cloud платформасы ұсынатын қалып негізінде әзірлейді. Қалыпта дүкен мен брокер арасындағы өзара әрекеттесу әлдеқашан іске асырылған. Оны брокердің нақты SaaS-қосымшамен өзара әрекеттесу сипаттамасымен толықтыру қажет. Қалып Python тілінде FastAPI фреймворкі негізінде әзірленген.
Бұл нұсқаулық VK Cloud ұсынған қалып негізінде SaaS-брокерді әзірлеу жағдайына арналған.
-
marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта мыналарды сұраңыз:
- VK OSB протоколын;
- SaaS-брокерді әзірлеуге арналған қалыпты;
- Marketplace-тің тестілік және ашық namespace атауларын және оларға қолжетімділікті.
-
VK Cloud платформасында тіркеліңіз. VK Cloud тіркелгісі дүкендегі қолданбаны тестілеу үшін қажет.
-
catalog_<ИМЯ_СЕРВИСА>.jsonфайлын жасаңыз. -
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секциясы тарифтік жоспарлар мен олардың опцияларын сипаттайды және әр жоспар үшін келесі блоктарды қамтиды:<ПАРАМЕТРЫ_ПЛАНА>— жоспар параметрлері.- display секциясы тарифтік жоспарды конфигурациялау шеберін сипаттайды.
- billing секциясы жоспар мен оның опцияларының құны және тарификациялау тәсілі туралы ақпаратты қамтиды.
- schemas секциясы жоспардың тарифтік опцияларын тізімдейді.
-
-
Сервисіңіздің API-імен өзара әрекеттесуге арналған клиентті әзірлеңіз.
-
Брокер мен сервистің өзара әрекеттесуін сипаттайтын сервистік менеджерді әзірлеңіз. Ол үшін келесі әдістерді іске асырыңыз:
Әдіс
Кіріс деректері
Тенантты немесе аккаунтты жасау
- Сервисті қосу кезінде дүкен қалыптастыратын сервис инстансының 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-і.
- Сервис конфигурациясының JSON-файлындағы plans.schemas.service_binding.create бөлімінде сипатталған сервистік байланыстардың параметрлері.
- (Опционалды) Пайдаланушы туралы ақпаратты қамтитын контекст: электрондық пошта, жобаның бірегей идентификаторы (PID)
Сервистік байланыстарды алу және жою
- Сервис инстансының ID-і.
- Сервистік байланыстың ID-і
-
Клиентті сервистік менеджерге интеграциялаңыз.
-
Брокерде аутентификацияны баптаңыз.
-
Егер SaaS-қосымшада постоплаталық тарифтік опциялар болса және олар бойынша метрикалар pull-моделі бойынша жиналса, қосымша әрекеттерді орындаңыз:
-
Сервистік менеджерде SaaS-қосымшаның нақты пайдаланылған ресурстары бойынша есепті алу әдісін іске асырыңыз. Сұрауға жауап ретінде брокер дүкенге есепті беруі тиіс.
-
Сервистік менеджерде есеп өңделгені туралы брокерге хабарлау әдісін іске асырыңыз (есеп бойынша қаражатты есептен шығару орындалды немесе жоспарланған).
-
-
Брокер бар директорияға өтіңіз.
-
Сервис конфигурациясы бар
catalog_<ИМЯ_СЕРВИСА>.jsonфайлынresourcesішкі директориясына орналастырыңыз. -
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}} -
-
Брокер бар директорияда
.env.exampleфайлын.envдеп қайта атаңыз. -
.envфайлындаBROKER_MODEішінде сервис атауын көрсетіңіз:BROKER_MODE=<ИМЯ_СЕРВИСА>
-
Брокер директориясындағы
.envфайлында орта айнымалыларын сипаттаңыз:BROKER_PROVIDER_CLIENT_ID— SaaS-қосымшаға қол жеткізуге арналған брокер атауы.BROKER_PROVIDER_SECRET— брокердің SaaS-қосымшаға қол жеткізу паролі.BROKER_PROVIDER_URL— SaaS-қосымша URL-і.BROKER_USERNAME— брокермен сервистераралық өзара әрекеттесу үшін дүкен атауы.BROKER_PASSWORD— брокермен сервистераралық өзара әрекеттесу үшін дүкен паролі.
-
Брокер директориясындағы
.envфайлында брокердің ДБ-сына қол жеткізуге арналған айнымалылардың мәндерін көрсетіңіз. -
Python кітапханаларын келесі пәрменді орындап орнатыңыз:
Linuxpip install -r requirements/prod.txt -
Келесі пәрменді орындап брокерді іске қосыңыз:
Linuxgunicorn 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) -
Брокер орнатылғаннан кейін браузерде http://0.0.0.0:8000/docs бетін ашыңыз.
Бұл бетте Swagger редакторындағы брокер API-інің сипаттамасы бар.
-
API сұрауларын келесі параметрлерді пайдаланып орындаңыз:
- VK OSB протоколының
x-broker-api-versionнұсқасының мәні (мысалы,"0.1"). .envфайлындағыBROKER_USERNAMEмәні..envфайлындағыBROKER_PASSWORDмәні.
- VK OSB протоколының
Образды жинау үшін брокер қалыбының директориясындағы Dockerfile файлын пайдаланыңыз.
marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта мыналарды көрсетіңіз:
-
Компания туралы ақпарат:
- компания атауы,
- байланыс тұлғасы,
- телефон.
-
Сервис инстанстарын жасау кезінде қателер туралы хабарламалар келіп тұратын пайдаланушының электрондық поштасы.
-
Кестеде келтірілген брокер параметрлері.
Атауы | Сипаттамасы | Пішімі | Міндетті |
|---|---|---|---|
| Брокер атауы | string | |
| Дүкеннен сұраулар жіберілетін URL | string | |
| Брокер сипаттамасы | string | |
| VK OSB протоколының нұсқасы | string | |
| Брокермен сервистераралық өзара әрекеттесу үшін дүкен атауы. | string | |
| Брокермен сервистераралық өзара әрекеттесу үшін дүкен паролі. | string |
Брокер тіркелгеннен кейін SaaS-қосымша дүкеннің тестілік namespace-інде қолжетімді болады. Дүкеннің ашық namespace-інде сервис тек жарияланғаннан кейін ғана қолжетімді болады.
Сервистің VK Cloud ішінде қалай жұмыс істейтінін тексеру үшін оны дүкеннің тестілік namespace-інде тестілеңіз:
-
Сервисті тестілеу үшін берілетін бонустарды алу мақсатында marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Қаражат VK Cloud ішіндегі жобаңыздың бонустық шотына есептеледі.
-
Егер сервис конфигурациясында көрсетілген тестілік namespace-терге қолжетімділігіңіз болмаса, marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта мыналарды көрсетіңіз:
- Сервис конфигурациясының JSON-файлындағы
metadataпараметрінде берілген Marketplace-тің тестілік namespace атаулары. - Marketplace-тің тестілік namespace-теріне қолжетімділік қажет пайдаланушының электрондық поштасы.
- Сервис конфигурациясының JSON-файлындағы
-
Өтіңіз VK Cloud жеке кабинетінің Қолданбалар дүкені бөліміне.
-
Барлық шешімдер батырмасын басыңыз.
-
Қызметіңіздің карточкасын басып, Тарифтік жоспарлар қойындысына өтіңіз.
-
Әр тарифтік жоспардың конфигурациялау шебері дұрыс көрсетілетініне көз жеткізіңіз.
-
Сервисті қосыңыз.
-
Сервис инстансын жаңартыңыз:
- Ағымдағы тарифтік жоспардың тарифтік опцияларының мәндерін өзгертіңіз.
- Жаңа тарифтік жоспарға өтіңіз.
-
Сервистің негізгі пайдаланушы сценарийлерін тексеріңіз.
-
Жойыңыз сервис инстансын.
-
Қажет болса, сервис конфигурациясына өзгерістер енгізіңіз:
- Брокер бар директорияның
resourcesішкі директориясына өтіңіз. catalog_<ИМЯ_СЕРВИСА>.jsonжәнеplan_mapping.jsonфайлдарын өңдеңіз.- Тестілеуді тағы бір рет қайталаңыз.
- Брокер бар директорияның
-
Егер тестілеу мен жөндеу уақытына сервис конфигурациясында құнның тестілік мәндерін көрсеткен болсаңыз,
catalog_<ИМЯ_СЕРВИСА>.jsonфайлын өңдеп, онда нақты мәндерді көрсетіңіз.
marketplace@cloud.vk.com мекенжайына хат жіберіңіз. Хатта сервис ID-ін және оның ревизиясын көрсетіңіз.
Сервис конфигурациясына модерация жүргізіледі. Осыдан кейін сервис дүкенде жарияланады.
Жарияланатын сервис ревизиясы дүкеннің тестілік namespace-інен metadata параметрінде көрсетілген сервис конфигурациясының JSON-файлындағы ашық namespace-ке ауыстырылады. Сервис осы ашық namespace-ке қолжетімділігі бар барлық пайдаланушыларға қолжетімді болады.