From 58d54f2a958fb4737801e62500a65a7349246218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 1 Aug 2026 20:10:19 +0400 Subject: [PATCH] =?UTF-8?q?v0.5.0:=203=20=D1=81=D1=82=D0=B5=D0=BD=D0=B4?= =?UTF-8?q?=D0=B0=20=E2=80=94=20=D0=B8=D0=B7=D0=BE=D0=BB=D1=8F=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?,=20WSGI=20middleware,=20OpenAPI=20server=20selector,=20POLYGON?= =?UTF-8?q?=5FSTANDS=20env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - loader.py: STANDS dict, get_services/get_ops_index per stand, POLYGON_STANDS env - mock_state.py: get_state(stand_id) — ленивая инициализация - app.py: StandMiddleware — перезапись PATH_INFO до Flask-роутинга - Все роуты: LocalProxy(state), LocalProxy(SERVICES/OPS_INDEX) через g.stand_id - openapi.py: _build_servers() — по одному серверу на стенд - services/stand{1,2,3}/ — 37 YAML на стенд из STANDS/dev и STANDS/test - tests/test_api.py: +4 multi-stand теста (изоляция, fail-next, OpenAPI servers) - Обратная совместимость: /api/v1/svc/... → стенд по умолчанию --- site/app.py | 59 +- site/config/loader.py | 94 +- site/mock_state.py | 20 +- site/routes/instances_routes.py | 14 +- site/routes/mock_routes.py | 14 +- site/routes/openapi.py | 22 +- site/routes/operations_routes.py | 23 +- site/routes/root.py | 9 +- site/routes/run.py | 10 +- site/routes/services_routes.py | 7 +- site/services/stand1/109_zones_v2.yaml | 258 ++++++ site/services/stand1/111_dnsrecord.yaml | 92 ++ site/services/stand1/115_mariadb.yaml | 406 +++++++++ site/services/stand1/116_kafka.yaml | 347 +++++++ site/services/stand1/119_akhq.yaml | 107 +++ site/services/stand1/120_clickhouse.yaml | 521 +++++++++++ site/services/stand1/12_s3.yaml | 119 +++ site/services/stand1/13_s3bucket.yaml | 90 ++ .../stand1/148_vc_mgmt_sthutrval_cluster.yaml | 150 +++ site/services/stand1/149_valo_tenant.yaml | 216 +++++ .../stand1/150_k8s_sthutrval_cluster.yaml | 324 +++++++ site/services/stand1/151_k8s_openbao.yaml | 372 ++++++++ site/services/stand1/163_llm_ai.yaml | 277 ++++++ site/services/stand1/19_vc_org.yaml | 133 +++ site/services/stand1/1_dummy.yaml | 314 +++++++ site/services/stand1/21_vc_vdc.yaml | 166 ++++ site/services/stand1/22_vc_nsxt.yaml | 139 +++ site/services/stand1/25_vcexternalip.yaml | 186 ++++ site/services/stand1/26_vapp.yaml | 75 ++ site/services/stand1/27_vc_vm_v2.yaml | 52 ++ site/services/stand1/28_vc_vm_v3.yaml | 298 ++++++ site/services/stand1/29_vc_vdc_group.yaml | 71 ++ site/services/stand1/2_template.yaml | 199 ++++ site/services/stand1/50_nextcloud.yaml | 424 +++++++++ site/services/stand1/81_superset.yaml | 82 ++ site/services/stand1/82_harbor.yaml | 108 +++ site/services/stand1/86_k8s_velero.yaml | 175 ++++ site/services/stand1/89_flask.yaml | 234 +++++ site/services/stand1/90_postgres.yaml | 855 +++++++++++++++++ site/services/stand1/91_redis.yaml | 184 ++++ site/services/stand1/92_mongodb.yaml | 265 ++++++ site/services/stand1/93_rabbitmq.yaml | 194 ++++ site/services/stand1/94_lucee.yaml | 224 +++++ site/services/stand1/95_nodejs.yaml | 225 +++++ site/services/stand1/96_pgadmin.yaml | 133 +++ site/services/stand1/98_http.yaml | 145 +++ site/services/stand1/99_gitea.yaml | 164 ++++ site/services/stand2/109_zones_v2.yaml | 245 +++++ site/services/stand2/111_dnsrecord.yaml | 92 ++ site/services/stand2/115_mariadb.yaml | 408 +++++++++ site/services/stand2/116_kafka.yaml | 349 +++++++ site/services/stand2/119_akhq.yaml | 109 +++ site/services/stand2/120_clickhouse.yaml | 523 +++++++++++ site/services/stand2/12_s3.yaml | 119 +++ site/services/stand2/13_s3bucket.yaml | 90 ++ .../stand2/148_vc_mgmt_sthutrval_cluster.yaml | 150 +++ site/services/stand2/149_valo_tenant.yaml | 216 +++++ .../stand2/150_k8s_sthutrval_cluster.yaml | 324 +++++++ site/services/stand2/151_k8s_openbao.yaml | 374 ++++++++ site/services/stand2/163_llm_ai.yaml | 237 +++++ site/services/stand2/19_vc_org.yaml | 133 +++ site/services/stand2/1_dummy.yaml | 314 +++++++ site/services/stand2/21_vc_vdc.yaml | 166 ++++ site/services/stand2/22_vc_nsxt.yaml | 139 +++ site/services/stand2/25_vcexternalip.yaml | 186 ++++ site/services/stand2/26_vapp.yaml | 75 ++ site/services/stand2/27_vc_vm_v2.yaml | 52 ++ site/services/stand2/28_vc_vm_v3.yaml | 298 ++++++ site/services/stand2/29_vc_vdc_group.yaml | 71 ++ site/services/stand2/2_template.yaml | 201 ++++ site/services/stand2/50_nextcloud.yaml | 428 +++++++++ site/services/stand2/81_superset.yaml | 84 ++ site/services/stand2/82_harbor.yaml | 105 +++ site/services/stand2/86_k8s_velero.yaml | 177 ++++ site/services/stand2/89_flask.yaml | 238 +++++ site/services/stand2/90_postgres.yaml | 859 ++++++++++++++++++ site/services/stand2/91_redis.yaml | 186 ++++ site/services/stand2/92_mongodb.yaml | 267 ++++++ site/services/stand2/93_rabbitmq.yaml | 196 ++++ site/services/stand2/94_lucee.yaml | 228 +++++ site/services/stand2/95_nodejs.yaml | 229 +++++ site/services/stand2/96_pgadmin.yaml | 137 +++ site/services/stand2/98_http.yaml | 149 +++ site/services/stand2/99_gitea.yaml | 164 ++++ site/services/stand3/109_zones_v2.yaml | 258 ++++++ site/services/stand3/111_dnsrecord.yaml | 92 ++ site/services/stand3/115_mariadb.yaml | 406 +++++++++ site/services/stand3/116_kafka.yaml | 347 +++++++ site/services/stand3/119_akhq.yaml | 107 +++ site/services/stand3/120_clickhouse.yaml | 521 +++++++++++ site/services/stand3/12_s3.yaml | 119 +++ site/services/stand3/13_s3bucket.yaml | 90 ++ .../stand3/148_vc_mgmt_sthutrval_cluster.yaml | 150 +++ site/services/stand3/149_valo_tenant.yaml | 216 +++++ .../stand3/150_k8s_sthutrval_cluster.yaml | 324 +++++++ site/services/stand3/151_k8s_openbao.yaml | 372 ++++++++ site/services/stand3/163_llm_ai.yaml | 277 ++++++ site/services/stand3/19_vc_org.yaml | 133 +++ site/services/stand3/1_dummy.yaml | 314 +++++++ site/services/stand3/21_vc_vdc.yaml | 166 ++++ site/services/stand3/22_vc_nsxt.yaml | 139 +++ site/services/stand3/25_vcexternalip.yaml | 186 ++++ site/services/stand3/26_vapp.yaml | 75 ++ site/services/stand3/27_vc_vm_v2.yaml | 52 ++ site/services/stand3/28_vc_vm_v3.yaml | 298 ++++++ site/services/stand3/29_vc_vdc_group.yaml | 71 ++ site/services/stand3/2_template.yaml | 199 ++++ site/services/stand3/50_nextcloud.yaml | 424 +++++++++ site/services/stand3/81_superset.yaml | 82 ++ site/services/stand3/82_harbor.yaml | 108 +++ site/services/stand3/86_k8s_velero.yaml | 175 ++++ site/services/stand3/89_flask.yaml | 234 +++++ site/services/stand3/90_postgres.yaml | 855 +++++++++++++++++ site/services/stand3/91_redis.yaml | 184 ++++ site/services/stand3/92_mongodb.yaml | 265 ++++++ site/services/stand3/93_rabbitmq.yaml | 194 ++++ site/services/stand3/94_lucee.yaml | 224 +++++ site/services/stand3/95_nodejs.yaml | 225 +++++ site/services/stand3/96_pgadmin.yaml | 133 +++ site/services/stand3/98_http.yaml | 145 +++ site/services/stand3/99_gitea.yaml | 164 ++++ tests/test_api.py | 61 ++ 122 files changed, 25223 insertions(+), 76 deletions(-) create mode 100644 site/services/stand1/109_zones_v2.yaml create mode 100644 site/services/stand1/111_dnsrecord.yaml create mode 100644 site/services/stand1/115_mariadb.yaml create mode 100644 site/services/stand1/116_kafka.yaml create mode 100644 site/services/stand1/119_akhq.yaml create mode 100644 site/services/stand1/120_clickhouse.yaml create mode 100644 site/services/stand1/12_s3.yaml create mode 100644 site/services/stand1/13_s3bucket.yaml create mode 100644 site/services/stand1/148_vc_mgmt_sthutrval_cluster.yaml create mode 100644 site/services/stand1/149_valo_tenant.yaml create mode 100644 site/services/stand1/150_k8s_sthutrval_cluster.yaml create mode 100644 site/services/stand1/151_k8s_openbao.yaml create mode 100644 site/services/stand1/163_llm_ai.yaml create mode 100644 site/services/stand1/19_vc_org.yaml create mode 100644 site/services/stand1/1_dummy.yaml create mode 100644 site/services/stand1/21_vc_vdc.yaml create mode 100644 site/services/stand1/22_vc_nsxt.yaml create mode 100644 site/services/stand1/25_vcexternalip.yaml create mode 100644 site/services/stand1/26_vapp.yaml create mode 100644 site/services/stand1/27_vc_vm_v2.yaml create mode 100644 site/services/stand1/28_vc_vm_v3.yaml create mode 100644 site/services/stand1/29_vc_vdc_group.yaml create mode 100644 site/services/stand1/2_template.yaml create mode 100644 site/services/stand1/50_nextcloud.yaml create mode 100644 site/services/stand1/81_superset.yaml create mode 100644 site/services/stand1/82_harbor.yaml create mode 100644 site/services/stand1/86_k8s_velero.yaml create mode 100644 site/services/stand1/89_flask.yaml create mode 100644 site/services/stand1/90_postgres.yaml create mode 100644 site/services/stand1/91_redis.yaml create mode 100644 site/services/stand1/92_mongodb.yaml create mode 100644 site/services/stand1/93_rabbitmq.yaml create mode 100644 site/services/stand1/94_lucee.yaml create mode 100644 site/services/stand1/95_nodejs.yaml create mode 100644 site/services/stand1/96_pgadmin.yaml create mode 100644 site/services/stand1/98_http.yaml create mode 100644 site/services/stand1/99_gitea.yaml create mode 100644 site/services/stand2/109_zones_v2.yaml create mode 100644 site/services/stand2/111_dnsrecord.yaml create mode 100644 site/services/stand2/115_mariadb.yaml create mode 100644 site/services/stand2/116_kafka.yaml create mode 100644 site/services/stand2/119_akhq.yaml create mode 100644 site/services/stand2/120_clickhouse.yaml create mode 100644 site/services/stand2/12_s3.yaml create mode 100644 site/services/stand2/13_s3bucket.yaml create mode 100644 site/services/stand2/148_vc_mgmt_sthutrval_cluster.yaml create mode 100644 site/services/stand2/149_valo_tenant.yaml create mode 100644 site/services/stand2/150_k8s_sthutrval_cluster.yaml create mode 100644 site/services/stand2/151_k8s_openbao.yaml create mode 100644 site/services/stand2/163_llm_ai.yaml create mode 100644 site/services/stand2/19_vc_org.yaml create mode 100644 site/services/stand2/1_dummy.yaml create mode 100644 site/services/stand2/21_vc_vdc.yaml create mode 100644 site/services/stand2/22_vc_nsxt.yaml create mode 100644 site/services/stand2/25_vcexternalip.yaml create mode 100644 site/services/stand2/26_vapp.yaml create mode 100644 site/services/stand2/27_vc_vm_v2.yaml create mode 100644 site/services/stand2/28_vc_vm_v3.yaml create mode 100644 site/services/stand2/29_vc_vdc_group.yaml create mode 100644 site/services/stand2/2_template.yaml create mode 100644 site/services/stand2/50_nextcloud.yaml create mode 100644 site/services/stand2/81_superset.yaml create mode 100644 site/services/stand2/82_harbor.yaml create mode 100644 site/services/stand2/86_k8s_velero.yaml create mode 100644 site/services/stand2/89_flask.yaml create mode 100644 site/services/stand2/90_postgres.yaml create mode 100644 site/services/stand2/91_redis.yaml create mode 100644 site/services/stand2/92_mongodb.yaml create mode 100644 site/services/stand2/93_rabbitmq.yaml create mode 100644 site/services/stand2/94_lucee.yaml create mode 100644 site/services/stand2/95_nodejs.yaml create mode 100644 site/services/stand2/96_pgadmin.yaml create mode 100644 site/services/stand2/98_http.yaml create mode 100644 site/services/stand2/99_gitea.yaml create mode 100644 site/services/stand3/109_zones_v2.yaml create mode 100644 site/services/stand3/111_dnsrecord.yaml create mode 100644 site/services/stand3/115_mariadb.yaml create mode 100644 site/services/stand3/116_kafka.yaml create mode 100644 site/services/stand3/119_akhq.yaml create mode 100644 site/services/stand3/120_clickhouse.yaml create mode 100644 site/services/stand3/12_s3.yaml create mode 100644 site/services/stand3/13_s3bucket.yaml create mode 100644 site/services/stand3/148_vc_mgmt_sthutrval_cluster.yaml create mode 100644 site/services/stand3/149_valo_tenant.yaml create mode 100644 site/services/stand3/150_k8s_sthutrval_cluster.yaml create mode 100644 site/services/stand3/151_k8s_openbao.yaml create mode 100644 site/services/stand3/163_llm_ai.yaml create mode 100644 site/services/stand3/19_vc_org.yaml create mode 100644 site/services/stand3/1_dummy.yaml create mode 100644 site/services/stand3/21_vc_vdc.yaml create mode 100644 site/services/stand3/22_vc_nsxt.yaml create mode 100644 site/services/stand3/25_vcexternalip.yaml create mode 100644 site/services/stand3/26_vapp.yaml create mode 100644 site/services/stand3/27_vc_vm_v2.yaml create mode 100644 site/services/stand3/28_vc_vm_v3.yaml create mode 100644 site/services/stand3/29_vc_vdc_group.yaml create mode 100644 site/services/stand3/2_template.yaml create mode 100644 site/services/stand3/50_nextcloud.yaml create mode 100644 site/services/stand3/81_superset.yaml create mode 100644 site/services/stand3/82_harbor.yaml create mode 100644 site/services/stand3/86_k8s_velero.yaml create mode 100644 site/services/stand3/89_flask.yaml create mode 100644 site/services/stand3/90_postgres.yaml create mode 100644 site/services/stand3/91_redis.yaml create mode 100644 site/services/stand3/92_mongodb.yaml create mode 100644 site/services/stand3/93_rabbitmq.yaml create mode 100644 site/services/stand3/94_lucee.yaml create mode 100644 site/services/stand3/95_nodejs.yaml create mode 100644 site/services/stand3/96_pgadmin.yaml create mode 100644 site/services/stand3/98_http.yaml create mode 100644 site/services/stand3/99_gitea.yaml diff --git a/site/app.py b/site/app.py index 3cc72dd..1b482e4 100644 --- a/site/app.py +++ b/site/app.py @@ -1,7 +1,11 @@ """ -polygon v0.2.2 — Mock Nubes API. +polygon v0.5.0 — Mock Nubes API. Эмулятор REST API облачной платформы Nubes для интеграционных тестов. +Поддержка нескольких стендов: + URL: //api/v1/svc/... (stand_id из POLYGON_STANDS) + Состояние изолировано: у каждого стенда свой набор инстансов и операций. + Blueprint'ы (каждый — отдельный файл в routes/): - root_bp → /health, / (HTML-страница) - services_bp → /api/v1/svc/services, /services/ @@ -15,16 +19,16 @@ Blueprint'ы (каждый — отдельный файл в routes/): ⛔ РОВНО 1 ВОРКЕР — состояние в памяти, не shared между процессами. Переменные окружения: + POLYGON_STANDS — список стендов: name:path,name:path,... MOCK_OP_DELAY — задержка операции в секундах (по умолчанию 0.1) WEB_CONCURRENCY — число gunicorn-воркеров (принудительно 1) """ import os -from flask import Flask +from flask import Flask, g, request # ⛔ Принудительно 1 воркер — состояние в памяти, иначе инстансы теряются. -# setdefault не перезапишет если Nubes/Procfile уже выставил WEB_CONCURRENCY=1. os.environ.setdefault("WEB_CONCURRENCY", "1") # Импорт blueprint'ов — каждый отвечает за свою группу маршрутов @@ -36,14 +40,57 @@ from routes.run import bp as run_bp from routes.mock_routes import bp as mock_bp from routes.openapi import bp as openapi_bp -# Версия — единый источник правды в config/loader.py -from config.loader import VERSION +# config +import config.loader as _cfg # Flask-приложение с Jinja2-шаблонами и статикой app = Flask(__name__, template_folder="templates", static_folder="static") + +# ═══════════════════════════════════════════════════════════════ +# WSGI Middleware — перезапись PATH_INFO до Flask-роутинга +# ═══════════════════════════════════════════════════════════════ + +class StandMiddleware: + """WSGI middleware: извлекает stand_id из URL и перезаписывает PATH_INFO. + + /stand1/api/v1/svc/... → environ['stand_id']='stand1', PATH_INFO=/api/v1/svc/... + /api/v1/svc/... → environ['stand_id']=DEFAULT_STAND, без изменений + /health, /swagger, / → environ['stand_id']=DEFAULT_STAND, без изменений + + Должен быть ДО Flask-роутинга, поэтому это middleware, а не before_request. + """ + + def __init__(self, wsgi_app): + self.wsgi_app = wsgi_app + + def __call__(self, environ, start_response): + path = environ.get("PATH_INFO", "/") + parts = path.split("/") + + if len(parts) > 1 and parts[1] in _cfg.STANDS: + environ["polygon.stand_id"] = parts[1] + new_path = "/" + "/".join(parts[2:]) if len(parts) > 2 else "/" + environ["PATH_INFO"] = new_path + else: + environ["polygon.stand_id"] = _cfg.DEFAULT_STAND + + return self.wsgi_app(environ, start_response) + + +app.wsgi_app = StandMiddleware(app.wsgi_app) + + +@app.before_request +def _set_stand(): + """Копирует stand_id из environ в g.""" + g.stand_id = request.environ.get("polygon.stand_id", _cfg.DEFAULT_STAND) + + +# ═══════════════════════════════════════════════════════════════ + + # Регистрируем blueprint'ы. -# Префиксы уже заданы в url_prefix каждого blueprint'а (кроме root — он без префикса). app.register_blueprint(root_bp) # /health, / app.register_blueprint(services_bp) # /api/v1/svc/services app.register_blueprint(instances_bp) # /api/v1/svc/instances diff --git a/site/config/loader.py b/site/config/loader.py index d4716c4..06fb878 100644 --- a/site/config/loader.py +++ b/site/config/loader.py @@ -1,74 +1,98 @@ """ config/loader.py — загрузка сервисов и глобальные конфигурационные переменные. -Этот модуль загружает все YAML-конфиги сервисов при первом импорте и хранит их -как модульные переменные. Все routes/*.py импортируют SERVICES, OPS_INDEX, DELAY, -VERSION отсюда — без дублирования загрузки и без циклических импортов. +Поддержка нескольких стендов: + Переменная POLYGON_STANDS задаёт список стендов в формате: + имя:путь,имя:путь,... + Например: + POLYGON_STANDS=stand1:services/stand1,stand2:services/stand2,stand3:services/stand3 -Переменные модуля (вычисляются ОДИН раз при старте): - VERSION — str, версия полигона (единая для app.py и root.py) - SERVICES — {service_id: service_def} все сервисы - OPS_INDEX — {svcOperationId: service_def} поиск сервиса по ID операции - DELAY — float, задержка операции из MOCK_OP_DELAY (по умолчанию 0.1) + По умолчанию — один стенд "default" из папки services/. + +Переменные модуля: + VERSION — str, версия полигона + STANDS — {stand_id: {"SERVICES": ..., "OPS_INDEX": ...}} + DELAY — float, задержка операции + DEFAULT_STAND — str, ID стенда по умолчанию """ import os import yaml -# Константы для загрузки YAML _YAML_EXTS = (".yaml", ".yml") _DEFAULT_SERVICES_DIR = "services" -def _load_all(services_dir=_DEFAULT_SERVICES_DIR): - """Загружает все YAML-файлы из директории сервисов. - - Возвращает кортеж (services, ops_index): - services — {service_id: {name, operations, cfsParams, stateParams, stateOut, ...}} - ops_index — {svcOperationId: service_def} для быстрого поиска «чей это opId» - """ +def _load_one(services_dir): + """Загружает YAML из одной директории → (services, ops_index).""" if not os.path.isdir(services_dir): raise FileNotFoundError(f"Services directory not found: {services_dir}") services = {} ops_index = {} - # Итерируем ВСЕ .yaml/.yml — без хардкода количества сервисов for fname in sorted(os.listdir(services_dir)): if not fname.lower().endswith(_YAML_EXTS): continue - path = os.path.join(services_dir, fname) with open(path, "r", encoding="utf-8") as f: cfg = yaml.safe_load(f) - if not cfg: continue - svc_id = cfg["service_id"] services[svc_id] = cfg - - # Индекс: svcOperationId → service_def (нужен для поиска «чей это opId») for op in cfg.get("operations", []): ops_index[op["svcOperationId"]] = cfg return services, ops_index -# --------------------------------------------------------------------------- -# Модульные переменные — инициализируются ОДИН раз при первом импорте. -# Все routes/*.py импортируют SERVICES, OPS_INDEX, DELAY отсюда. -# --------------------------------------------------------------------------- +def _parse_stands(raw): + """Парсит POLYGON_STANDS → {stand_id: services_dir}.""" + stands = {} + for pair in raw.split(","): + pair = pair.strip() + if ":" not in pair: + continue + name, path = pair.split(":", 1) + stands[name.strip()] = path.strip() + return stands -# Загружаем конфиги сервисов (37+ YAML из services/) -SERVICES, OPS_INDEX = _load_all() -# Задержка операции в секундах (для синхронного sleep в /run). -# Меняется на лету через POST /_mock/delay/ — см. mock_routes.py. -# ⛔ Импортировать ТОЛЬКО через `import config.loader as _cfg` и читать `_cfg.DELAY` — -# иначе float копируется по значению и не реагирует на изменение. +# ── Загрузка ── + +_raw = os.getenv("POLYGON_STANDS", "") +if _raw: + _stand_dirs = _parse_stands(_raw) +else: + _stand_dirs = {"default": _DEFAULT_SERVICES_DIR} + +STANDS = {} +for _sid, _sdir in _stand_dirs.items(): + _svc, _ops = _load_one(_sdir) + STANDS[_sid] = {"SERVICES": _svc, "OPS_INDEX": _ops} + +DEFAULT_STAND = next(iter(STANDS.keys())) + +# Для обратной совместимости (код который не использует g.stand_id) +_DF = STANDS[DEFAULT_STAND] +SERVICES = _DF["SERVICES"] +OPS_INDEX = _DF["OPS_INDEX"] + DELAY = float(os.getenv("MOCK_OP_DELAY", "0.1")) +VERSION = "0.5.0" -# Версия полигона — единый источник правды для app.py и routes/root.py. -# Меняется при КАЖДОМ изменении кода. -VERSION = "0.4.3" + +def get_services(stand_id): + """SERVICES для конкретного стенда.""" + return STANDS[stand_id]["SERVICES"] + + +def get_ops_index(stand_id): + """OPS_INDEX для конкретного стенда.""" + return STANDS[stand_id]["OPS_INDEX"] + + +def list_stands(): + """Список ID всех стендов.""" + return list(STANDS.keys()) diff --git a/site/mock_state.py b/site/mock_state.py index 748cae0..11a01db 100644 --- a/site/mock_state.py +++ b/site/mock_state.py @@ -148,5 +148,23 @@ class MockState: self.fail_next = False -# Глобальный синглтон +# ── Мульти-стенд: состояние на каждый стенд ── + +_states = {} + + +def get_state(stand_id): + """Получить (или создать лениво) MockState для стенда.""" + if stand_id not in _states: + _states[stand_id] = MockState() + return _states[stand_id] + + +def reset_all(): + """Сбросить ВСЕ стенды (для тестов).""" + for s in _states.values(): + s.reset() + + +# Глобальный синглтон (обратная совместимость) state = MockState() diff --git a/site/routes/instances_routes.py b/site/routes/instances_routes.py index 14dfc1f..3871d7f 100644 --- a/site/routes/instances_routes.py +++ b/site/routes/instances_routes.py @@ -10,10 +10,14 @@ Blueprint "instances" с префиксом /api/v1/svc/instances. HttpClient.post() в app-autotest достаёт instanceUid ИМЕННО из Location. """ -from flask import Blueprint, jsonify, make_response, request +from flask import Blueprint, g, jsonify, make_response, request +from werkzeug.local import LocalProxy import mock_state -from config.loader import SERVICES +import config.loader as _cfg + +state = LocalProxy(lambda: mock_state.get_state(g.stand_id)) +SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id)) bp = Blueprint("instances", __name__, url_prefix="/api/v1/svc/instances") @@ -32,7 +36,7 @@ def list_instances(): """ page_size = request.args.get("pageSize", 200, type=int) page = request.args.get("page", 1, type=int) - result = mock_state.state.list_instances(page_size=page_size, page=page) + result = state.list_instances(page_size=page_size, page=page) return jsonify(result) @@ -45,7 +49,7 @@ def get_instance(uid): Если инстанс не найден — 404 с JSON-ошибкой. """ - inst = mock_state.state.get_instance(uid) + inst = state.get_instance(uid) if not inst: return jsonify({"error": "instance not found"}), 404 @@ -81,7 +85,7 @@ def create_instance(): return jsonify({"error": f"service {service_id} not found"}), 404 # Создать shell инстанса (статус "creating") - uid = mock_state.state.create_instance(service_id, display_name, svc_def) + uid = state.create_instance(service_id, display_name, svc_def) # ⛔ Location ОБЯЗАТЕЛЕН — без него executor не получит instanceUid resp = make_response(jsonify({"instanceUid": uid}), 201) diff --git a/site/routes/mock_routes.py b/site/routes/mock_routes.py index df68999..205473d 100644 --- a/site/routes/mock_routes.py +++ b/site/routes/mock_routes.py @@ -10,10 +10,14 @@ Blueprint "mock" с префиксом /api/v1/svc/_mock. import os -from flask import Blueprint, jsonify, request, abort +from flask import Blueprint, g, jsonify, request, abort +from werkzeug.local import LocalProxy import mock_state -import config.loader as _cfg # для чтения/записи модульных переменных DELAY, SERVICES +import config.loader as _cfg + +state = LocalProxy(lambda: mock_state.get_state(g.stand_id)) +SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id)) bp = Blueprint("mock", __name__, url_prefix="/api/v1/svc/_mock") @@ -44,7 +48,7 @@ def mock_reset(): Удаляет ВСЕ инстансы, операции и параметры из MockState. Используется в тестах (autouse fixture) для изоляции тестов друг от друга. """ - mock_state.state.reset() + state.reset() return jsonify({"reset": "ok"}) @@ -59,7 +63,7 @@ def mock_state_view(): Полезно для отладки тестов: «какие инстансы сейчас живы?», «завершилась ли операция?». НЕ для production-использования. """ - st = mock_state.state + st = state return jsonify({ "instances": { uid: { @@ -146,5 +150,5 @@ def mock_fail_next(): После использования флаг сбрасывается (one-shot). Позволяет тестировать негативные сценарии. """ - mock_state.state.fail_next = True + state.fail_next = True return jsonify({"fail_next": True}) diff --git a/site/routes/openapi.py b/site/routes/openapi.py index e72c5ae..34bc181 100644 --- a/site/routes/openapi.py +++ b/site/routes/openapi.py @@ -20,6 +20,17 @@ bp = Blueprint("openapi", __name__, url_prefix="/api/v1/svc") _SERVER_URL = os.getenv("POLYGON_ENDPOINT", "https://polygon.pythonk8s.dev.nubes.ru") +def _build_servers(): + """Список серверов — по одному на каждый стенд.""" + servers = [] + for sid in _cfg.list_stands(): + servers.append({ + "url": f"{_SERVER_URL}/{sid}", + "description": f"Стенд: {sid}", + }) + return servers + + @bp.route("/openapi.json", methods=["GET"]) def openapi_spec(): """GET /api/v1/svc/openapi.json — OpenAPI 3.1.0 спецификация. @@ -56,18 +67,15 @@ def _build_spec(): "- Управляемый сброс через `/_mock/reset`\n" "- Симуляция ошибок через `/_mock/fail-next`\n\n" "### Авторизация\n" - f"Bearer-токен: `test-token-123` (настроен через `MOCK_AUTH_TOKEN`)" + "- Основные эндпоинты — без авторизации\n" + "- `_mock/*` — заголовок `X-Mock-Auth: test-token-123` " + "(настроен через `MOCK_AUTH_TOKEN`)" ), "contact": { "name": "Nubes Platform", }, }, - "servers": [ - { - "url": _SERVER_URL, - "description": "Polygon (mock)", - }, - ], + "servers": _build_servers(), "security": [], "tags": [ {"name": "services", "description": "Сервисы (каталог)"}, diff --git a/site/routes/operations_routes.py b/site/routes/operations_routes.py index 261502b..f0e01a6 100644 --- a/site/routes/operations_routes.py +++ b/site/routes/operations_routes.py @@ -13,11 +13,16 @@ Blueprint "operations" с префиксом /api/v1/svc. выше для ясности. """ -from flask import Blueprint, jsonify, make_response, request +from flask import Blueprint, g, jsonify, make_response, request +from werkzeug.local import LocalProxy import mock_state import state_machine -from config.loader import SERVICES, OPS_INDEX +import config.loader as _cfg + +state = LocalProxy(lambda: mock_state.get_state(g.stand_id)) +SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id)) +OPS_INDEX = LocalProxy(lambda: _cfg.get_ops_index(g.stand_id)) bp = Blueprint("operations", __name__, url_prefix="/api/v1/svc") @@ -135,7 +140,7 @@ def create_operation(): return jsonify({"error": "instanceUid is required"}), 400 # Проверка что инстанс существует - inst = mock_state.state.get_instance(instance_uid) + inst = state.get_instance(instance_uid) if not inst: return jsonify({"error": "instance not found"}), 404 @@ -165,7 +170,7 @@ def create_operation(): break # Создать операцию в MockState (dtFinish=None — ещё не выполнена) - op_uid = mock_state.state.create_operation(instance_uid, svc_op_id, operation, kind, action) + op_uid = state.create_operation(instance_uid, svc_op_id, operation, kind, action) # ⛔ Location ОБЯЗАТЕЛЕН — без него executor не получит opUid resp = make_response(jsonify({"instanceOperationUid": op_uid}), 201) @@ -192,7 +197,7 @@ def get_operation(uid): app-autotest использует ?fields=dtFinish,isSuccessful для поллинга — ждёт пока dtFinish != None. """ - op = mock_state.state.get_operation(uid) + op = state.get_operation(uid) if not op: return jsonify({"error": "operation not found"}), 404 @@ -203,7 +208,7 @@ def get_operation(uid): if "cfsParams" in fields: svc_op_id = op.get("svcOperationId") svc_def = OPS_INDEX.get(svc_op_id, {}) - op_params = mock_state.state.get_params(uid) + op_params = state.get_params(uid) result["cfsParams"] = _build_cfs_list(svc_def, svc_op_id, op_params) return jsonify({"instanceOperation": result}) @@ -233,11 +238,11 @@ def set_operation_param(): return jsonify({"error": "instanceOperationUid and svcOperationCfsParamId required"}), 400 # Проверка что операция существует - if not mock_state.state.get_operation(op_uid): + if not state.get_operation(op_uid): return jsonify({"error": "operation not found"}), 404 # Сохранить параметр (param_id — int, value — str) - mock_state.state.set_param(op_uid, param_id, value) + state.set_param(op_uid, param_id, value) return jsonify({}) @@ -256,7 +261,7 @@ def validate_cfs(uid): Если вернуть jsonify({}), app-autotest распарсит но логика та же. Пустое тело — канонический ответ реального Nubes API для validate-cfs. """ - if not mock_state.state.get_operation(uid): + if not state.get_operation(uid): return jsonify({"error": "operation not found"}), 404 return "", 200 diff --git a/site/routes/root.py b/site/routes/root.py index 35e13cf..4c1d448 100644 --- a/site/routes/root.py +++ b/site/routes/root.py @@ -7,12 +7,15 @@ Blueprint "root" регистрируется в app.py БЕЗ url_prefix. """ import os -from flask import Blueprint, render_template +from flask import Blueprint, g, render_template +from werkzeug.local import LocalProxy import mock_state import config.loader as _cfg -# Версия — из config/loader.py (единый источник правды) +state = LocalProxy(lambda: mock_state.get_state(g.stand_id)) +SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id)) + VERSION = _cfg.VERSION # Токен для авторизации в Swagger UI (предзаполняется) @@ -44,7 +47,7 @@ def index(): Использует Jinja2-шаблон templates/index.html и внешний CSS из static/style.css. """ svc_count = len(_cfg.SERVICES) - inst_count = len(mock_state.state.instances) + inst_count = len(state.instances) # Список сервисов для таблицы: name, id, кол-во операций svc_list = [] diff --git a/site/routes/run.py b/site/routes/run.py index 9bd8fb7..3417ddf 100644 --- a/site/routes/run.py +++ b/site/routes/run.py @@ -10,13 +10,17 @@ Blueprint "run" с префиксом /api/v1/svc. import time -from flask import Blueprint, jsonify +from flask import Blueprint, g, jsonify +from werkzeug.local import LocalProxy import mock_state import state_machine import config.loader as _cfg from utils.now import now as _now +state = LocalProxy(lambda: mock_state.get_state(g.stand_id)) +SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id)) + bp = Blueprint("run", __name__, url_prefix="/api/v1/svc") @@ -37,7 +41,7 @@ def run_operation(uid): Возвращает {"ok": True} — формат как в реальном Nubes API. Повторный вызов → 409 (operation already completed). """ - op = mock_state.state.get_operation(uid) + op = state.get_operation(uid) if not op: return jsonify({"error": "operation not found"}), 404 @@ -55,7 +59,7 @@ def run_operation(uid): time.sleep(_cfg.DELAY) # Проверка /_mock/fail-next — симуляция падения операции - st = mock_state.state + st = state if st.fail_next: st.fail_next = False # one-shot: сбросить после использования op["dtFinish"] = _now() diff --git a/site/routes/services_routes.py b/site/routes/services_routes.py index 3924d99..5adf33d 100644 --- a/site/routes/services_routes.py +++ b/site/routes/services_routes.py @@ -6,9 +6,12 @@ Blueprint "services" с префиксом /api/v1/svc/services. GET /services/ — детали конкретного сервиса (список операций) """ -from flask import Blueprint, jsonify +from flask import Blueprint, g, jsonify +from werkzeug.local import LocalProxy -from config.loader import SERVICES +import config.loader as _cfg + +SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id)) bp = Blueprint("services", __name__, url_prefix="/api/v1/svc/services") diff --git a/site/services/stand1/109_zones_v2.yaml b/site/services/stand1/109_zones_v2.yaml new file mode 100644 index 0000000..26c6972 --- /dev/null +++ b/site/services/stand1/109_zones_v2.yaml @@ -0,0 +1,258 @@ +name: zones_v2 +service_id: 109 +service_display_name: Управление DNS +service_short_name: zonesV2 +service_man: '# Управление DNS

## Что делает сервис

Управляет DNS-зоной вашего домена в инфраструктуре `ngcloud.ru`.
Сервис помогает:

- создать DNS-зону;
- поддерживать + записи в зоне (добавлять, удалять, массово менять);
- удалять зону;
- синхронизировать данные зоны с фактическим состоянием на DNS-серверах.

Сервис работает с авторитетными DNS-серверами + зоны:

- `ns3.ngcloud.ru`
- `185.247.187.83`
- `2a10:aa80:0:5::3`
- `ns4.ngcloud.ru`
- `81.22.46.43`
- `2a10:aa80:0:6::3`

## Очень важно: что сделать у регистратора + домена

Чтобы зона действительно начала обслуживаться, **нужно делегировать домен** у регистратора на авторитетные DNS-серверы:

- `ns3.ngcloud.ru`
- `ns4.ngcloud.ru`

В панели + регистратора нужно заменить NS-серверы домена на значения выше.
Без этого записи в зоне могут быть созданы, но интернет не будет использовать их для вашего домена.

## Проверка после настройки

Проверить + ответы от серверов зоны:

```bash
dig <ваш_домен> @ns3.ngcloud.ru
dig <ваш_домен> @ns4.ngcloud.ru
```

Проверить, что делегирование у регистратора применилось:

```bash
dig + <ваш_домен> NS
```

В ответе должны быть `ns3.ngcloud.ru` и `ns4.ngcloud.ru`.
' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 254 + operation: create + kind: instance + action: create +- svcOperationId: 260 + operation: create_record + kind: subresource + action: create +- svcOperationId: 255 + operation: delete + kind: instance + action: delete +- svcOperationId: 261 + operation: delete_record + kind: subresource + action: delete +- svcOperationId: 256 + operation: modify + kind: instance + action: modify +- svcOperationId: 262 + operation: modify_record + kind: subresource + action: modify +- svcOperationId: 259 + operation: reconcile + kind: action + action: reconcile +stateOut: + records: {} +cfsParams: +- svcOperationCfsParamId: 761 + svcOperationCfsParam: zoneName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 762 + svcOperationCfsParam: zoneKind + dataType: string + isRequired: true + defaultValue: NATIVE + isModifiable: false + valueList: + - NATIVE + - SLAVE +- svcOperationCfsParamId: 763 + svcOperationCfsParam: zoneMastersForSlave + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 764 + svcOperationCfsParam: zoneRefresh + dataType: integer > 0 + isRequired: true + defaultValue: '86400' + isModifiable: false +- svcOperationCfsParamId: 765 + svcOperationCfsParam: zoneRetry + dataType: integer > 0 + isRequired: true + defaultValue: '7200' + isModifiable: false +- svcOperationCfsParamId: 766 + svcOperationCfsParam: zoneExpire + dataType: integer > 0 + isRequired: true + defaultValue: '3600000' + isModifiable: false +- svcOperationCfsParamId: 767 + svcOperationCfsParam: zoneTTL + dataType: integer > 0 + isRequired: true + defaultValue: '86400' + isModifiable: false +- svcOperationCfsParamId: 768 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: powerdns + isModifiable: false + valueList: + - powerdns +- svcOperationCfsParamId: 777 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 778 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '3600' + isModifiable: false +- svcOperationCfsParamId: 779 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: A + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 780 + svcOperationCfsParam: recordInput + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + record: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 781 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 769 + svcOperationCfsParam: records + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + recordName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + recordTTL: + dataType: integer > 0 + defaultValue: '3600' + isRequired: true + isModifiable: false + recordType: + dataType: string + defaultValue: A + isRequired: true + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP + - CAA + recordInput: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 783 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 784 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 785 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 786 + svcOperationCfsParam: recordInput + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + record: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 254: + - 761 + - 762 + - 763 + - 764 + - 765 + - 766 + - 767 + - 768 + 260: + - 777 + - 778 + - 779 + - 780 + 255: [] + 261: + - 781 + 256: + - 769 + 262: + - 783 + - 784 + - 785 + - 786 + 259: [] +stateParams: + zoneName: '' + zoneKind: NATIVE + zoneMastersForSlave: '' + zoneRefresh: '86400' + zoneRetry: '7200' + zoneExpire: '3600000' + zoneTTL: '86400' + resourceRealm: powerdns diff --git a/site/services/stand1/111_dnsrecord.yaml b/site/services/stand1/111_dnsrecord.yaml new file mode 100644 index 0000000..e4c3e1b --- /dev/null +++ b/site/services/stand1/111_dnsrecord.yaml @@ -0,0 +1,92 @@ +name: dnsrecord +service_id: 111 +service_display_name: DNS запись +service_short_name: dnsrecord +service_man: Необходима DNS зона, в которой будет создана DNS запись.
Выберите
* Зону в которой будет создана запись
* Тип записи
* Имя записи
* Значение записи +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 45 + operation: create + kind: instance + action: create +- svcOperationId: 46 + operation: delete + kind: instance + action: delete +- svcOperationId: 90 + operation: modify + kind: instance + action: modify +- svcOperationId: 408 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 75 + svcOperationCfsParam: zoneUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 76 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - PTR + - SOA + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 77 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 78 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 450 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '3600' + isModifiable: false +- svcOperationCfsParamId: 256 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 45: + - 75 + - 76 + - 77 + - 78 + - 450 + 46: [] + 90: + - 256 + 408: [] +stateParams: + zoneUid: '' + recordType: '' + recordName: '' + recordInput: '' + recordTTL: '3600' diff --git a/site/services/stand1/115_mariadb.yaml b/site/services/stand1/115_mariadb.yaml new file mode 100644 index 0000000..18f23c8 --- /dev/null +++ b/site/services/stand1/115_mariadb.yaml @@ -0,0 +1,406 @@ +name: mariadb +service_id: 115 +service_display_name: Mariadb +service_short_name: mariadb +service_man: 'Mariadb кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.
Автоматическое резервное копирование, ручное восстановление.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 138 + operation: create + kind: instance + action: create +- svcOperationId: 242 + operation: create_database + kind: subresource + action: create +- svcOperationId: 243 + operation: create_user + kind: subresource + action: create +- svcOperationId: 139 + operation: delete + kind: instance + action: delete +- svcOperationId: 248 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 247 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 142 + operation: modify + kind: instance + action: modify +- svcOperationId: 287 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 141 + operation: resume + kind: instance + action: resume +- svcOperationId: 140 + operation: suspend + kind: instance + action: suspend +stateOut: + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 877 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 878 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 879 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 880 + svcOperationCfsParam: mariadbConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: 9.4.0 + isRequired: true + isModifiable: false + valueList: + - 8.4.0 + - 9.4.0 +- svcOperationCfsParamId: 881 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '720' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 882 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 734 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: db-ebbjso21 + isModifiable: false +- svcOperationCfsParamId: 735 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: user3vanbmfy + isModifiable: false +- svcOperationCfsParamId: 736 + svcOperationCfsParam: password + dataType: string + isRequired: true + defaultValue: p4egnsar + isModifiable: false +- svcOperationCfsParamId: 737 + svcOperationCfsParam: dbName + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + dbname: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 738 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: '%' + isModifiable: false +- svcOperationCfsParamId: 456 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 745 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 744 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 883 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 884 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 885 + svcOperationCfsParam: mariadbConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 8.4.0 + - 9.4.0 +- svcOperationCfsParamId: 886 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 887 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 138: + - 877 + - 878 + - 879 + - 880 + - 881 + - 882 + 242: + - 734 + 243: + - 735 + - 736 + - 737 + - 738 + 139: + - 456 + 248: + - 745 + 247: + - 744 + 142: + - 883 + - 884 + - 885 + - 886 + - 887 + 287: [] + 141: [] + 140: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 500, "memory": 512, "replicas": 1, "disk": 10}' + accessConfiguration: '{"masterAccessList": "[]", "masterIpSpace": ""}' + mariadbConfiguration: '{"version": "9.4.0"}' + backupConfiguration: '{"s3Uid": "", "retain": 720, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"enabled": false, "schedule": 0, "quota": 100, "percent": 10}' diff --git a/site/services/stand1/116_kafka.yaml b/site/services/stand1/116_kafka.yaml new file mode 100644 index 0000000..e6a93cb --- /dev/null +++ b/site/services/stand1/116_kafka.yaml @@ -0,0 +1,347 @@ +name: kafka +service_id: 116 +service_display_name: ApacheKafka +service_short_name: kafka +service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу

## 1. Общая информация

Сервис **Организация в Cloud Director** предназначен для управления изолированными + организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль + уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.

### Доступные операции

**create** + — Создание новой организации с заданными характеристиками и типом доступа.
**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.
**modify** + — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).
**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.
**resume** + — Разморозка организации, восстановление функций управления.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: + платформа, на которой будет создана организация.
Пример значения: `ngcloud.ru`.

### Тип организации
Описание: тип создаваемой организации.
Варианты:
- `iaas` — организация с прямым + доступом к облаку и авторизацией через Keycloak.
- `saas` — организация под управлением Nubes, без прямого доступа к облаку.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.

### Промышленное окружение
- Тип организации: `saas` (упрощённая + модель использования).

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе операций):

### Идентификатор организации
Уникальный + идентификатор созданной организации. Используется для всех дальнейших API-операций.

### Статус организации
Отражает текущее состояние: active, suspended, modifying, deleting.

### + Параметры сети
Выходные данные при наличии ipSpaces: список выделенных внешних IP, имя ip_space, количество IP.

---

## 5. Дополнительная информация

- Для конфигурации внешних + IP внутри организации необходимо предварительно создать:
-- хотя бы один **Виртуальный датацентр (VDC)**;
-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный к этой организации.
- + Удаление организации возможно только через 14 дней после перевода в состояние suspend.
- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов IP, сетей, ВМок + и иных объектов.
- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.
- Для iaas-организаций доступ осуществляется через Keycloak.

' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 148 + operation: create + kind: instance + action: create +- svcOperationId: 165 + operation: create_topic + kind: subresource + action: create +- svcOperationId: 168 + operation: create_user + kind: subresource + action: create +- svcOperationId: 149 + operation: delete + kind: instance + action: delete +- svcOperationId: 167 + operation: delete_topic + kind: subresource + action: delete +- svcOperationId: 170 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 162 + operation: modify + kind: instance + action: modify +- svcOperationId: 166 + operation: modify_topic + kind: subresource + action: modify +- svcOperationId: 169 + operation: modify_user + kind: subresource + action: modify +- svcOperationId: 161 + operation: resume + kind: instance + action: resume +- svcOperationId: 160 + operation: suspend + kind: instance + action: suspend +stateOut: + topics: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 1084 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1085 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1086 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + allocationExternal: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 523 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 524 + svcOperationCfsParam: partitions + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 525 + svcOperationCfsParam: replicas + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 530 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 531 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 532 + svcOperationCfsParam: operations + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - Create + - Describe + - Read + - Write +- svcOperationCfsParamId: 533 + svcOperationCfsParam: group + dataType: string + isRequired: true + defaultValue: '*' + isModifiable: false +- svcOperationCfsParamId: 534 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: '*' + isModifiable: false +- svcOperationCfsParamId: 529 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 540 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1087 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1088 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + allocationExternal: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 526 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 527 + svcOperationCfsParam: partitions + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 528 + svcOperationCfsParam: replicas + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 535 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 536 + svcOperationCfsParam: operations + dataType: array + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - Create + - Describe + - Read + - Write +- svcOperationCfsParamId: 537 + svcOperationCfsParam: group + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 538 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 539 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 148: + - 1084 + - 1085 + - 1086 + 165: + - 523 + - 524 + - 525 + 168: + - 530 + - 531 + - 532 + - 533 + - 534 + 149: [] + 167: + - 529 + 170: + - 540 + 162: + - 1087 + - 1088 + 166: + - 526 + - 527 + - 528 + 169: + - 535 + - 536 + - 537 + - 538 + - 539 + 161: [] + 160: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 2000, "memory": 2048, "replicas": 0, "disk": 1}' + accessConfiguration: '{"allocationExternal": false, "masterAccessList": "[]"}' diff --git a/site/services/stand1/119_akhq.yaml b/site/services/stand1/119_akhq.yaml new file mode 100644 index 0000000..129e0c3 --- /dev/null +++ b/site/services/stand1/119_akhq.yaml @@ -0,0 +1,107 @@ +name: akhq +service_id: 119 +service_display_name: Akhq +service_short_name: Akhq +service_man: '# Инструкция по развертыванию Apache Kafka через платформу

---
## 1. Общая информация
AKHQ — это веб-интерфейс для работы с кластерами Apache Kafka.
Позволяет просматривать + топики, consumer group''ы, сообщения, ACL, схему безопасности, состояние брокеров и метаданные.
Поддерживает работу с несколькими кластерами Kafka одновременно, включая внутренние и внешние (TLS) + подключения.

## Доступные операции
- **create** — Создание ресурса AKHQ
- **suspend** — Остановка ресурса
- **resume** — Возобновление работы ресурса
- **modify** — + Модификация настроек
- **delete** — Удаление ресурса

---
## 2. Параметры развертывания кластера
Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:

* + **Кластер Kafka к которому нужно настроить подключение**
Для использования AKHQ необходимо предварительно развернуть сервис Kafka. Пример: `kafka-external`.

* **Платформа для развертывания:**
Платформа + для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество узлов для работы Akhq. Пример `2`

* **Квота + (megabyte) памяти пода:**
Квота памяти пода в мегабайтах. Пример: `512`

* **Квота (millicore ) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`

* **Имя + домена:**
Dns Имя по которому будет происходить обращение к сервису. Указать необходимо уникальное имя до . ( то есть если необходимо получить dns ui) Пример: `kafka-external`

---
## + 4. Выходные параметры
После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.
Ключевым из них является:

**connectionUrl**
Это полное доменное имя (FQDN), + по которому будет доступен интерфейс AKHQ. После развёртывания подождите несколько минут — UI станет доступен по HTTPS, как только все сервисы полностью запустятся.

**Учетные данные**
Здесь + представлены поля для ввода логина и пароля, с помощью которых вы сможете авторизоваться в сервисе.

---
## 5. Дополнительная информация
Учётные записи, созданные для работы с AKHQ, предоставляют + доступ только для просмотра данных. Для управления Kafka, пожалуйста, используйте возможности личного кабинета.
---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 175 + operation: create + kind: instance + action: create +- svcOperationId: 176 + operation: delete + kind: instance + action: delete +- svcOperationId: 180 + operation: modify + kind: instance + action: modify +- svcOperationId: 178 + operation: resume + kind: instance + action: resume +- svcOperationId: 177 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 550 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 551 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: false +- svcOperationCfsParamId: 552 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: false +- svcOperationCfsParamId: 553 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 554 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +- svcOperationCfsParamId: 555 + svcOperationCfsParam: kafkaUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 565 + svcOperationCfsParam: kafkaUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 175: + - 550 + - 551 + - 552 + - 553 + - 554 + - 555 + 176: [] + 180: + - 565 + 178: [] + 177: [] +stateParams: + resourceRealm: '' + resourceMemory: '512' + resourceCPU: '500' + domain: '' + resourceInstances: '1' + kafkaUid: '' diff --git a/site/services/stand1/120_clickhouse.yaml b/site/services/stand1/120_clickhouse.yaml new file mode 100644 index 0000000..a85941b --- /dev/null +++ b/site/services/stand1/120_clickhouse.yaml @@ -0,0 +1,521 @@ +name: clickhouse +service_id: 120 +service_display_name: ClickHouse +service_short_name: clickhouse +service_man: '# Инструкция по управлению кластерами и пользователями ClickHouse

---

## Общая информация

ClickHouse — это колоночная система управления базами данных, предназначенная + для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.

Кластер + создаётся через оператор Altinity (`https://github.com/Altinity/clickhouse-operator`) в ресурсной платформе типа `k8s`

Кластеры могут создаваться шардированными с произвольным количеством реплик. + Для обеспечения отказоустойчивости и координации обязательно включение параметра `Создать ClickHouse-Keeper`.

Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать + услугу `S3 Object Storage`.
---

## Доступные операции

* **create** — Создание кластера
* **delete** — Удаление кластера
* **suspend** — Приостановка работы кластера
* + **resume** — Возобновление работы кластера
* **create_database** — Создание базы данных
* **delete_database** — Удаление базы данных
* **create_user** — Создание пользователя и настройка + прав доступа к базе данных
* **delete_user** — Удаление пользователя

## Процесс создания и первого подключения

1. Выполнить операцию `create` - будет создан кластер
2. Выполнить + операцию `create_database` - будет создана база данных
3. Выполнить операцию `create_user` - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)

## Примеры подключения

### + Подключение через HTTP-интерфейс

```bash
# Проверка доступности кластера
curl "http://:@:8123/" -d "SELECT 1"

# Выполнение запроса
curl "http://:@:8123/" + -d "SHOW DATABASES"
```

## Простые кейсы
*Создать БД и обычной таблицы*
```clickhouse
CREATE TABLE database.table
(
id UInt64,
value String
)
ENGINE + = MergeTree()
ORDER BY id;

INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);

SELECT count() FROM database.table;
```
Базы и таблицы не реплицируются + без специального ключа (`ON CLUSTER ''clickhousek8s''`)
В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах


*Создание БД и шардированной + таблицы*
```clickhouse
CREATE TABLE database.localUsers
(
id UInt64,
value String
)
ENGINE = MergeTree()
ORDER BY id;

CREATE TABLE database.shardedTable
AS + localUsers
ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', id);

INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);

SELECT count() + FROM shardedTable;
```
Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse

*Создание реплицируемой и шардированной таблицы*
```clickhouse
CREATE + TABLE IF NOT EXISTS database.localUsers ON cluster ''clickhousek8s''
(
user_id UInt64,
name String,
email String
)
ENGINE = ReplicatedMergeTree(
''/clickhouse/tables/{shard}/localUsers'',
''{replica}''
)
ORDER + BY user_id;

CREATE TABLE IF NOT EXISTS database.users ON cluster ''clickhousek8s''
AS database.localUsers
ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', rand());

INSERT + INTO database.users VALUES (1, ''Alice'', ''alice@example.com'');
INSERT INTO database.users VALUES (2, ''Bob'', ''bob@example.com'');
INSERT INTO database.users VALUES (3, ''Charlie'', ''charlie@example.com'');
INSERT + INTO database.users VALUES (4, ''David'', ''david@example.com'');
INSERT INTO database.users VALUES (5, ''Gosha'', ''gosha@example.com'');
INSERT INTO database.users VALUES (6, ''Eve'', ''eve@example.com'');
INSERT + INTO database.users VALUES (7, ''Frank'', ''frank@example.com'');
INSERT INTO database.users VALUES (8, ''Grace'', ''grace@example.com'');
INSERT INTO database.users VALUES (9, ''Hannah'', ''hannah@example.com'');
INSERT + INTO database.users VALUES (10, ''Ivan'', ''ivan@example.com'');

SELECT * FROM database.localUsers;
SELECT * FROM database.users;

SELECT COUNT(*) AS total_users FROM database.users;
SELECT + COUNT(*) AS total_users_local FROM database.localUsers;
```' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 181 + operation: create + kind: instance + action: create +- svcOperationId: 186 + operation: create_database + kind: subresource + action: create +- svcOperationId: 185 + operation: create_user + kind: subresource + action: create +- svcOperationId: 184 + operation: delete + kind: instance + action: delete +- svcOperationId: 188 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 187 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 189 + operation: modify + kind: instance + action: modify +- svcOperationId: 276 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 183 + operation: resume + kind: instance + action: resume +- svcOperationId: 182 + operation: suspend + kind: instance + action: suspend +stateOut: + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 837 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 838 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + shards: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 839 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 840 + svcOperationCfsParam: clickhouseKeeperConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '1' + - '3' +- svcOperationCfsParamId: 841 + svcOperationCfsParam: clickhouseConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '25.10' + isRequired: true + isModifiable: false + valueList: + - '25.10' +- svcOperationCfsParamId: 842 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 843 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 851 + svcOperationCfsParam: clickhouseFilesConfiguration + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + path: + dataType: string + defaultValue: something.xml + isRequired: true + isModifiable: false + xmlConfig: + dataType: string + defaultValue: + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 600 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: db01 + isModifiable: false +- svcOperationCfsParamId: 596 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: myusername + isModifiable: false +- svcOperationCfsParamId: 598 + svcOperationCfsParam: dbName + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + dbName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 599 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: ::/0 + isModifiable: false +- svcOperationCfsParamId: 602 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 601 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 844 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + shards: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 845 + svcOperationCfsParam: clickhouseKeeperConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '1' + - '3' + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 846 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 847 + svcOperationCfsParam: clickhouseConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '25.10' +- svcOperationCfsParamId: 848 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 849 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: false,true + isRequired: true + isModifiable: false + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 850 + svcOperationCfsParam: clickhouseFilesConfiguration + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + path: + dataType: string + defaultValue: something.xml + isRequired: true + isModifiable: false + xmlConfig: + dataType: string + defaultValue: + isRequired: true + isModifiable: false +cfsParamsByOp: + 181: + - 837 + - 838 + - 839 + - 840 + - 841 + - 842 + - 843 + - 851 + 186: + - 600 + 185: + - 596 + - 598 + - 599 + 184: [] + 188: + - 602 + 187: + - 601 + 189: + - 844 + - 845 + - 846 + - 847 + - 848 + - 849 + - 850 + 276: [] + 183: [] + 182: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 2048, "replicas": 1, "shards": 1, "disk": 10}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' + clickhouseKeeperConfiguration: '{"cpu": 500, "memory": 512, "replicas": 0}' + clickhouseConfiguration: '{"version": "25.10"}' + backupConfiguration: '{"schedule": "0 0 * * *", "s3Uid": "", "retain": 7}' + autoscaleConfiguration: '{"schedule": 0, "quota": 100, "percent": 10, "enabled": false}' + clickhouseFilesConfiguration: '{"path": "something.xml", "xmlConfig": ""}' diff --git a/site/services/stand1/12_s3.yaml b/site/services/stand1/12_s3.yaml new file mode 100644 index 0000000..f6ecdbd --- /dev/null +++ b/site/services/stand1/12_s3.yaml @@ -0,0 +1,119 @@ +name: s3 +service_id: 12 +service_display_name: S3 Object Storage +service_short_name: s3 +service_man: Руководство доступно по ссылке:
https://docs.s3-website.msk-1.ngcloud.ru/ +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 1 + operation: create + kind: instance + action: create +- svcOperationId: 6 + operation: create_sub_user + kind: subresource + action: create +- svcOperationId: 5 + operation: delete + kind: instance + action: delete +- svcOperationId: 7 + operation: delete_sub_user + kind: subresource + action: delete +- svcOperationId: 4 + operation: modify + kind: instance + action: modify +- svcOperationId: 407 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 3 + operation: resume + kind: instance + action: resume +- svcOperationId: 2 + operation: suspend + kind: instance + action: suspend +stateOut: + sub_users: {} +cfsParams: +- svcOperationCfsParamId: 163 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: ceph.tst.nubes.ru + isModifiable: false + valueList: + - ceph.tst.nubes.ru +- svcOperationCfsParamId: 320 + svcOperationCfsParam: displayName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 60 + svcOperationCfsParam: subUserName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 61 + svcOperationCfsParam: subUserAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - read + - write + - readwrite + - full +- svcOperationCfsParamId: 63 + svcOperationCfsParam: subUserName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 50 + svcOperationCfsParam: maxSizeGbPerUser + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 51 + svcOperationCfsParam: maxObjectsPerBucket + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 52 + svcOperationCfsParam: maxBucketsPerUser + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 1: + - 163 + - 320 + 6: + - 60 + - 61 + 5: [] + 7: + - 63 + 4: + - 50 + - 51 + - 52 + 407: [] + 3: [] + 2: [] +stateParams: + resourceRealm: ceph.tst.nubes.ru + displayName: '' diff --git a/site/services/stand1/13_s3bucket.yaml b/site/services/stand1/13_s3bucket.yaml new file mode 100644 index 0000000..caad982 --- /dev/null +++ b/site/services/stand1/13_s3bucket.yaml @@ -0,0 +1,90 @@ +name: s3bucket +service_id: 13 +service_display_name: S3 бакет +service_short_name: s3bucket +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 51 + operation: create + kind: instance + action: create +- svcOperationId: 52 + operation: delete + kind: instance + action: delete +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 124 + svcOperationCfsParam: s3UserUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 125 + svcOperationCfsParam: bucketName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 126 + svcOperationCfsParam: maxSize + dataType: string + isRequired: true + defaultValue: '-1' + isModifiable: false +- svcOperationCfsParamId: 127 + svcOperationCfsParam: readAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 128 + svcOperationCfsParam: listAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 129 + svcOperationCfsParam: corsAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 130 + svcOperationCfsParam: placement + dataType: string + isRequired: true + defaultValue: HOT + isModifiable: false + valueList: + - HOT + - COLD +cfsParamsByOp: + 51: + - 124 + - 125 + - 126 + - 127 + - 128 + - 129 + - 130 + 52: [] +stateParams: + s3UserUid: '' + bucketName: '' + maxSize: '-1' + readAll: 'false' + listAll: 'false' + corsAll: 'false' + placement: HOT diff --git a/site/services/stand1/148_vc_mgmt_sthutrval_cluster.yaml b/site/services/stand1/148_vc_mgmt_sthutrval_cluster.yaml new file mode 100644 index 0000000..e583079 --- /dev/null +++ b/site/services/stand1/148_vc_mgmt_sthutrval_cluster.yaml @@ -0,0 +1,150 @@ +name: vc_mgmt_sthutrval_cluster +service_id: 148 +service_display_name: Менеджмент Kubernetes кластер Штурвал +service_short_name: vcMgmtSthutrvalCluster +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 258 + operation: create + kind: instance + action: create +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 771 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: sandbox.nubes.ru + isRequired: true + isModifiable: false + valueList: + - sandbox.nubes.ru + clusterName: + dataType: string + defaultValue: example-brcyqrjr + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 772 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + appVersion: + dataType: string + defaultValue: 2.13.1 + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 773 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 774 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + groupName: + dataType: string + defaultValue: workers-jax0kk2f + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' +- svcOperationCfsParamId: 775 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +cfsParamsByOp: + 258: + - 771 + - 772 + - 773 + - 774 + - 775 +stateParams: + startupConfiguration: '{"resourceRealm": "sandbox.nubes.ru", "clusterName": "example-brcyqrjr"}' + clusterConfiguration: '{"appVersion": "2.13.1"}' + controlPlaneConfiguration: '{"sizingPolicy": "", "sizingDisk": 50, "count": 1}' + workerConfiguration: '{"sizingDisk": 50, "count": 2, "groupName": "workers-jax0kk2f", "sizingPolicy": ""}' + accessConfiguration: '{"needExternalAddressAPI": true, "accessIpListAPI": "[]", "needExternalAddressIngress": true, "accessIpListIngress": "[]"}' diff --git a/site/services/stand1/149_valo_tenant.yaml b/site/services/stand1/149_valo_tenant.yaml new file mode 100644 index 0000000..b23a975 --- /dev/null +++ b/site/services/stand1/149_valo_tenant.yaml @@ -0,0 +1,216 @@ +name: valo_tenant +service_id: 149 +service_display_name: VALO Cloud +service_short_name: valoTenant +service_man: '# Инструкция по развертыванию Тенант Valo через платформу

## 1. Общая информация
Тенант Valo — логический изолированный экземпляр сервиса VALO Cloud, предоставляющий защищённое + облачное хранилище, синхронизацию данных и доступ к документам с различных устройств. При создании тенант автоматически разворачивается в тестовом режиме сроком на 2 месяца. Перевод в промышленную эксплуатацию + выполняется отдельной операцией.

### Доступные операции

* **create** — создание нового тенанта в тестовом режиме сроком на 2 месяца.
* **modify** — изменение настроек тенанта, включая + перевод из ТЕСТ в ПРОД.
* **suspend** — выключение (приостановка работы) тенанта.
* **resume** — включение ранее приостановленного тенанта.
* **delete** — удаление тенанта; доступно только + после выполнения операции suspend.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: платформа, + на которой будет создан тенант.
Пример значения: `valo.ngcloud.ru`.

### DNS-Префикс
Описание: Будет добавлено в зону valo.ngcloud.ru
Пример значения: `mysimpledomain`.

### + Параметры хранилища
Описание: Сколько места будет выделено под использование в тенанте. Данные хранятся в S3. Размер указывается в Gigabytes
Пример значения: `10`.

### Настройки тенанта
Описание: + Ряд конфигурации Valo-тенанта, такие как настройки пользователя и доступного функционала
Пример значения: `опционально в рамках настройки`.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
Достаточно развернуть тенант в ТЕСТ. Срок предоставляется в 2 месяца. По истечению срока тенант автоматически переводится в `suspend` на стороне ресурсной платформы

### + Промышленное окружение
Для разблокировки используйте операцию `modify`

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе + операций):

### Статус тенанта
Отражает текущее состояние и параметры.

---

## 5. Дополнительная информация
Тенант всегда создаётся в режиме ТЕСТ и не может быть сразу + переведён в ПРОД без операции modify.
Удаление тенанта возможно только после его выключения с помощью операции suspend.
Срок тестового режима составляет 2 месяца с момента создания.
Операции + suspend и resume используются для временного управления доступностью сервиса без потери конфигурации.
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 202 + operation: create + kind: instance + action: create +- svcOperationId: 206 + operation: delete + kind: instance + action: delete +- svcOperationId: 203 + operation: modify + kind: instance + action: modify +- svcOperationId: 205 + operation: resume + kind: instance + action: resume +- svcOperationId: 204 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 655 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: valo.ngcloud.ru + isModifiable: false + valueList: + - valo.ngcloud.ru +- svcOperationCfsParamId: 656 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 657 + svcOperationCfsParam: valoOptions + dataType: map-fixed + isRequired: true + defaultValue: '{}' + isModifiable: true + dataDescriptor: + ffThemes: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffPublicLink: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffLogging: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + userCount: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + requestApproveMaxPeriod: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + ffOnlineEditor: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffWatermark: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffUserImport: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 658 + svcOperationCfsParam: s3Storage + dataType: integer > 0 + isRequired: true + defaultValue: '10' + isModifiable: true +- svcOperationCfsParamId: 659 + svcOperationCfsParam: valoOptions + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + ffWatermark: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffUserImport: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffThemes: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffPublicLink: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffLogging: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + userCount: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + requestApproveMaxPeriod: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + ffOnlineEditor: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 660 + svcOperationCfsParam: s3Storage + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 202: + - 655 + - 656 + - 657 + - 658 + 206: [] + 203: + - 659 + - 660 + 205: [] + 204: [] +stateParams: + resourceRealm: valo.ngcloud.ru + domain: '' + valoOptions: '{"ffThemes": true, "ffPublicLink": true, "ffLogging": true, "userCount": 10, "requestApproveMaxPeriod": 2, "ffOnlineEditor": true, "ffWatermark": true, "ffUserImport": true}' + s3Storage: '10' diff --git a/site/services/stand1/150_k8s_sthutrval_cluster.yaml b/site/services/stand1/150_k8s_sthutrval_cluster.yaml new file mode 100644 index 0000000..3222506 --- /dev/null +++ b/site/services/stand1/150_k8s_sthutrval_cluster.yaml @@ -0,0 +1,324 @@ +name: k8s_sthutrval_cluster +service_id: 150 +service_display_name: Kubernetes кластер Штурвал +service_short_name: k8sSthutrvalCluster +service_man: Перед разворачиванием убедиться, что в облаке есть 2 свободных невыделенных IP в пуле +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 108 + operation: create + kind: instance + action: create +- svcOperationId: 281 + operation: create_user + kind: subresource + action: create +- svcOperationId: 109 + operation: delete + kind: instance + action: delete +- svcOperationId: 282 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 110 + operation: modify + kind: instance + action: modify +- svcOperationId: 253 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 174 + operation: resume + kind: instance + action: resume +- svcOperationId: 173 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 750 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + vdcUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + nsxtUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + clusterName: + dataType: string + defaultValue: example-imhltbba + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 751 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '[]' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 752 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + groupName: + dataType: string + defaultValue: workers-0krz2kek + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 753 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 755 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + appVersion: + dataType: string + defaultValue: 2.13.1 + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 869 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 870 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 756 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + appVersion: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 757 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 758 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + groupName: + dataType: string + defaultValue: workers-apak4rks + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 759 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +cfsParamsByOp: + 108: + - 750 + - 751 + - 752 + - 753 + - 755 + 281: + - 869 + 109: [] + 282: + - 870 + 110: + - 756 + - 757 + - 758 + - 759 + 253: [] + 174: [] + 173: [] +stateParams: + startupConfiguration: '{"vdcUid": "", "nsxtUid": "", "clusterName": "example-imhltbba"}' + controlPlaneConfiguration: '{"sizingPolicy": "[]", "sizingDisk": 50, "count": 1}' + workerConfiguration: '{"sizingPolicy": "", "sizingDisk": 50, "count": 2, "groupName": "workers-0krz2kek"}' + accessConfiguration: '{"needExternalAddressAPI": true, "accessIpListAPI": "[]", "needExternalAddressIngress": true, "accessIpListIngress": "[]"}' + clusterConfiguration: '{"appVersion": "2.13.1"}' diff --git a/site/services/stand1/151_k8s_openbao.yaml b/site/services/stand1/151_k8s_openbao.yaml new file mode 100644 index 0000000..7f48128 --- /dev/null +++ b/site/services/stand1/151_k8s_openbao.yaml @@ -0,0 +1,372 @@ +name: k8s_openbao +service_id: 151 +service_display_name: Vault +service_short_name: k8sOpenbao +service_man: '# Инструкция по развертыванию Хранилища секретов через платформу

## 1. Общая информация
Хранилище секретов — сервис централизованного и защищённого хранения чувствительных данных + (секретов, ключей, конфигураций). Предназначен для использования приложениями и сервисами в Kubernetes с управлением доступом на основе ролей.
В качестве приложения используется открытый проект OpenBao + с поддержкой кластерного режима RAFT.

### Доступные операции
**create** — Создание хранилища секретов и инициализация кластера.
**delete** — Удаление хранилища секретов с полной очисткой + всех связанных сущностей.
**modify** — Изменение параметров развернутого хранилища секретов.
**suspend** — Приостановка работы кластера без удаления Persistent Volume.
**resume** — Возобновление + работы кластера с автоматическим unseal всех нод.
**restart** — Поочередный перезапуск нод с последующим подключением в кластер.
**create_kv** — Создание Key/Value хранилища версии V2.
**delete_kv** + — Удаление Key/Value хранилища со всеми содержащимися секретами.
**create_secrets** — Создание секрета внутри Key/Value хранилища.
**delete_secrets** — Удаление секрета из Key/Value хранилища.
**update_secrets** + — Обновление значения секрета.
**recovery_secrets** — Откат секрета к указанной версии.
**create_role** — Создание роли для управления Key/Value хранилищем или секретами.
**update_role** — + Обновление параметров роли.
**delete_role** — Удаление роли доступа.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа + для развертывания
Описание: Кластер Kubernetes, в котором будет развернуто приложение.
Формат значения: имя Kubernetes-кластера.

### Имя домена
Описание: Доменное имя сервиса. При + указании полного FQDN выполняется проверка DNS A-записи или добавляется А-запись в техническую зону.
Формат значения: secrets.domain.com / mysecretdomain.

### Кол-во реплик
Описание: + Количество узлов в кластере.
Формат значения: целое число.

### Квота ядра пода
Описание: Лимит CPU для одного узла. Указывается в milicores (1000 milicores = 1 CPU).
Формат значения: + целое число.

### Квота памяти пода
Описание: Лимит оперативной памяти для одного узла. Указывается в megabytes.
Формат значения: целое число.

### Размер диска под хранение секретов
Описание: + Объем диска для хранения данных. Фактический объем равен значению, умноженному на количество реплик. Указывается в Gigabytes
Формат значения: целое число.

### Версия OpenBao
Описание: + Версия OpenBao для развертывания сервиса.
Формат значения: выбор из предоставленного списка версий.

---

## 3. Рекомендованные характеристики

### Тестовое окружение
Кол-во + реплик: 2.
Квота ядра пода: 200.
Квота памяти пода: 256.
Размер диска под хранение секретов: 1.
Версия OpenBao: актуальная стабильная версия.

### Промышленное окружение
Кол-во + реплик: от 3.
Квота ядра пода: от 1000.
Квота памяти пода: от 1024.
Размер диска под хранение секретов: от 10.
Версия OpenBao: актуальная стабильная версия.

---

## 4. + Выходные параметры
Настройки внутри хранилища (kv/secrets/roles) — конфигурации Key/Value, секретов и ролей, созданные соответствующими операциями.
Настройки самого хранилище (сайзинг, объемы) + — параметры ресурсов и хранилища данных, примененные к сервису.
Статус кластера (running / suspended) — текущее состояние работы кластера.
url для подключения к веб — адрес веб-интерфейса сервиса.

---

## + 5. Дополнительная информация
При удалении хранилища все данные и настройки безвозвратно удаляются.
При использовании доменного имени требуется корректная настройка DNS.
Операции управления + секретами и ролями выполняются только после успешного создания хранилища.
Удаление кластера производится через операцию `suspend`, а удаление становится доступно через 14 дней после остановки кластера
Правило + выше не относится к операции `delete_kv` / `delete_secrets` / `delete_role`' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 210 + operation: create + kind: instance + action: create +- svcOperationId: 212 + operation: create_kv + kind: subresource + action: create +- svcOperationId: 237 + operation: create_policy + kind: subresource + action: create +- svcOperationId: 214 + operation: create_secrets + kind: subresource + action: create +- svcOperationId: 231 + operation: delete + kind: instance + action: delete +- svcOperationId: 213 + operation: delete_kv + kind: subresource + action: delete +- svcOperationId: 239 + operation: delete_policy + kind: subresource + action: delete +- svcOperationId: 233 + operation: delete_secrets + kind: subresource + action: delete +- svcOperationId: 211 + operation: modify + kind: instance + action: modify +- svcOperationId: 236 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 232 + operation: recovery_secrets + kind: subresource + action: recovery +- svcOperationId: 234 + operation: restart + kind: action + action: restart +- svcOperationId: 216 + operation: resume + kind: instance + action: resume +- svcOperationId: 215 + operation: suspend + kind: instance + action: suspend +- svcOperationId: 238 + operation: update_policy + kind: subresource + action: update +- svcOperationId: 230 + operation: update_secrets + kind: subresource + action: update +stateOut: + kvs: {} + policies: {} + secrets: {} +cfsParams: +- svcOperationCfsParamId: 663 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 664 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 665 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '3' + isModifiable: true +- svcOperationCfsParamId: 666 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 667 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '10' + isModifiable: true +- svcOperationCfsParamId: 668 + svcOperationCfsParam: appVersion + dataType: string + isRequired: true + defaultValue: 2.5.2 + isModifiable: true + valueList: + - 2.5.2 +- svcOperationCfsParamId: 669 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: bao-onbcvsgk + isModifiable: false +- svcOperationCfsParamId: 675 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: kvname-9e9wvkt2 + isModifiable: false +- svcOperationCfsParamId: 728 + svcOperationCfsParam: policySettings + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + capabilities: + dataType: json + defaultValue: '["read", "list"]' + isRequired: true + isModifiable: false + path: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 729 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: policy-s0hfjfmn + isModifiable: false +- svcOperationCfsParamId: 677 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 678 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: path/to/mysecret + isModifiable: false +- svcOperationCfsParamId: 679 + svcOperationCfsParam: secretData + dataType: map + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 676 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 732 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 726 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 727 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 670 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 671 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 672 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 673 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 674 + svcOperationCfsParam: appVersion + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - 2.5.2 +- svcOperationCfsParamId: 723 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 724 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 725 + svcOperationCfsParam: secretVersion + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 730 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 731 + svcOperationCfsParam: policySettings + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + capabilities: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + path: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 719 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 720 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 721 + svcOperationCfsParam: needFullUpdateSecret + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 722 + svcOperationCfsParam: secretData + dataType: map + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 210: + - 663 + - 664 + - 665 + - 666 + - 667 + - 668 + - 669 + 212: + - 675 + 237: + - 728 + - 729 + 214: + - 677 + - 678 + - 679 + 231: [] + 213: + - 676 + 239: + - 732 + 233: + - 726 + - 727 + 211: + - 670 + - 671 + - 672 + - 673 + - 674 + 236: [] + 232: + - 723 + - 724 + - 725 + 234: [] + 216: [] + 215: [] + 238: + - 730 + - 731 + 230: + - 719 + - 720 + - 721 + - 722 +stateParams: + resourceRealm: '' + resourceCPU: '500' + resourceInstances: '3' + resourceMemory: '512' + resourceDisk: '10' + appVersion: 2.5.2 + domain: bao-onbcvsgk diff --git a/site/services/stand1/163_llm_ai.yaml b/site/services/stand1/163_llm_ai.yaml new file mode 100644 index 0000000..10e515c --- /dev/null +++ b/site/services/stand1/163_llm_ai.yaml @@ -0,0 +1,277 @@ +name: llm_ai +service_id: 163 +service_display_name: LLM +service_short_name: llmAi +service_man: '## 1. Общая информация

LLMaaS (Large Language Model as a Service) — это сервис для доступа к языковым моделям через OpenAI-совместимое API.
Платформа позволяет создавать организации + (тенанты), команды, выпускать и управлять API-ключами, устанавливать лимиты на использование.

---

## Доступные операции

- **create** — Создание организации в LLMaaS
- + **delete** — Удаление организации

- **create_team** — Создание команды внутри организации
- **modify_team** — Редактирование команды (модели, RPM, TPM)
- **delete_team** — + Удаление команды

- **create_secrets** — Создание API-ключа
- **update_secrets** — Обновление параметров API-ключа
- **delete_secrets** — Удаление API-ключа

---

## + 2. Параметры создания организации

Ниже перечислены параметры, которые необходимо указать при создании организации:

* **Платформа для развертывания**
Выбирается автоматически, изменять + не нужно.

* **Период бюджета**
Срок жизни организации в днях.
Пример: `30`


---

## 3. Параметры создания команды

* **Имя команды**
Уникальное + имя команды в рамках организации.
Пример: `production`

* **Модель**
Название модели, доступной для команды.
Пример: `gpt-oss-120b`

* **Лимит запросов в минуту (RPM)**
Максимальное + количество запросов к API в минуту.
Пример: `60`

* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + исходящих) в минуту.
Пример: `100000`

---

## + 4. Параметры редактирования команды

Для существующей команды можно изменить:

* **Модель**
Новая модель для команды.
Пример: `gpt-oss-20b`

* **Лимит запросов в минуту + (RPM)**
Новое значение RPM.
Пример: `120`

* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`

---

## 5. Параметры создания API-ключа

Ниже + перечислены параметры, которые необходимо указать при создании API-ключа:

* **Имя ключа**
Уникальное имя ключа в рамках организации.
Пример: `prod-key`

* **Команда**
Имя + команды для привязки ключа. Если не указано — ключ привязывается к команде `main`.
Пример: `production`

* **Модель**
Название модели, доступной для данного ключа.
Пример: `gpt-oss-120b`

* + **Лимит запросов в минуту (RPM)**
Максимальное количество запросов к API в минуту.
Пример: `60`

* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + + исходящих) в минуту.
Пример: `100000`

**Важно:** Лимиты API-ключа не могут превышать лимиты команды, к которой он привязан.
При превышении операция будет отклонена с ошибкой.
Перед + созданием ключа убедитесь, что `RPM <= team.RPM` и `TPM <= team.TPM`.


---

## 6. Параметры обновления API-ключа

Для уже существующего ключа можно изменить параметры. Все + параметры являются опциональными:

* **Имя ключа**
Имя обновляемого ключа.
Пример: `prod-key`

* **Модель**
Новое название модели.
Пример: `gpt-oss-20b`

* + **Лимит запросов в минуту (RPM)**
Новое значение RPM.
Пример: `120`

* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`

**Важно:** При обновлении + лимитов API-ключа новые значения не могут превышать лимиты команды.
Если указать значения выше командных, операция завершится ошибкой.
Указывайте `RPM <= team.RPM` и `TPM <= team.TPM`.

Команда + определяется автоматически по стейту услуги — изменить привязку к другой команде через эту операцию нельзя.

---

## 7. Параметры удаления API-ключа

* **Команда**
Имя команды, + к которой привязан ключ.
Пример: `production`

* **Имя ключа**
Имя удаляемого ключа.
Пример: `prod-key`

---

## 8. Параметры удаления команды

* **Имя + команды**
Имя удаляемой команды.
Пример: `production`

---

## 9. Параметры удаления организации

Удаление организации не требует дополнительных параметров — удаляется + вся организация со всеми командами и ключами.

---

## 10. Выходные параметры

После успешного создания организации платформа возвращает:

* **connectionUrl**
URL + для доступа к inference API (OpenAI-совместимый).
Пример: `https://api.aillm.ru`

---


## 12. Пример использования API

После получения API-ключа клиент может обращаться + к LLMaaS напрямую:

**Запрос к chat completions:**

```bash
curl https://api.aillm.ru/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" + \
-d ''{
"model": "gpt-oss-120b",
"messages": [
{"role": "user", "content": "Привет!"}
]
}''
```

**Получение списка доступных моделей:**

```bash
curl + https://api.aillm.ru/v1/models \
-H "Authorization: Bearer sk-..."
```
' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 271 + operation: create + kind: instance + action: create +- svcOperationId: 274 + operation: create_secrets + kind: subresource + action: create +- svcOperationId: 278 + operation: create_team + kind: subresource + action: create +- svcOperationId: 273 + operation: delete + kind: instance + action: delete +- svcOperationId: 275 + operation: delete_secrets + kind: subresource + action: delete +- svcOperationId: 280 + operation: delete_team + kind: subresource + action: delete +- svcOperationId: 279 + operation: modify_team + kind: subresource + action: modify +- svcOperationId: 277 + operation: update_secrets + kind: subresource + action: update +stateOut: + secrets: {} + teams: {} +cfsParams: +- svcOperationCfsParamId: 826 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: llmAi.aillm.ru + isModifiable: false + valueList: + - llmAi.aillm.ru +- svcOperationCfsParamId: 833 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 834 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: false +- svcOperationCfsParamId: 835 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: false +- svcOperationCfsParamId: 857 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 859 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 1083 + svcOperationCfsParam: variablesKeys + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + teamName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + keyName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + models: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + tpmLimit: + dataType: integer > 0 + defaultValue: '100000' + isRequired: true + isModifiable: false + rpmLimit: + dataType: integer > 0 + defaultValue: '60' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 858 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 860 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 861 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: false +- svcOperationCfsParamId: 862 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: false +- svcOperationCfsParamId: 836 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 876 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 868 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 864 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 865 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 873 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: true +- svcOperationCfsParamId: 874 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: true +- svcOperationCfsParamId: 852 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 853 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 854 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: true +- svcOperationCfsParamId: 855 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: true +- svcOperationCfsParamId: 875 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 271: + - 826 + 274: + - 833 + - 834 + - 835 + - 857 + - 859 + - 1083 + 278: + - 858 + - 860 + - 861 + - 862 + 273: [] + 275: + - 836 + - 876 + 280: + - 868 + 279: + - 864 + - 865 + - 873 + - 874 + 277: + - 852 + - 853 + - 854 + - 855 + - 875 +stateParams: + resourceRealm: llmAi.aillm.ru diff --git a/site/services/stand1/19_vc_org.yaml b/site/services/stand1/19_vc_org.yaml new file mode 100644 index 0000000..95fea45 --- /dev/null +++ b/site/services/stand1/19_vc_org.yaml @@ -0,0 +1,133 @@ +name: vc_org +service_id: 19 +service_display_name: Организация в Cloud Director +service_short_name: vcOrg +service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу

## 1. Общая информация

Сервис **Организация в Cloud Director** предназначен для управления изолированными + организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль + уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.

### Доступные операции

**create** + — Создание новой организации с заданными характеристиками и типом доступа.
**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.
**modify** + — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).
**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.
**resume** + — Разморозка организации, восстановление функций управления.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: + платформа, на которой будет создана организация.
Пример значения: `ngcloud.ru`.

### Тип организации
Описание: тип создаваемой организации.
Варианты:
- `iaas` — организация с прямым + доступом к облаку и авторизацией через Keycloak.
- `saas` — организация под управлением Nubes, без прямого доступа к облаку.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.

### Промышленное окружение
- Тип организации: `saas` (упрощённая + модель использования).

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе операций):

### Url организации
Для + быстрого доступа в тенант

### Статус организации
Отражает текущее состояние и параметры.

---

## 5. Дополнительная информация

- Для конфигурации внешних IP внутри + организации необходимо предварительно создать:
-- хотя бы один **Виртуальный датацентр (VDC)** привязанный к этой организации;
-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный + к vdc выше.
- Удаление организации возможно только через 14 дней после перевода в состояние suspend.
- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов + IP, сетей, ВМок и иных объектов.
- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.
- Для iaas-организаций доступ осуществляется + через Keycloak.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 136 + operation: create + kind: instance + action: create +- svcOperationId: 283 + operation: create_user + kind: subresource + action: create +- svcOperationId: 137 + operation: delete + kind: instance + action: delete +- svcOperationId: 284 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 207 + operation: modify + kind: instance + action: modify +- svcOperationId: 249 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 144 + operation: resume + kind: instance + action: resume +- svcOperationId: 143 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 418 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: sandbox.nubes.ru + isModifiable: false + valueList: + - sandbox.nubes.ru +- svcOperationCfsParamId: 556 + svcOperationCfsParam: organizationType + dataType: string + isRequired: true + defaultValue: iaas + isModifiable: false + valueList: + - iaas + - saas +- svcOperationCfsParamId: 871 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 872 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 662 + svcOperationCfsParam: vIPConfigure + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 136: + - 418 + - 556 + 283: + - 871 + 137: [] + 284: + - 872 + 207: + - 662 + 249: [] + 144: [] + 143: [] +stateParams: + resourceRealm: sandbox.nubes.ru + organizationType: iaas diff --git a/site/services/stand1/1_dummy.yaml b/site/services/stand1/1_dummy.yaml new file mode 100644 index 0000000..ea33cc8 --- /dev/null +++ b/site/services/stand1/1_dummy.yaml @@ -0,0 +1,314 @@ +name: dummy +service_id: 1 +service_display_name: Болванка +service_short_name: dummy +service_man: '## Болванка для тестов.

А это просто много букв, чтобы посмотреть, как ведет себя текст при переполнении контейнера.


``` json
{
"iamServiceUrl": "https://auth-api-test.ngcloud.ru/api/v1/user",
"idpResponse": + {
"prefix": {
"charset": "",
"status_text": "Request Time-out",
"text": true,
"errordetail": "",
"filecontent": + "Connection Timeout",
"responseheader": {},
"header": "",
"statuscode": "408 Request Time-out",
"status_code": 408,
"mimetype": + "Unable to determine MIME type of file."
}
}
}
```' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 18 + operation: create + kind: instance + action: create +- svcOperationId: 71 + operation: delete + kind: instance + action: delete +- svcOperationId: 92 + operation: modify + kind: instance + action: modify +- svcOperationId: 257 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 240 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 94 + operation: resume + kind: instance + action: resume +- svcOperationId: 93 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 198 + svcOperationCfsParam: durationMs + dataType: integer >= 0 + isRequired: true + defaultValue: '0' + isModifiable: true +- svcOperationCfsParamId: 199 + svcOperationCfsParam: failAtStart + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 200 + svcOperationCfsParam: failInProgress + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 201 + svcOperationCfsParam: whereFail + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 242 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: dummy + isModifiable: false + valueList: + - dummy +- svcOperationCfsParamId: 286 + svcOperationCfsParam: bodymessage + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 321 + svcOperationCfsParam: mapExample + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + subparam2: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + subparam1: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + secret: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 322 + svcOperationCfsParam: jsonExample + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 396 + svcOperationCfsParam: nestedRefExample + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 647 + svcOperationCfsParam: mapFixed + dataType: map-fixed + isRequired: false + defaultValue: '' + isModifiable: false + dataDescriptor: + param1: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + param2: + dataType: string + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '["1"' + - '"2"' + - '"3"]' + param3: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + bol1: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + minStr1: + dataType: string + defaultValue: abracadabra + isRequired: true + isModifiable: false + valueList: + - abracadabra +- svcOperationCfsParamId: 654 + svcOperationCfsParam: arrayMapFixedExample + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: false + dataDescriptor: + bol1: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + minStr1: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - abracadabra + param1: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + param2: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '["1"' + - '"2"' + - '"3"]' + param3: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 863 + svcOperationCfsParam: arr + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - test + - '2' + - val1 +- svcOperationCfsParamId: 287 + svcOperationCfsParam: durationMs + dataType: integer >= 0 + isRequired: true + defaultValue: '0' + isModifiable: true +- svcOperationCfsParamId: 288 + svcOperationCfsParam: failAtStart + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 289 + svcOperationCfsParam: failInProgress + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 290 + svcOperationCfsParam: whereFail + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 291 + svcOperationCfsParam: bodymessage + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 373 + svcOperationCfsParam: mapExample + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true + dataDescriptor: + secret: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 374 + svcOperationCfsParam: jsonExample + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 18: + - 198 + - 199 + - 200 + - 201 + - 242 + - 286 + - 321 + - 322 + - 396 + - 647 + - 654 + - 863 + 71: [] + 92: + - 287 + - 288 + - 289 + - 290 + - 291 + - 373 + - 374 + 257: [] + 240: [] + 94: [] + 93: [] +stateParams: + durationMs: '0' + failAtStart: 'false' + failInProgress: 'false' + whereFail: '1' + resourceRealm: dummy + bodymessage: '' + mapExample: '{"subparam2": "", "subparam1": "", "secret": ""}' + jsonExample: '' + nestedRefExample: '' + mapFixed: '{"param1": 1, "param2": "1", "param3": 1, "bol1": false, "minStr1": "abracadabra"}' + arrayMapFixedExample: '{"bol1": false, "minStr1": "", "param1": 0, "param2": "", "param3": 1}' + arr: '' diff --git a/site/services/stand1/21_vc_vdc.yaml b/site/services/stand1/21_vc_vdc.yaml new file mode 100644 index 0000000..662531f --- /dev/null +++ b/site/services/stand1/21_vc_vdc.yaml @@ -0,0 +1,166 @@ +name: vc_vdc +service_id: 21 +service_display_name: Виртуальный датацентр (vDC) +service_short_name: vc_vdc +service_man: '# Инструкция по развертыванию Виртуальный датацентр (vDC) через платформу

## 1. Общая информация

**Виртуальный датацентр (vDC)** — это логическая изолированная среда в VMware + Cloud Director, предназначенная для размещения и управления виртуальными машинами, сетевой инфраструктурой и ресурсами хранения. Сервис обеспечивает выделение вычислительных ресурсов под конкретную организацию + и предоставляет гибкие параметры масштабирования, контроля потребления и разделения ресурсов.

### Доступные операции

**create** — Создание виртуального датацентра (vDC) с заданными параметрами + CPU, RAM, Storage и сетевой конфигурацией.
**delete** — Удаление vDC. Требуется предварительный перевод vDC в состояние *suspend*. Полное удаление возможно через 14 дней.
**modify** — Внесение + изменений в параметры ресурсов (CPU/RAM/Storage), выделенных для vDC.
**suspend** — Заморозка vDC. Новые ресурсы или изменения внутри vDC становятся невозможными, работа ВМ не останавливается.
**resume** + — Разморозка vDC. Восстановление возможности управления сущностями внутри vDC.

---

## 2. Параметры развертывания

Ниже перечислены входные параметры операции **create**.

### + UUID Организации
Уникальный идентификатор организации в Cloud Director. Перед созданием vDC требуется предварительное создание услугу `Организация в Cloud Director`.

### Provider VDC в Cloud + Director
Свойство ресурсной платформы, определяющее, какой пул физических ресурсов будет использоваться.

### Network Pool в Cloud Director
Определяет возможности сетевой конфигурации, + включая создание Edge Gateway и выход во внешние сети.

### Гарантированная доля ЯДЕР
Гарантированный процент вычислительных ресурсов (CPU), закрепленный за vDC. Значение устанавливается разово + при создании.

### Гарантированная доля ОЗУ
Гарантированный процент оперативной памяти, закрепленный за vDC. Также задаётся один раз при создании.

### Сколько аллоцировать на VDC + ЯДЕР
Количество виртуальных ядер, выделяемых в рамках vDC.

### Сколько аллоцировать на VDC ОЗУ
Количество оперативной памяти в GB, выделяемой для vDC.

### Конфигурация Storage
Набор + дисковых политик и их объёмов, выделяемых для vDC. Указывается имя политики и требуемый размер (GB).

---

## 3. Рекомендованные характеристики

### Тестовое окружение

- + Количество ядер CPU: 10–20
- Аллоцируемая RAM: 16–64 GB
- Гарантированная доля CPU: 20%
- Гарантированная доля RAM: 20%
- Storage:
- Политика `SATA`
- Объём: 100–300 GB

### + Промышленное окружение

- Количество ядер CPU: 16–128
- Аллоцируемая RAM: 64–512 GB
- Гарантированная доля CPU: 50%
- Гарантированная доля RAM: 50%
- Storage:
- Политики уровня + `SSD`
- Объём: 1–10 TB, выбор несколько политик под разные нагрузки

---

## 4. Выходные параметры

Выходные параметры формируются операцией **create** (и используются другими + операциями):

### Имя vDC
Уникальный идентификатор созданного виртуального датацентра. Используется в дальнейших операциях (modify, suspend, delete).

### Параметры выделенных ресурсов
Подтверждение + итогового объёма CPU/RAM/Storage, выделенных vDC. Используются для учёта и контроля потребления.

---

## 5. Дополнительная информация

- Перед созданием vDC необходимо обеспечить + наличие корректно созданной организации и доступных пула ресурсов ресурсной платформы.
- Гарантированная доля CPU и RAM задаётся **однократно при создании vDC**. После развертывания изменить эти значения + невозможно; для изменения необходимо пересоздать vDC.
- Удаление vDC возможно только через **14 дней после перевода в состояние *suspend***. Удаление очищает все связанные сущности (ВМ, сети, каталоги), + поэтому необходимо убедиться, что данные перенесены.
- Платформа Cloud Director использует концепцию изолированных организационных ресурсов, поэтому корректная настройка Provider VDC и Network Pool + является обязательной при создании vDC.
- При изменении параметров (modify) изменяются только показатели CPU, RAM и Storage. Сетевые параметры и гарантированные доли остаются неизменными.
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 9 + operation: create + kind: instance + action: create +- svcOperationId: 24 + operation: delete + kind: instance + action: delete +- svcOperationId: 112 + operation: modify + kind: instance + action: modify +- svcOperationId: 250 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 172 + operation: resume + kind: instance + action: resume +- svcOperationId: 171 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 30 + svcOperationCfsParam: organizationUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 335 + svcOperationCfsParam: providerVdc + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 361 + svcOperationCfsParam: storageConfig + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + size: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 397 + svcOperationCfsParam: cpuGuaranteed + dataType: integer > 0 + isRequired: true + defaultValue: '20' + isModifiable: false + valueList: + - '20' + - '50' + - '80' +- svcOperationCfsParamId: 557 + svcOperationCfsParam: cpuAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '80' + isModifiable: true +- svcOperationCfsParamId: 558 + svcOperationCfsParam: memAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 746 + svcOperationCfsParam: networkProvider + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 560 + svcOperationCfsParam: cpuAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 561 + svcOperationCfsParam: memAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 562 + svcOperationCfsParam: storageConfig + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + size: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 9: + - 30 + - 335 + - 361 + - 397 + - 557 + - 558 + - 746 + 24: [] + 112: + - 560 + - 561 + - 562 + 250: [] + 172: [] + 171: [] +stateParams: + organizationUid: '' + providerVdc: '' + storageConfig: '{"name": "", "size": 2000}' + cpuGuaranteed: '20' + cpuAllocated: '80' + memAllocated: '200' + networkProvider: '' diff --git a/site/services/stand1/22_vc_nsxt.yaml b/site/services/stand1/22_vc_nsxt.yaml new file mode 100644 index 0000000..9988cbc --- /dev/null +++ b/site/services/stand1/22_vc_nsxt.yaml @@ -0,0 +1,139 @@ +name: vc_nsxt +service_id: 22 +service_display_name: Сетевой шлюз периметра (Edge) +service_short_name: vc_nsxt +service_man: '# Инструкция по развертыванию Сетевой шлюз периметра (Edge) через платформу

## 1. Общая информация

Сервис **Сетевой шлюз периметра (Edge)** предназначен для создания периметрового + сетевого шлюза в рамках одного виртуального датацентра (vDC) или группы виртуальных датацентров (groupvDC).
При создании автоматически разворачивается routed-сеть с адресным пространством `10.10.102.0/24`.
Сервис + обеспечивает сетевую изоляцию, маршрутизацию, а также может включать функциональность балансировщика нагрузки AVI (ALB) для последующей интеграции, включая поддержку кластеров Штурвал.

### Доступные + операции

**create** — Создание нового Edge с привязкой к vDC или groupvDC и развёртыванием routed-сети.
**delete** — Удаление ранее созданного Edge. Недоступно при наличии зависимых услуг + (vApp, VM, Кластер Штурвал).
**modify** — Изменение параметров и сетевых настроек существующего Edge.

---

## 2. Параметры развертывания

Ниже приведены параметры операции + **create**.

### Тип родительской услуги
Определяет контекст размещения Edge.
Допустимые значения: `vdc`, `groupvdc`.
Использование:
- При выборе `vdc` обязателен параметр + **UUID VDC**.
- При выборе `groupvdc` обязателен параметр **UUID Группы VDC**.

### UUID VDC
Идентификатор виртуального датацентра.
Необходимо предварительно создать vDC через услугу + «Виртуальный датацентр (vDC)».
Указывается только при выборе родительского типа `vdc`.

### UUID Группы VDC
Идентификатор группы виртуальных датацентров.
Создаётся через услугу + «Группа виртуальных датацентров (groupvDC)».
Используется при выборе родительского типа `groupvdc`.

### Включить ALB
Флаг активации AVI Load Balancer в Cloud Director.
Пример + значения: `true`/`false`.
Нужен для развёртывания кластера Штурвал и возможности создания Virtual Services.

### Наименование segroup
Имя сервиса групп (segroup) на уровне ресурсной + платформы.
Обязательно при включённом ALB.
Определяет группу, в которой будут выделяться пулы AVI для Virtual Services.

### virtualServicesCount
Количество резервируемых виртуальных + сервисов (Virtual Services) на AVI.
Типичное значение: 1–10 в зависимости от нагрузки.

---

## 3. Рекомендованные характеристики

### Тестовое окружение (Test)

- + Тип родительской услуги: `vdc`
- virtualServicesCount: 1–2
- ALB: выключен по умолчанию (включать только при необходимости тестирования Штурвала)
- segroup: задаётся только при включённом + ALB
- VDC гарантии CPU/RAM: минимальные (поскольку изменить их после создания нельзя)

### Промышленное окружение (Production)

- Тип родительской услуги: `groupvdc` при работе с + распределёнными нагрузками или `vdc` для локализованных проектов
- virtualServicesCount: 3–10, исходя из предполагаемого количества публикаций
- ALB: включён, если требуется высокая доступность + сервисов или используется кластер Штурвал
- segroup: рекомендуется использовать выделенную группу под проект
- VDC гарантии CPU/RAM: повышенные, с учётом того, что изменить их после создания + невозможно без пересоздания vDC

---

## 4. Выходные параметры

### Имя Edge
Уникальное название созданного сетевого шлюза, используется для ссылок и дальнейших операций.

### + Имя routed-сети
Автоматически созданная routed-сеть с подсетью `10.10.102.0/24`, используется для подключения ресурсов.

### Параметры Edge
Набор параметров, указанных пользователем при + создании: тип услуги, ALB, segroup, virtualServicesCount и др.
Используются в операциях modify и для анализа состояния сервиса.

---

## 5. Дополнительная информация

- В + рамках сервиса **один раз при создании задаётся гарантированная доля CPU/RAM vDC**. Изменить её невозможно — требуется пересоздание vDC.
- Удаление Edge недоступно при наличии зависимых ресурсов + (vApp, VM, кластер Штурвал).
- При использовании ALB необходимо корректно указывать segroup, чтобы обеспечить корректное выделение пулов AVI.
- При выборе режима `groupvdc` следует учитывать + распределение нагрузки между несколькими vDC.
- SNAT для всех ресурсов внутри Edge можно активировать через операцию modify (параметры выделения VIP и ipSpace).

' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 10 + operation: create + kind: instance + action: create +- svcOperationId: 25 + operation: delete + kind: instance + action: delete +- svcOperationId: 111 + operation: modify + kind: instance + action: modify +- svcOperationId: 252 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 8 + svcOperationCfsParam: vdcUid + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 340 + svcOperationCfsParam: needEnableAVI + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 341 + svcOperationCfsParam: virtualServicesCount + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 621 + svcOperationCfsParam: vdcType + dataType: string + isRequired: true + defaultValue: vdc + isModifiable: false + valueList: + - vdc + - vdcGroup +- svcOperationCfsParamId: 622 + svcOperationCfsParam: vdcGroupUid + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 825 + svcOperationCfsParam: qosProfile + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 368 + svcOperationCfsParam: needEnableAVI + dataType: boolean + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 369 + svcOperationCfsParam: virtualServicesCount + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 372 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 856 + svcOperationCfsParam: qosProfile + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 10: + - 8 + - 340 + - 341 + - 621 + - 622 + - 825 + 25: [] + 111: + - 368 + - 369 + - 372 + - 856 + 252: [] +stateParams: + vdcUid: '' + needEnableAVI: 'false' + virtualServicesCount: '1' + vdcType: vdc + vdcGroupUid: '' + qosProfile: '' diff --git a/site/services/stand1/25_vcexternalip.yaml b/site/services/stand1/25_vcexternalip.yaml new file mode 100644 index 0000000..bbc2bde --- /dev/null +++ b/site/services/stand1/25_vcexternalip.yaml @@ -0,0 +1,186 @@ +name: vcexternalip +service_id: 25 +service_display_name: Публичные IP адреса +service_short_name: vcexternalip +service_man: '**Обычно эта услуга разворачивается автоматически при развёртывании более сложных услуг**
Вручную создавать можно, однако услуга требует много параметров, о которых можно просто не знать

Резервировать + публичные IP адреса можно только после создания NGcloud Organization, NGcloud Виртуальный датацентр, NGcloud Каталог, Сетевой шлюз периметра.
Вы можете назначить IP адрес для существующего экземпляра + сервиса.' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 56 + operation: create + kind: instance + action: create +- svcOperationId: 57 + operation: delete + kind: instance + action: delete +- svcOperationId: 197 + operation: modify + kind: instance + action: modify +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 140 + svcOperationCfsParam: serviceUid + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 141 + svcOperationCfsParam: dnatCreate + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true +- svcOperationCfsParamId: 142 + svcOperationCfsParam: internalPortAccess + dataType: string + isRequired: true + defaultValue: '5432' + isModifiable: true +- svcOperationCfsParamId: 143 + svcOperationCfsParam: snatCreate + dataType: boolean + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 144 + svcOperationCfsParam: internalAddrAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 324 + svcOperationCfsParam: fromServiceNamespace + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 325 + svcOperationCfsParam: fromServiceCloudEdgeName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 326 + svcOperationCfsParam: fromServiceCloudVdcName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 327 + svcOperationCfsParam: fromServiceCloudOrgName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 328 + svcOperationCfsParam: fromServiceCloudVmwareUrl + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 336 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 488 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: sandbox.nubes.ru + isModifiable: false + valueList: + - sandbox.nubes.ru +- svcOperationCfsParamId: 624 + svcOperationCfsParam: fromServiceCloudEdgeScope + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 626 + svcOperationCfsParam: fromServiceVdcGroupName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 627 + svcOperationCfsParam: serviceUid + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 628 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 629 + svcOperationCfsParam: dnatCreate + dataType: boolean + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 630 + svcOperationCfsParam: snatCreate + dataType: boolean + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 631 + svcOperationCfsParam: internalPortAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 632 + svcOperationCfsParam: internalAddrAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 56: + - 140 + - 141 + - 142 + - 143 + - 144 + - 324 + - 325 + - 326 + - 327 + - 328 + - 336 + - 488 + - 624 + - 626 + 57: [] + 197: + - 627 + - 628 + - 629 + - 630 + - 631 + - 632 +stateParams: + serviceUid: '' + dnatCreate: 'true' + internalPortAccess: '5432' + snatCreate: '' + internalAddrAccess: '' + fromServiceNamespace: '' + fromServiceCloudEdgeName: '' + fromServiceCloudVdcName: '' + fromServiceCloudOrgName: '' + fromServiceCloudVmwareUrl: '' + ipSpaceName: '' + resourceRealm: sandbox.nubes.ru + fromServiceCloudEdgeScope: '' + fromServiceVdcGroupName: '' diff --git a/site/services/stand1/26_vapp.yaml b/site/services/stand1/26_vapp.yaml new file mode 100644 index 0000000..2eb0a76 --- /dev/null +++ b/site/services/stand1/26_vapp.yaml @@ -0,0 +1,75 @@ +name: vapp +service_id: 26 +service_display_name: Виртуальный каталог ВМ (vApp) +service_short_name: vapp +service_man: '# Инструкция по развертыванию Виртуальный каталог ВМ (vApp) через платформу

## 1. Общая информация

**Виртуальный каталог ВМ (vApp)** — это логическая каталог, объединённая + в единый управляемый объект. Сервис предназначен для совместного развертывания, управления жизненным циклом и сетевого взаимодействия набора связанных ВМ. Основные функции включают:
- централизованное + управление включением, выключением и приостановкой группы ВМ;
- унифицированный сетевой доступ через привязанный Edge-шлюз;

### Доступные операции

**create** — Создание нового vApp + с привязкой к заданным услугам VDC и Edge
**delete** — Удаление существующего vApp. Требуется предварительный перевод vApp в состояние *suspend*. Полное удаление возможно через 14 дней.
**suspend** + — Остановка vApp (выключение всех ВМ внутри каталога)
**resume** — Запуск vApp (включение всех ВМ внутри каталога)

---

## 2. Параметры развертывания

Параметры берутся из + операции **create**.

### UUID Услуги VDC
Уникальный идентификатор услуги «Виртуальный датацентр (vDC)».
Используется для определения вычислительной инфраструктуры, в которой будет развернут + vApp.

### UUID Услуги Edge
Уникальный идентификатор услуги «Сетевой шлюз периметра (Edge)».
Обеспечивает маршрутизацию и сетевое подключение. Может быть привязан к группе VDC, поэтому + выбирается отдельно.

### Имя vApp
Строгое имя, соответствующее маске формирования DNS-имени.
Используется как часть в DNS-имени при создании виртуальных машин.

---

## + 3. Рекомендованные характеристики
Так как является промежуточным этапом для создания ВМ, все характеристики описываются в услуге `Виртуальная машина`

---

## 4. Выходные параметры

### + Параметры vApp
Заданные при создании vApp

---

## 5. Дополнительная информация

- Привязка к VDC и Edge осуществляется раздельно, поскольку один Edge может обслуживать несколько + VDC (через услугу `Группа виртуальных датацентров (groupvDC)`). Это гарантирует возможность развернуть ВМ в единой сети, но в разных виртуальных датацентрах.
- Перед удалением vApp необходимо вручную + перевести его в состояние **suspend**. Удаление возможно только спустя 14 дней после этого шага.
- Операция delete удаляет весь vApp полностью, включая все виртуальные машины, связанные с ним.
- + Рекомендуется заранее планировать сетевые связи и назначения DNS-имён для обеспечения корректной работы сервисов, развернутых внутри vApp.
- При проектировании инфраструктуры следует учитывать зависимости + между Edge-шлюзом, VDC и размещаемыми ВМ, чтобы избежать ограничений при масштабировании и интеграции.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 69 + operation: create + kind: instance + action: create +- svcOperationId: 70 + operation: delete + kind: instance + action: delete +- svcOperationId: 285 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 209 + operation: resume + kind: instance + action: resume +- svcOperationId: 208 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 190 + svcOperationCfsParam: nsxtUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 191 + svcOperationCfsParam: vappName + dataType: string + isRequired: true + defaultValue: fgpdul5a + isModifiable: false +- svcOperationCfsParamId: 623 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +cfsParamsByOp: + 69: + - 190 + - 191 + - 623 + 70: [] + 285: [] + 209: [] + 208: [] +stateParams: + nsxtUid: '' + vappName: fgpdul5a + vdcUid: '' diff --git a/site/services/stand1/27_vc_vm_v2.yaml b/site/services/stand1/27_vc_vm_v2.yaml new file mode 100644 index 0000000..7ae978e --- /dev/null +++ b/site/services/stand1/27_vc_vm_v2.yaml @@ -0,0 +1,52 @@ +name: vc_vm_v2 +service_id: 27 +service_display_name: VM в Cloud Director (vc_vmV2) +service_short_name: vc_vm_v2 +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 100 + operation: create + kind: instance + action: create +- svcOperationId: 101 + operation: delete + kind: instance + action: delete +- svcOperationId: 104 + operation: modify + kind: instance + action: modify +- svcOperationId: 102 + operation: resume + kind: instance + action: resume +- svcOperationId: 103 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 301 + svcOperationCfsParam: serverListJson + dataType: json + isRequired: true + defaultValue: '[{}]' + isModifiable: true +- svcOperationCfsParamId: 302 + svcOperationCfsParam: serverListJson + dataType: json + isRequired: true + defaultValue: '[{}]' + isModifiable: true +cfsParamsByOp: + 100: + - 301 + 101: [] + 104: + - 302 + 102: [] + 103: [] +stateParams: + serverListJson: '[{}]' diff --git a/site/services/stand1/28_vc_vm_v3.yaml b/site/services/stand1/28_vc_vm_v3.yaml new file mode 100644 index 0000000..a790017 --- /dev/null +++ b/site/services/stand1/28_vc_vm_v3.yaml @@ -0,0 +1,298 @@ +name: vc_vm_v3 +service_id: 28 +service_display_name: Виртуальная машина +service_short_name: vc_vm_v3 +service_man: '# Документация по разворачиванию ВМ в Личном кабинете

Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).

## Доступные + операции
- **create** — Создание виртуальной машины
- **delete** — Удаление виртуальной машины
- **resume** — Запуск виртуальной машины
- **suspend** — Остановка виртуальной машины

---

## + Параметры для развёртывания ВМ

### Обязательные параметры:

**vappUid**
UUID vApp, в которой будет создаваться виртуальная машина.
*Пример: WZ00400*

**vmName**
Уникальное + имя виртуальной машины.
*Пример: test-vm*

**vmCpu**
Количество ядер процессора. Должно быть больше 0.
*Пример: 1*

**vmRam**
Объем оперативной памяти в гигабайтах. Должно + быть больше 0.
*Пример: 1*


**accessPortList**
Белый список портов для доступа к виртуальной машине извне в формате JSON.
*Пример: ["22","10050]*

**imageVm**
Образ + операционной системы для развёртывания.
*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*

**userLogin**
Логин пользователя для SSH-доступа.
*По умолчанию: + myuser*

**userPublicKey**
Публичный SSH-ключ пользователя в формате OpenSSH.
*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*

**needAddZabbixTemplate**
Значение истина\ложь, + определяющее будет ли добавлен хост в zabbix.
*Пример: true*

### Опциональные параметры:

**accessIpList**
Белый список IP-адресов для доступа к виртуальной машине в формате JSON. + Если оставить пустым, вм будет доступена со всех адресов.
*Пример: ["192.168.1.1", "10.0.0.5"]*

**vmDisk**
Размер дополнительного диска в гигабайтах. Должно быть больше 0.
*Пример: + 50*

**ipSpaceName**
Внешний IP-адрес. Если не требуется — укажите значение "no-needed" (В нем не будет работать сбор метрик zabbix).

**cloudInit**
YAML-скрипт для кастомизации + системы через cloud-init.

---

## Доступные образы операционных систем

### RockyLinux_9-16G-cloudinit
Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для + серверных задач.
- Размер системного диска: 16 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

### Ubuntu_22-20G
Образ на основе Ubuntu Server 22.04 LTS для + облачного окружения.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

### Debian_13-20G
Образ на основе Debian 13 (Trixie) для + стабильной серверной работы.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

---

## Пример использования Cloud-init

```yaml
users:
- + name: myuser
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...

packages:
- + nginx

runcmd:
- systemctl enable --now nginx
- systemctl restart nginx
```

---

## Результат выполнения

После успешного развёртывания в Личном кабинете + появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.

---

## Важные примечания

### + Особенности работы:
- Для отключения внешнего IP укажите значение "no-needed" в параметре ipSpaceName
- Параметр cloudInit является опциональным

### Ограничения:
- Не рекомендуется + использовать продолжительные инструкции в cloud-init (таймаут 5 минут)
- Не поддерживается запись файлов через cloud-init
- Не реализовано создание резервных копий ВМ

---

## + Диагностика проблем с cloud-init

### Основной лог-файл:
```bash
/var/log/cloud-init.log
```

### Пакет не устанавливается:
- Проверьте доступность пакета в репозитории
- + Убедитесь в правильности написания имени пакета
- Попробуйте установить вручную: `apt install <имя_пакета>` (Debian/Ubuntu) или `dnf install <имя_пакета>` (Rocky Linux)

### Команда не выполняется:
- + Проверьте наличие требуемой утилиты в системе
- Убедитесь в правильности синтаксиса команды
- Попробуйте выполнить команду вручную для диагностики' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 132 + operation: create + kind: instance + action: create +- svcOperationId: 133 + operation: delete + kind: instance + action: delete +- svcOperationId: 159 + operation: modify + kind: instance + action: modify +- svcOperationId: 286 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 164 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 135 + operation: resume + kind: instance + action: resume +- svcOperationId: 134 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 407 + svcOperationCfsParam: vappUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 408 + svcOperationCfsParam: vmName + dataType: string + isRequired: true + defaultValue: web01 + isModifiable: false +- svcOperationCfsParamId: 409 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 410 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 411 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 412 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 413 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 414 + svcOperationCfsParam: imageVm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 415 + svcOperationCfsParam: cloudInit + dataType: yaml + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 416 + svcOperationCfsParam: userLogin + dataType: string + isRequired: true + defaultValue: myuser + isModifiable: false +- svcOperationCfsParamId: 417 + svcOperationCfsParam: userPublicKey + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 448 + svcOperationCfsParam: accessPortList + dataType: string + isRequired: true + defaultValue: '["22"]' + isModifiable: true +- svcOperationCfsParamId: 493 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 494 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 495 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 496 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - no-needed + - internet-antiddos-v1 + - internet-no-antiddos-v1 + - internet-ipv4-v1 +- svcOperationCfsParamId: 497 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 498 + svcOperationCfsParam: accessPortList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 509 + svcOperationCfsParam: vmName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 510 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 511 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 512 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 513 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - no-needed + - internet-antiddos-v1 + - internet-no-antiddos-v1 + - internet-ipv4-v1 +- svcOperationCfsParamId: 514 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 515 + svcOperationCfsParam: imageVm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - RockyLinux_9-16G-cloudinit + - Ubuntu_22-20G + - Debian_13-20G +- svcOperationCfsParamId: 516 + svcOperationCfsParam: userLogin + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 517 + svcOperationCfsParam: userPublicKey + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 518 + svcOperationCfsParam: cloudInit + dataType: yaml + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 520 + svcOperationCfsParam: accessPortList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 132: + - 407 + - 408 + - 409 + - 410 + - 411 + - 412 + - 413 + - 414 + - 415 + - 416 + - 417 + - 448 + 133: [] + 159: + - 493 + - 494 + - 495 + - 496 + - 497 + - 498 + 286: [] + 164: + - 509 + - 510 + - 511 + - 512 + - 513 + - 514 + - 515 + - 516 + - 517 + - 518 + - 520 + 135: [] + 134: [] +stateParams: + vappUid: '' + vmName: web01 + vmCpu: '1' + vmRam: '1' + vmDisk: '' + ipSpaceName: '' + accessIpList: '' + imageVm: '' + cloudInit: '' + userLogin: myuser + userPublicKey: '' + accessPortList: '["22"]' diff --git a/site/services/stand1/29_vc_vdc_group.yaml b/site/services/stand1/29_vc_vdc_group.yaml new file mode 100644 index 0000000..a2bb7c8 --- /dev/null +++ b/site/services/stand1/29_vc_vdc_group.yaml @@ -0,0 +1,71 @@ +name: vc_vdc_group +service_id: 29 +service_display_name: Группа датацентров +service_short_name: vcVdcGroup +service_man: '# Инструкция по развертыванию Группа виртуальных датацентров (groupvDC) через платформу

## 1. Общая информация

Сервис **Группа виртуальных датацентров (groupvDC)** предназначен + для логического объединения нескольких виртуальных датацентров (vDC) в единую группу. Это позволяет растягивать SDN между разными vDC и централизованно управлять сетевой связностью. Управление инфраструктурой + осуществляется через Cloud Director.
Сервис применяется в случаях, когда требуется обеспечить единое сетевое пространство для распределенных виртуальных датацентров.

### Доступные операции

**create** + — Создание новой группы виртуальных датацентров.
**delete** — Удаление существующей группы vDC.
**add_vdc** — Добавление дополнительного виртуального датацентра в группу.
**remove_vdc** — + Удаление ранее добавленного виртуального датацентра из группы.

---

## 2. Параметры развертывания

Параметры операции **create**:

### UUID VDC
Идентификатор виртуального + датацентра, который будет являться первичным в группе.
Описание: требуется предварительно создать виртуальный датацентр с помощью услуги `Виртуальный датацентр (vDC)`.

---

## 3. + Рекомендованные характеристики

### Тестовое окружение
- Для тестового окружения создавать группу VDC нет необходимости, так как это создаёт дополнительный слой абстракции в Cloud Director

### + Промышленное окружение
- Для промышленного окружения, если в тенанте существуют разные VDC, создание groupvdc позволит снизить сетевые издержки (за счёт общей сети)

---

## 4. Выходные + параметры

### Параметры groupvdc
Набор параметров, указанных пользователем при создании

---

## 5. Дополнительная информация
- Группа vDC используется для растягивания + SDN между несколькими виртуальными датацентрами. Управление всеми сетевыми элементами внутри группы выполняется Cloud Director.
- Удалить первичный vDC (тот, что был указан при операции **create**) + невозможно. Для его удаления необходимо удалить всю группу и создать новую.
- Перед добавлением любого vDC в группу он должен быть предварительно развернут через сервис `Виртуальный датацентр (vDC)`.
- + Сети создаются не в этой услуге, а в услуге `Сетевой шлюз периметра (Edge)`. В ней необходимо будет выбрать тип `groupvdc`' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 192 + operation: add_vdc + kind: subresource + action: add +- svcOperationId: 191 + operation: create + kind: instance + action: create +- svcOperationId: 195 + operation: delete + kind: instance + action: delete +- svcOperationId: 251 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 193 + operation: remove_vdc + kind: subresource + action: remove +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 619 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 618 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 620 + svcOperationCfsParam: vdcName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 192: + - 619 + 191: + - 618 + 195: [] + 251: [] + 193: + - 620 +stateParams: + vdcUid: '' diff --git a/site/services/stand1/2_template.yaml b/site/services/stand1/2_template.yaml new file mode 100644 index 0000000..1045c98 --- /dev/null +++ b/site/services/stand1/2_template.yaml @@ -0,0 +1,199 @@ +name: template +service_id: 2 +service_display_name: Темплейт k8s +service_short_name: template +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 74 + operation: create + kind: instance + action: create +- svcOperationId: 75 + operation: delete + kind: instance + action: delete +- svcOperationId: 76 + operation: modify + kind: instance + action: modify +- svcOperationId: 298 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 98 + operation: resume + kind: instance + action: resume +- svcOperationId: 97 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 813 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '128' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 814 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 815 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + type: + dataType: string + defaultValue: ingress + isRequired: true + isModifiable: false + valueList: + - ingress + - service + domain: + dataType: string + defaultValue: abracadabra-l9gtqv1m + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 816 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + disk: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 817 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + type: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - ingress + - service + domain: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 74: + - 813 + - 814 + - 815 + 75: [] + 76: + - 816 + - 817 + 298: [] + 98: [] + 97: [] +stateParams: + clusterConfiguration: '{"memory": 128, "replicas": 1, "cpu": 100, "disk": 5}' + startupConfiguration: '{"resourceRealm": ""}' + accessConfiguration: '{"type": "ingress", "domain": "abracadabra-l9gtqv1m", "masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' diff --git a/site/services/stand1/50_nextcloud.yaml b/site/services/stand1/50_nextcloud.yaml new file mode 100644 index 0000000..a6f58ee --- /dev/null +++ b/site/services/stand1/50_nextcloud.yaml @@ -0,0 +1,424 @@ +name: nextcloud +service_id: 50 +service_display_name: Nextcloud +service_short_name: nextcloud +service_man: 'Ресурсная платформа: k8s. Автоматизация: helm chart' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 16 + operation: create + kind: instance + action: create +- svcOperationId: 404 + operation: create_backup + kind: subresource + action: create +- svcOperationId: 17 + operation: delete + kind: instance + action: delete +- svcOperationId: 67 + operation: modify + kind: instance + action: modify +- svcOperationId: 390 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 406 + operation: recovery + kind: action + action: recovery +- svcOperationId: 66 + operation: restart + kind: action + action: restart +- svcOperationId: 129 + operation: resume + kind: instance + action: resume +- svcOperationId: 128 + operation: suspend + kind: instance + action: suspend +stateOut: + backups: {} +cfsParams: +- svcOperationCfsParamId: 1055 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + redisEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + psqlUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + redisUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + psqlEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' +- svcOperationCfsParamId: 1056 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1057 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: nextcloud-vbxjicr2 + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1058 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: 33.0.4 + isRequired: true + isModifiable: false + valueList: + - 33.0.4 + documentServer: + dataType: string + defaultValue: collabora + isRequired: true + isModifiable: false + valueList: + - collabora + logLevel: + dataType: string + defaultValue: INFO + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE +- svcOperationCfsParamId: 1077 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + veleroUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1059 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' +- svcOperationCfsParamId: 1060 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 33.0.4 + documentServer: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - collabora + logLevel: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE +- svcOperationCfsParamId: 1078 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + veleroUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + recoveryPoint: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + psqlEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + redisEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + psqlUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + redisUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1079 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: 1,2 + isRequired: true + isModifiable: false + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' +- svcOperationCfsParamId: 1080 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + domain: + dataType: string + defaultValue: nextcloud-bcdguda1 + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1081 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + logLevel: + dataType: string + defaultValue: NONE + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE + version: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + documentServer: + dataType: string + defaultValue: collabora + isRequired: true + isModifiable: false + valueList: + - collabora +cfsParamsByOp: + 16: + - 1055 + - 1056 + - 1057 + - 1058 + 404: + - 1077 + 17: [] + 67: + - 1059 + - 1060 + 390: [] + 406: + - 1078 + - 1079 + - 1080 + - 1081 + 66: [] + 129: [] + 128: [] +stateParams: + startupConfiguration: '{"redisEnabled": true, "psqlUid": "", "redisUid": "", "resourceRealm": "", "psqlEnabled": true}' + clusterConfiguration: '{"cpu": 1000, "memory": 1024, "replicas": 1, "disk": 10}' + accessConfiguration: '{"domain": "nextcloud-vbxjicr2"}' + appConfiguration: '{"version": "33.0.4", "documentServer": "collabora", "logLevel": "INFO"}' diff --git a/site/services/stand1/81_superset.yaml b/site/services/stand1/81_superset.yaml new file mode 100644 index 0000000..3b025e3 --- /dev/null +++ b/site/services/stand1/81_superset.yaml @@ -0,0 +1,82 @@ +name: superset +service_id: 81 +service_display_name: Apache Superset +service_short_name: superset +service_man: 'Apache Superset как сервис.
Ресурсная платформа: k8s.
Автоматизация: k8s operator.
Авторизация: 2FA keycloak (для доменного логина @mgmt.nubes.ru)' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 12 + operation: create + kind: instance + action: create +- svcOperationId: 13 + operation: delete + kind: instance + action: delete +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 14 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: superset-1 + isModifiable: false +- svcOperationCfsParamId: 20 + svcOperationCfsParam: emails + dataType: string + isRequired: true + defaultValue: testuser1 + isModifiable: false +- svcOperationCfsParamId: 96 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: false +- svcOperationCfsParamId: 97 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: false +- svcOperationCfsParamId: 98 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +- svcOperationCfsParamId: 109 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 227 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +cfsParamsByOp: + 12: + - 14 + - 20 + - 96 + - 97 + - 98 + - 109 + - 227 + 13: [] +stateParams: + domain: superset-1 + emails: testuser1 + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceRealm: '' + resourceInstances: '1' diff --git a/site/services/stand1/82_harbor.yaml b/site/services/stand1/82_harbor.yaml new file mode 100644 index 0000000..4ecbde7 --- /dev/null +++ b/site/services/stand1/82_harbor.yaml @@ -0,0 +1,108 @@ +name: harbor +service_id: 82 +service_display_name: Container Registry +service_short_name: harbor +service_man: 'Расширенный реестр для управления Docker-образами с enterprise-функциями безопасности, репликации и контроля доступа.
Container Registry позволяет хранить, развертывать и управлять Docker-образами + контейнеров в инфраструктуре NGcloud.
Сервис можно использовать в процессе разработки контейнеров. Например, вы можете настроить систему автоматизации на работу с реестром в Container Registry в рамках + процесса непрерывной интеграции. Контейнеры идеально подходят для запуска небольших, независимых и легко изменяемых сервисов.
Чтобы начать работу, создайте реестр и загрузите в него Docker-образ
Авторизация: + keycloak' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 14 + operation: create + kind: instance + action: create +- svcOperationId: 15 + operation: delete + kind: instance + action: delete +- svcOperationId: 270 + operation: modify + kind: instance + action: modify +- svcOperationId: 405 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 16 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: harbor-1 + isModifiable: false +- svcOperationCfsParamId: 110 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 228 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '1000' + isModifiable: true +- svcOperationCfsParamId: 229 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '1024' + isModifiable: true +- svcOperationCfsParamId: 230 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 231 + svcOperationCfsParam: s3Uid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 822 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 823 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 824 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 14: + - 16 + - 110 + - 228 + - 229 + - 230 + - 231 + 15: [] + 270: + - 822 + - 823 + - 824 + 405: [] +stateParams: + domain: harbor-1 + resourceRealm: '' + resourceCPU: '1000' + resourceMemory: '1024' + resourceInstances: '1' + s3Uid: '' diff --git a/site/services/stand1/86_k8s_velero.yaml b/site/services/stand1/86_k8s_velero.yaml new file mode 100644 index 0000000..589298c --- /dev/null +++ b/site/services/stand1/86_k8s_velero.yaml @@ -0,0 +1,175 @@ +name: k8s_velero +service_id: 86 +service_display_name: Velero +service_short_name: k8sVelero +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 332 + operation: create + kind: instance + action: create +- svcOperationId: 331 + operation: delete + kind: instance + action: delete +- svcOperationId: 334 + operation: modify + kind: instance + action: modify +- svcOperationId: 336 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 335 + operation: resume + kind: instance + action: resume +- svcOperationId: 333 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 962 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 963 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 964 + svcOperationCfsParam: nodeAgentConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1076 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + s3BucketUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1082 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 965 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 966 + svcOperationCfsParam: nodeAgentConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 332: + - 962 + - 963 + - 964 + - 1076 + 331: + - 1082 + 334: + - 965 + - 966 + 336: [] + 335: [] + 333: [] +stateParams: + clusterConfiguration: '{"cpu": 1000, "memory": 2048, "replicas": 1}' + startupConfiguration: '{"resourceRealm": ""}' + nodeAgentConfiguration: '{"cpu": 2000, "memory": 2048}' + backupConfiguration: '{"s3BucketUid": ""}' diff --git a/site/services/stand1/89_flask.yaml b/site/services/stand1/89_flask.yaml new file mode 100644 index 0000000..d7dbe59 --- /dev/null +++ b/site/services/stand1/89_flask.yaml @@ -0,0 +1,234 @@ +name: flask +service_id: 89 +service_display_name: Web-сервер с фреймворком Flask +service_short_name: flask +service_man: '# Инструкция по развертыванию Web-сервер с фреймворком Flask через платформу

## 1. Общая информация

Сервис **Web-сервер с фреймворком Flask** предназначен для развертывания + веб-приложений на базе Flask.

### Доступные операции

create — включить сервис, развернуть веб-приложение с указанными параметрами.
delete — удалить сервис, только после suspend.
modify + — изменить настройки сервиса и переразвернуть.
suspend — выключить веб-приложение, остановить обслуживание.
resume — включить веб-приложение после suspend.

---

## 2. Параметры + развертывания

Параметры входных данных операции **create**:

### Имя домена
Описание: доменное имя для доступа к веб-приложению. Если указан FQDN, происходит проверка DNS на валидность + А-записи. А-запись должна указывать на балансировщик ресурсной платформы. Если указано имя в рамках одного октета, оно будет добавлено в публичную DNS-зону.
Пример значения: строка, допустимые FQDN + или имя в одном октете. Пример: example.com или myapp.

### Платформа для развертывания
Описание: кластер Kubernetes, в котором будет развернуто приложение.
Пример значения: идентификатор + кластера Kubernetes.

### Квота ядра пода
Описание: количество CPU, выделяемое на под, в Milicores.
Пример значения: целое число, например 500 для 0.5 ядра.

### Квота памяти пода
Описание: + количество памяти, выделяемое на под, в Megabytes.
Пример значения: целое число, например 512 для 512 MB.

### Кол-во реплик пода
Описание: количество инстансов пода для масштабирования.
Пример + значения: целое число, шт, например 2.

### URL Проекта (gitpath)
Описание: полный HTTPS путь до проекта в Git-репозитории.
Пример значения: URL в формате https://github.com/myuser/myproject.git. + Доступ к репозиторию должен быть публичным.

### URL HealthCheck
Описание: путь для проверки здоровья приложения внутри пода.
Пример значения: строка, путь, например /api/v1/health.

### + Переменные окружения пода
Описание: структура данных, которая будет передана как переменные окружения в под.
Пример значения: ключ-значение, например {"ENV": "production"}.

---

## + 3. Рекомендованные характеристики

### Тестовое окружение
- Квота ядра пода: 300m (0.3 ядра)
- Квота памяти пода: 256 MB
- Кол-во реплик пода: 1

### Промышленное окружение
- + Квота ядра пода: от 1000m (1 ядро) в зависимости от нагрузки
- Квота памяти пода: от 1024 MB (1 GB) с учетом потребностей приложения
- Кол-во реплик пода: от 2 для обеспечения отказоустойчивости

---

## + 4. Выходные параметры
Операция create не возвращает явных выходных параметров. Успешное выполнение операции приводит к развертыванию сервиса, доступного по указанному домену.

---

## + 5. Дополнительная информация
- В корне проекта должен находиться файл requirements.txt со списком зависимостей Python.
- Исходный код веб-приложения должен располагаться в директории site.
- + Запуск веб-сервера осуществляется командой python app.py.
- Используется версия Python: python:3.12-slim.
- Git-репозиторий должен быть публично доступен для платформы.
- Операция delete возможна + только после suspend.
- Операция modify приводит к переразвертыванию с новыми параметрами.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 376 + operation: create + kind: instance + action: create +- svcOperationId: 379 + operation: delete + kind: instance + action: delete +- svcOperationId: 375 + operation: modify + kind: instance + action: modify +- svcOperationId: 381 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 380 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 378 + operation: resume + kind: instance + action: resume +- svcOperationId: 377 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1037 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1038 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1039 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: flask-4brtjmwm + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1040 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '3.12' + isRequired: true + isModifiable: false + valueList: + - '3.12' + gitPath: + dataType: string + defaultValue: https://github.com/Foxyhhd/Baldurs-Gate-test.git + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1041 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1042 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1043 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '3.12' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1044 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1045 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 376: + - 1037 + - 1038 + - 1039 + - 1040 + - 1041 + 379: [] + 375: + - 1042 + - 1043 + - 1044 + 381: [] + 380: + - 1045 + 378: [] + 377: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "flask-4brtjmwm"}' + appConfiguration: '{"healthPath": "", "version": "3.12", "gitPath": "https://github.com/Foxyhhd/Baldurs-Gate-test.git"}' + jsonEnv: '{}' diff --git a/site/services/stand1/90_postgres.yaml b/site/services/stand1/90_postgres.yaml new file mode 100644 index 0000000..c85f935 --- /dev/null +++ b/site/services/stand1/90_postgres.yaml @@ -0,0 +1,855 @@ +name: postgres +service_id: 90 +service_display_name: PostgreSQL +service_short_name: postgres +service_man: '# Инструкция по развертыванию PostgreSQL через платформу

---
## 1. Общая информация

PostgreSQL — это надёжная объектно-реляционная СУБД с открытым исходным кодом, поддерживающая + расширенный набор функций, транзакции и хранение сложных типов данных. Развёртывание полностью автоматизировано платформой на базе Zalando Postgres Operator с использованием Kubernetes.

## Доступные + операции

- **create** — Создание кластера
- **delete** — Удаление кластера
- **modify** — Модификация кластера
- **suspend** — Остановка кластера
- **resume** — + Запуск кластера
- **restart** — Перезапуск кластера
- **recovery** — Восстановление из резервной копии

- **create_user** — Создание пользователя
- **delete_user** — Удаление + пользователя

- **create_database** — Создание базы данных
- **delete_database** — Удаление базы данных


---
## 2. Параметры развертывания кластера

Ниже перечислены + параметры, которые необходимо указать при создании ресурса PostgreSQL:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в которой будет развернут кластер). Пример: + `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество инстансов (реплик) в кластере PostgreSQL. Пример: `2` (master + slave).

* **Квота (megabyte) памяти пода:**
Квота + памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска для базы + данных:**
Размер диска для хранения данных в гигабайтах. Пример: `20`

* **Выделяет внешний IP для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для доступа + к master. Пример: `true` или `false`

* **Имя ipSpace для публикации внешнего IP master:**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`

* + **Выделяет внешний IP для доступа к slave:**
Флаг для выделения внешнего IP для slave (реплики чтения). Работает, если slave присутствует в кластере.

* **Имя ipSpace для публикации внешнего + IP slave:**
Если включен параметр для slave, то поле необходимо заполнить.

* **UUID экземпляра услуги S3:**
UUID экземпляра S3 для хранения резервных копий.

* **Версия PostgreSQL:**
Версия + PostgreSQL для развертывания. Пример: `16`

* **Расписание бэкапов (ext_BACKUP_SCHEDULE):**
Необязательный. Cron-выражение для времени запуска бэкапов. По умолчанию: `0 0 * * *` (ежедневно + в полночь).

* **Количество сохраняемых бэкапов (ext_BACKUP_NUM_TO_RETAIN):**
Необязательный. Количество сохраняемых бэкапов. По умолчанию: `7`

* **PgPooler (master / slave):**
Флаги + включения PgBouncer для подключений на запись и чтение. При включении создаётся отдельный под.

* **Разрешить подключение без SSL (allowNoSSL):**
По умолчанию подключение с sslmode=require. + При `true` разрешается подключение без SSL.

* **Автоскейлинг PV (autoScale):**
Включает автоскейлинг тома. Требует настройки autoScalePercentage, autoScaleTechWindow, autoScaleQuotaGb.

* + **Дополнительные параметры PostgreSQL (jsonParameters):**
JSON с переменными конфигурации PostgreSQL. Документация: https://www.postgresql.org/docs/current/runtime-config.html

---
## + 3. Выходные параметры

После успешного развертывания ресурса PostgreSQL платформа возвращает ряд параметров.

#### externalConnect

Внешние эндпоинты для подключения к кластеру:
- + **master** — для операций записи (host: `write.${namespace}`, port: 5432)
- **slave** — для операций чтения (host: `read.${namespace}`, port: 5432)

Пример ответа платформы:

```json
{
"slave": + {
"ip": "",
"fqdn": "",
"uuid": "",
"isExternal": false
},
"master": {
"ip": "",
"fqdn": "write..",
"uuid": + "",
"isExternal": false
}
}
```

Поля: `ip` — внешний IP; `fqdn` — полное имя хоста; `uuid` — идентификатор; `isExternal` — признак внешнего доступа.

#### + internalConnect

Внутренние эндпоинты (FQDN) для подключения из других сервисов внутри той же сети Kubernetes.

Пример ответа платформы:

```json
{
"slave": "",
"master": + {
"slave": "",
"master": {
"slave": "",
"master": "postgresqlk8s-master..svc.cluster.local"
}
}
}
```

Для подключения используйте + значение `master.master.master` (host для записи) или соответствующее значение slave (host для чтения).

Для подключения используется порт **5432**.

---
## 4. Управление пользователями

### + create_user — Создание пользователя

* **Имя пользователя (username):**
Имя создаваемого пользователя. Используется для подключения к базе и настройки прав.
Пример: `myapp_user`

* + **Роль (role):**
Тип роли пользователя. Допустимые значения:
- `app_user` — базовые права для DML-операций (SELECT, INSERT, UPDATE, DELETE)
- `ddl_user` — расширенные права: createdb, + createrole (управление базами и ролями)

Защищённые имена, которые нельзя использовать: `admin`, `postgres`, `standby`.

### delete_user — Удаление пользователя

* **Имя пользователя + (username):**
Имя удаляемого пользователя. Пример: `myapp_user`

Пользователя нельзя удалить, если он является владельцем базы данных. Сначала удалите или передайте владение базами данных + другому пользователю.

---
## 5. Управление базами данных

### create_database — Создание базы данных

* **Имя базы данных (dbName):**
Название создаваемой базы данных. + Пример: `myapp_db`

* **Владелец базы данных (dbOwner):**
Имя пользователя-владельца базы. Должен существовать в кластере (создан через create_user). Пример: `myapp_user`

### delete_database + — Удаление базы данных

* **Имя базы данных (dbName):**
Название удаляемой базы данных. Пример: `myapp_db`
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 19 + operation: create + kind: instance + action: create +- svcOperationId: 264 + operation: create_backup + kind: subresource + action: create +- svcOperationId: 245 + operation: create_database + kind: subresource + action: create +- svcOperationId: 241 + operation: create_user + kind: subresource + action: create +- svcOperationId: 20 + operation: delete + kind: instance + action: delete +- svcOperationId: 246 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 244 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 48 + operation: modify + kind: instance + action: modify +- svcOperationId: 263 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 47 + operation: recovery + kind: action + action: recovery +- svcOperationId: 54 + operation: restart + kind: action + action: restart +- svcOperationId: 114 + operation: resume + kind: instance + action: resume +- svcOperationId: 115 + operation: suspend + kind: instance + action: suspend +stateOut: + backups: {} + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 788 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 789 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 790 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 791 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '17' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerMaster: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 792 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 793 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 794 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 1094 + svcOperationCfsParam: mtlsConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '{}' + isModifiable: true + dataDescriptor: + type: + dataType: string + defaultValue: 'off' + isRequired: true + isModifiable: false + valueList: + - 'off' + - manual + - auto + durationCA: + dataType: integer > 0 + defaultValue: '175200' + isRequired: true + isModifiable: false + durationServer: + dataType: integer > 0 + defaultValue: '87600' + isRequired: true + isModifiable: false + certCA: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + certServer: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 741 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 742 + svcOperationCfsParam: dbOwner + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 733 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 740 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - app_user + - ddl_user +- svcOperationCfsParamId: 1096 + svcOperationCfsParam: mtlsAccess + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 457 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 743 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 739 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 795 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 796 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 797 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: false,true + isRequired: true + isModifiable: false + poolerMaster: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 798 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 799 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 800 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 1095 + svcOperationCfsParam: mtlsConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + certCA: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + certServer: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + refreshCert: + dataType: boolean + defaultValue: 'false' + isRequired: false + isModifiable: false + valueList: + - 'false' + - 'true' + type: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'off' + - manual + - auto + durationCA: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + durationServer: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 801 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + recoveryPoint: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 802 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 803 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 804 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '17' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerMaster: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 805 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 806 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 807 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +cfsParamsByOp: + 19: + - 788 + - 789 + - 790 + - 791 + - 792 + - 793 + - 794 + - 1094 + 264: [] + 245: + - 741 + - 742 + 241: + - 733 + - 740 + - 1096 + 20: + - 457 + 246: + - 743 + 244: + - 739 + 48: + - 795 + - 796 + - 797 + - 798 + - 799 + - 800 + - 1095 + 263: [] + 47: + - 801 + - 802 + - 803 + - 804 + - 805 + - 806 + - 807 + 54: [] + 114: [] + 115: [] +stateParams: + clusterConfiguration: '{"replicas": 1, "disk": 10, "cpu": 500, "memory": 512}' + startupConfiguration: '{"resourceRealm": ""}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' + postgresConfiguration: '{"version": "17", "sslRequired": true, "poolerMaster": false, "poolerSlave": false}' + postgresConf: '{"paramName": "", "paramValue": ""}' + backupConfiguration: '{"s3Uid": "", "retain": 7, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"enabled": false, "schedule": 0, "quota": 100, "percent": 10}' + mtlsConfiguration: '{"type": "off", "durationCA": 175200, "durationServer": 87600, "certCA": "", "certServer": ""}' diff --git a/site/services/stand1/91_redis.yaml b/site/services/stand1/91_redis.yaml new file mode 100644 index 0000000..799a3cf --- /dev/null +++ b/site/services/stand1/91_redis.yaml @@ -0,0 +1,184 @@ +name: redis +service_id: 91 +service_display_name: Redis +service_short_name: redis +service_man: 'Redis кластер. Под кеши.
Ресурсная платформа: k8s.
Автоматизация: k8s operator
port 6379' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 21 + operation: create + kind: instance + action: create +- svcOperationId: 22 + operation: delete + kind: instance + action: delete +- svcOperationId: 394 + operation: modify + kind: instance + action: modify +- svcOperationId: 391 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 393 + operation: resume + kind: instance + action: resume +- svcOperationId: 392 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1061 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1062 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1063 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1064 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1065 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 21: + - 1061 + - 1062 + - 1063 + 22: [] + 394: + - 1064 + - 1065 + 391: [] + 393: [] + 392: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"memory": 512, "replicas": 1, "disk": 10, "cpu": 500}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' diff --git a/site/services/stand1/92_mongodb.yaml b/site/services/stand1/92_mongodb.yaml new file mode 100644 index 0000000..fd05d67 --- /dev/null +++ b/site/services/stand1/92_mongodb.yaml @@ -0,0 +1,265 @@ +name: mongodb +service_id: 92 +service_display_name: MongoDB +service_short_name: mongodb +service_man: '# Инструкция по развертыванию MongoDB через платформу

## 1. Общая информация

MongoDB — документоориентированная распределённая база данных, обеспечивающая высокую доступность, + горизонтальное масштабирование и гибкую модель хранения.

### Доступные операции с кластером

* **create** — создание базы
* **delete** — удаление базы данных
* **suspend** — + остановка базы данных
* **resume** — запуск базы данных
* **modify** — изменение базы данных

### Доступные операции с пользователями

* **create_user** — создание пользователя
* + **modify_user** — модификация пользователя
* **delete_user** — удаление пользователя

---

## 2. Параметры развертывания базы данных

Эти параметры необходимо указать при создании + базы данных.

### Платформа для развертывания

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

### Количество узлов

Количество реплик в + кластере MongoDB.
Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> + **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### + Квота CPU пода (mCPU)

CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных в гигабайтах.
Пример: + `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: + `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: + `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры модификации базы данных

Все параметры, которые вы указываете при модификации, являются необязательными — система автоматически + подставит ранее сохранённые значения, и при необходимости вы можете изменить их на нужные.

### Количество узлов

Количество реплик в кластере MongoDB.
Оптимально выбирать нечётное + значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> **Примечание:** уменьшение количества узлов + после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### Квота CPU пода (mCPU)

CPU-квота + для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных указывается в гигабайтах. Его можно увеличить при + необходимости, однако уменьшить уже выделенный размер невозможно.
Пример: `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для + доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, + с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры создания пользователя

### + Имя пользователя

Указывается имя пользователя (любой регистр).
Пример: `readApp`

### Имя базы данных

Название базы, в которой будет создан пользователь.
Если база отсутствует, + она будет создана автоматически.
Пример: `Apps_9392`

### Имя роли

* **read** — доступ только на чтение
* **readWrite** — чтение и изменение данных
* **dbOwner** — полный + контроль над базой данных

---

## 4. Параметры модификации пользователя

### Имя пользователя

Необходимо выбрать существующего пользователя.
Если список пуст, требуется + предварительно создать пользователя.

### Имя базы данных

База данных, к которой относится пользователь.
Если база отсутствует, она будет создана автоматически.
Пример: `Apps_9392`

### + Имя роли

* **read**
* **readWrite**
* **dbOwner**

---

## 5. Параметры удаления пользователя

### Имя пользователя

Выберите пользователя из списка для + удаления.

---

## 6. Выходные параметры

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

### internalConnect

Внутренний эндпоинт + для подключения к кластеру из сервисов, работающих в той же сети.
Используется для внутренних интеграций и системных сервисов.

### externalConnect

Внешний FQDN для подключения к + кластеру извне.
Порт подключения — **27017**.

---

## 7. Пример подключения

Перед подключением необходимо установить **mongosh**.

Команда подключения к базе данных:

```
mongosh + "mongodb://:@:27017/"
```

Где:

* `` — имя пользователя
* `` — пароль
* `` — internalConnect или + externalConnect
* `` — имя базы данных

## 8. Дополнительная информация

Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину + и паролю.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 37 + operation: create + kind: instance + action: create +- svcOperationId: 198 + operation: create_user + kind: subresource + action: create +- svcOperationId: 190 + operation: delete + kind: instance + action: delete +- svcOperationId: 199 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 201 + operation: modify + kind: instance + action: modify +- svcOperationId: 200 + operation: modify_user + kind: subresource + action: modify +- svcOperationId: 409 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 196 + operation: resume + kind: instance + action: resume +- svcOperationId: 194 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 1089 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1090 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1091 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 635 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 636 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 643 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - dbOwner + - read + - readWrite +- svcOperationCfsParamId: 644 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1092 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1093 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 640 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 641 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 642 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - dbOwner + - read + - readWrite +cfsParamsByOp: + 37: + - 1089 + - 1090 + - 1091 + 198: + - 635 + - 636 + - 643 + 190: [] + 199: + - 644 + 201: + - 1092 + - 1093 + 200: + - 640 + - 641 + - 642 + 409: [] + 196: [] + 194: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"replicas": 1, "disk": 5, "cpu": 1000, "memory": 1024}' + accessConfiguration: '{"masterAccessList": "[]", "masterIpSpace": ""}' diff --git a/site/services/stand1/93_rabbitmq.yaml b/site/services/stand1/93_rabbitmq.yaml new file mode 100644 index 0000000..915b166 --- /dev/null +++ b/site/services/stand1/93_rabbitmq.yaml @@ -0,0 +1,194 @@ +name: rabbitmq +service_id: 93 +service_display_name: RabbitMQ +service_short_name: rabbitmq +service_man: '# Инструкция по развертыванию RabbitMQ через платформу

---
## 1. Общая информация
RabbitMQ — это брокер сообщений с открытым исходным кодом, который обеспечивает надёжную + доставку сообщений между приложениями.
Позволяет надёжно передавать сообщения между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. + Развёртывание полностью автоматизировано платформой.

## Доступные операции
- **create** — Создание кластера
- **modify** — Изменение параметров кластера
- **delete** — Удаление + кластера
- **suspend** — Остановка кластера
- **resume** — Запуск кластера


---
## 2. Параметры развертывания кластера
Ниже перечислены параметры, которые необходимо + указать при создании ресурса RabbitMQ:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.

* + **Количество узлов в сети:**
Количество реплик в кластере RabbitMQ. При значении больше 1 создаётся кластер с репликацией для обеспечения высокой доступности.
Пример: `1` (single node) или + `3` (кластер с репликацией)

* **Квота (megabyte) памяти пода:**
Квота памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах + (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска для базы данных:**
Размер диска для хранения данных RabbitMQ в гигабайтах. Пример: `50`

* **Выделяет внешний IP + для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-узлу. При включении создаётся Service типа LoadBalancer и настраивается VIP на порту 5672.
Пример: + `true` или `false`

* **Имя ipSpace для публикации внешнего IP master:**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`


---
## + 3. Модификация кластера
Операция **modify** позволяет изменить параметры существующего кластера RabbitMQ.

**Изменяемые параметры:**
* **Квота (megabyte) памяти пода** — можно увеличить + или уменьшить
* **Квота (millicore) ядра пода** — можно увеличить или уменьшить
* **Размер (gigabyte) диска для базы данных** — можно только увеличить (уменьшение не поддерживается)
* **Количество + узлов в сети** — можно только увеличить (уменьшение не поддерживается)
* **Выделяет внешний IP для доступа к master** — можно включить или выключить
* **Имя ipSpace для публикации внешнего IP + master** — можно изменить при включенном внешнем IP

**Ограничения:**
* Уменьшение размера диска не поддерживается
* Уменьшение количества реплик не поддерживается

---
## + 4. Выходные параметры
После успешного развертывания ресурса RabbitMQ платформа возвращает ряд параметров в разделе "Поля состояния (сгенерированные значения)":

**clusterDomain**
Домен + кластера Kubernetes, в котором развернут RabbitMQ.
Пример: `cluster.local`

**inernalConnect**
Внутренние эндпоинты для подключения к кластеру RabbitMQ из других сервисов, развернутых + внутри той же сети.
Содержит:
* **master** — FQDN для подключения к кластеру. Пример: `rabbitmqk8s.{namespace}.svc.{clusterDomain}`

**externalConnect**
Внешние эндпоинты для подключения + к кластеру RabbitMQ извне.
Содержит объекты с полями:
* **admin** — доступ к веб-интерфейсу управления:
* `fqdn` — полное доменное имя для веб-интерфейса. Пример: `admin.{namespace}.{domain}`
* + `ip` — IP-адрес
* **master** — доступ к AMQP протоколу (если включен внешний IP):
* `fqdn` — полное доменное имя для AMQP. Пример: `write.{namespace}.{domain}`
* `ip` — IP-адрес

**monitoring**
Информация + о дашбордах мониторинга:
* **allDashboards** — URL для доступа ко всем дашбордам Grafana

Для подключения используются следующие порты:

* **5672** — AMQP протокол (внутренний и внешний + доступ, если включен внешний IP)
* **15672** — веб-интерфейс управления (доступен через Ingress по HTTPS)

**Учётные данные**
Данные для подключения к RabbitMQ доступны в разделе "Учётные + данные":
* **adminUser** — имя пользователя администратора
* **adminPass** — пароль администратора


---
## 5. Примеры подключения через консоль (rabbitmqadmin)

### Работа + с очередями через rabbitmqadmin

Для работы с RabbitMQ через консоль используется утилита `rabbitmqadmin`. Установите её или используйте образ с предустановленной утилитой.

Задайте переменные + окружения с учётными данными:

```bash
export RABBITMQ_USERNAME=
export RABBITMQ_PASSWORD=
export RABBIT_HOST=
```

Где:
* `` + и `` — учётные данные из раздела "Учётные данные"
* `` — адрес для подключения:
* Для внешнего подключения: `externalConnect.admin.fqdn` или `externalConnect.master.fqdn`

**Создание + очереди:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
declare queue name=healthcheck durable=false
```

**Листинг + очередей:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
list queues
```

**Отправка сообщения:**

```bash
rabbitmqadmin + \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
publish exchange=amq.default routing_key=healthcheck payload="ping-$(date +%s)"
```

**Чтение + сообщения:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
get queue=healthcheck ackmode=ack_requeue_false
```

---
## + 6. Дополнительная информация
Для подключения к кластеру RabbitMQ используйте полученные эндпоинты из раздела "Поля состояния (сгенерированные значения)" и учётные данные из раздела "Учётные данные".

Веб-интерфейс + управления доступен по адресу, указанному в параметре `externalConnect.admin.fqdn` через HTTPS.

Для внутреннего подключения используйте адрес из `inernalConnect.master` на порту 5672.

---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 38 + operation: create + kind: instance + action: create +- svcOperationId: 39 + operation: delete + kind: instance + action: delete +- svcOperationId: 106 + operation: modify + kind: instance + action: modify +- svcOperationId: 410 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 117 + operation: resume + kind: instance + action: resume +- svcOperationId: 116 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1097 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1098 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1099 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1100 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1101 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 38: + - 1097 + - 1098 + - 1099 + 39: [] + 106: + - 1100 + - 1101 + 410: [] + 117: [] + 116: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 1024, "replicas": 1, "disk": 5}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' diff --git a/site/services/stand1/94_lucee.yaml b/site/services/stand1/94_lucee.yaml new file mode 100644 index 0000000..db6768a --- /dev/null +++ b/site/services/stand1/94_lucee.yaml @@ -0,0 +1,224 @@ +name: lucee +service_id: 94 +service_display_name: Lucee +service_short_name: lucee +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 49 + operation: create + kind: instance + action: create +- svcOperationId: 50 + operation: delete + kind: instance + action: delete +- svcOperationId: 55 + operation: modify + kind: instance + action: modify +- svcOperationId: 373 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 53 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 163 + operation: restart + kind: action + action: restart +- svcOperationId: 95 + operation: resume + kind: instance + action: resume +- svcOperationId: 96 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1019 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1020 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1021 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: lucee-pzpvwkuk + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1022 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '6.0' + isRequired: true + isModifiable: false + valueList: + - '5.4' + - '6.0' + gitPath: + dataType: string + defaultValue: https://github.com/xahys/testlucee + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1023 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1024 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1025 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '6.0' + - '5.4' +- svcOperationCfsParamId: 1026 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1027 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 49: + - 1019 + - 1020 + - 1021 + - 1022 + - 1023 + 50: [] + 55: + - 1024 + - 1025 + - 1026 + 373: [] + 53: + - 1027 + 163: [] + 95: [] + 96: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "lucee-pzpvwkuk"}' + appConfiguration: '{"healthPath": "", "version": "6.0", "gitPath": "https://github.com/xahys/testlucee"}' + jsonEnv: '{}' diff --git a/site/services/stand1/95_nodejs.yaml b/site/services/stand1/95_nodejs.yaml new file mode 100644 index 0000000..a351726 --- /dev/null +++ b/site/services/stand1/95_nodejs.yaml @@ -0,0 +1,225 @@ +name: nodejs +service_id: 95 +service_display_name: NodeJS +service_short_name: nodejs +service_man: Развертывает контейнер в k8s кластере с node, который можно использовать для запуска своих приложений.
Приложение должно быть доступно по ссылки в git репозитории, которая является входным + параметром. +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 58 + operation: create + kind: instance + action: create +- svcOperationId: 61 + operation: delete + kind: instance + action: delete +- svcOperationId: 59 + operation: modify + kind: instance + action: modify +- svcOperationId: 374 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 60 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 121 + operation: resume + kind: instance + action: resume +- svcOperationId: 120 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1028 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1029 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1030 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: node-ctkmt4iw + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1031 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '23' + isRequired: true + isModifiable: false + valueList: + - '18' + - '20' + - '22' + - '23' + gitPath: + dataType: string + defaultValue: https://github.com/xahys/testnode.git + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '1' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1032 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1033 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1034 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '18' + - '20' + - '22' + - '23' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1035 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1036 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 58: + - 1028 + - 1029 + - 1030 + - 1031 + - 1032 + 61: [] + 59: + - 1033 + - 1034 + - 1035 + 374: [] + 60: + - 1036 + 121: [] + 120: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "node-ctkmt4iw"}' + appConfiguration: '{"version": "23", "gitPath": "https://github.com/xahys/testnode.git", "healthPath": "1"}' + jsonEnv: '{}' diff --git a/site/services/stand1/96_pgadmin.yaml b/site/services/stand1/96_pgadmin.yaml new file mode 100644 index 0000000..7c09014 --- /dev/null +++ b/site/services/stand1/96_pgadmin.yaml @@ -0,0 +1,133 @@ +name: pgadmin +service_id: 96 +service_display_name: pgAdmin +service_short_name: pgadmin +service_man: Инструмент с графическим интерфейсом для управления базами данных PostgreSQL +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 62 + operation: create + kind: instance + action: create +- svcOperationId: 63 + operation: delete + kind: instance + action: delete +- svcOperationId: 64 + operation: modify + kind: instance + action: modify +- svcOperationId: 65 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 123 + operation: resume + kind: instance + action: resume +- svcOperationId: 122 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 164 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: pgadmin-1 + isModifiable: false +- svcOperationCfsParamId: 165 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 166 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 167 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 169 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 170 + svcOperationCfsParam: login + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 171 + svcOperationCfsParam: password + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 172 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 173 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 174 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 277 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 62: + - 164 + - 165 + - 166 + - 167 + - 169 + - 170 + - 171 + 63: [] + 64: + - 172 + - 173 + - 174 + 65: + - 277 + 123: [] + 122: [] +stateParams: + domain: pgadmin-1 + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceRealm: '' + login: '' + password: '' diff --git a/site/services/stand1/98_http.yaml b/site/services/stand1/98_http.yaml new file mode 100644 index 0000000..fa6348b --- /dev/null +++ b/site/services/stand1/98_http.yaml @@ -0,0 +1,145 @@ +name: http +service_id: 98 +service_display_name: Простой HTTP контейнер +service_short_name: http +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 77 + operation: create + kind: instance + action: create +- svcOperationId: 78 + operation: delete + kind: instance + action: delete +- svcOperationId: 81 + operation: modify + kind: instance + action: modify +- svcOperationId: 403 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 79 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 130 + operation: resume + kind: instance + action: resume +- svcOperationId: 131 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 212 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: http-1 + isModifiable: false +- svcOperationCfsParamId: 213 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '100' + isModifiable: true +- svcOperationCfsParamId: 214 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 215 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 216 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 217 + svcOperationCfsParam: registryPath + dataType: string + isRequired: true + defaultValue: nexus-sa.tst.nubes.ru/docker-nubes/jolt + isModifiable: false +- svcOperationCfsParamId: 241 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 782 + svcOperationCfsParam: ingressAnnotations + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: false +- svcOperationCfsParamId: 218 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 219 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 220 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 272 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 77: + - 212 + - 213 + - 214 + - 215 + - 216 + - 217 + - 241 + - 782 + 78: [] + 81: + - 218 + - 219 + - 220 + 403: [] + 79: + - 272 + 130: [] + 131: [] +stateParams: + domain: http-1 + resourceCPU: '100' + resourceMemory: '200' + resourceInstances: '1' + resourceRealm: '' + registryPath: nexus-sa.tst.nubes.ru/docker-nubes/jolt + jsonEnv: '' + ingressAnnotations: '{}' diff --git a/site/services/stand1/99_gitea.yaml b/site/services/stand1/99_gitea.yaml new file mode 100644 index 0000000..82f15db --- /dev/null +++ b/site/services/stand1/99_gitea.yaml @@ -0,0 +1,164 @@ +name: gitea +service_id: 99 +service_display_name: Gitea +service_short_name: gitea +service_man: '# Инструкция по развертыванию Gitea через платформу

---
## 1. Общая информация
Gitea — это лёгкий, быстрый и самодостаточный сервис хостинга Git-репозиториев с веб-интерфейсом.
Позволяет + создавать и управлять репозиториями, организациями, командами, а также настраивать CI/CD через интеграции.
Развёртывание полностью автоматизировано платформой.

## Доступные операции
- + **create** — Создание сервиса Gitea
- **delete** — Удаление сервиса Gitea
- **modify** — Модификация сервиса Gitea
- **suspend** — Остановка сервиса Gitea
- **resume** — + Запуск сервиса Gitea

---
## 2. Параметры развертывания
Ниже перечислены параметры, которые необходимо указать при создании ресурса Gitea:

* **Платформа для развертывания:**
Платформа + для развертывания (среда, в которой будет развёрнут сервис). Пример: `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество реплик подов Gitea. Пример: `1`

* **Квота (megabyte) + памяти пода:**
Квота памяти пода в мегабайтах. Пример: `1024`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`

* **Размер + (gigabyte) диска для базы данных:**
Размер PVC для хранения репозиториев и данных Gitea в гигабайтах. Пример: `10`

* **FQDN / Домен:**
Доменное имя, по которому будет доступен сервис. + Пример: `git.example.com`

* **Инстанс услуги PostgreSQL:**
UUID услуги k8sPgsql, в которой будет создана база данных `gitea` и пользователь `techgitea`.

* **Дополнительные параметры + сервера (iniServerParams):**
JSON-объект с дополнительными параметрами секции `[server]` в `app.ini`. Пример:
```json
{"MAX_CONTENT_LENGTH": "524288000"}
```

* **Дополнительные + annotations для Ingress (ingressExtraAnnotations):**
JSON-объект с дополнительными annotations для Ingress-контроллера. Пример:
```json
{"nginx.ingress.kubernetes.io/proxy-body-size": + "500m"}
```

---
## 3. Особенности подключения и работы с репозиториями

### 3.1. Доступ только по HTTPS
Сервис развёртывается с **rootless-образом** Gitea. SSH-сервер внутри + и он **доступен только внутри кластера Kubernetes**.

**Внешний доступ к репозиториям осуществляется исключительно по HTTPS через Ingress.**

```bash
# Пример клонирования
https://<домен>/<пользователь>/<репозиторий>.git
```

### + 3.2. Настройка git для передачи логина и пароля
Для работы с приватными репозиториями через HTTPS необходимо передать учётные данные. Рекомендуется использовать один из следующих способов:

**Встроить + креды в URL remote**
```bash
git remote set-url origin https://<логин>:<пароль>@<домен>/<пользователь>/<репозиторий>.git
```
> **Важно:** Логин и пароль администратора создаются автоматически + при развертывании и хранятся в Vault.

### 3.3. Работа с большими файлами
По умолчанию `MAX_CONTENT_LENGTH` установлен в **500 МБ**, а Ingress пропускает pack-файлы до **500 МБ**.

Если + необходимо запушить файлы близкие к лимиту, увеличьте HTTP-буфер git на стороне клиента:
```bash
git config http.postBuffer 524288000
```

Для файлов **более 500 МБ** рекомендуется + использовать **Git LFS**.

---
## 4. Выходные параметры
После успешного развертывания ресурса Gitea платформа возвращает ряд параметров.

Ключевым из них является:

**connectionUrl**
Это + внешний URL для доступа к веб-интерфейсу и Git-репозиториям по HTTPS. Пример:
```
https://git.example.com
```

**internalConnect**
Внутренний эндпоинт для подключения к PostgreSQL + из других сервисов внутри кластера.

---
## 5. Дополнительная информация
- База данных `gitea` и пользователь `techgitea` создаются автоматически в указанной услуге PostgreSQL.
- DNS-запись + и TLS-сертификат (Let''s Encrypt) настраиваются автоматически на основе указанного домена.
- Для изменения параметров сервера Gitea (`app.ini`) используйте операцию **modify** с полем `iniServerParams`.
- + Для добавления дополнительных Ingress-annotations используйте операцию **modify** с полем `ingressExtraAnnotations`.
---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 82 + operation: create + kind: instance + action: create +- svcOperationId: 83 + operation: delete + kind: instance + action: delete +- svcOperationId: 91 + operation: modify + kind: instance + action: modify +- svcOperationId: 127 + operation: resume + kind: instance + action: resume +- svcOperationId: 126 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 232 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 233 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 234 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 235 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 237 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: gitea-1 + isModifiable: false +- svcOperationCfsParamId: 238 + svcOperationCfsParam: psqlUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 818 + svcOperationCfsParam: ingressExtraAnnotations + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 821 + svcOperationCfsParam: iniServerParams + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 259 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 260 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 261 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 262 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 819 + svcOperationCfsParam: ingressExtraAnnotations + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 820 + svcOperationCfsParam: iniServerParams + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 82: + - 232 + - 233 + - 234 + - 235 + - 237 + - 238 + - 818 + - 821 + 83: [] + 91: + - 259 + - 260 + - 261 + - 262 + - 819 + - 820 + 127: [] + 126: [] +stateParams: + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceInstances: '1' + domain: gitea-1 + psqlUid: '' + ingressExtraAnnotations: '' + iniServerParams: '' diff --git a/site/services/stand2/109_zones_v2.yaml b/site/services/stand2/109_zones_v2.yaml new file mode 100644 index 0000000..4faae6c --- /dev/null +++ b/site/services/stand2/109_zones_v2.yaml @@ -0,0 +1,245 @@ +name: zones_v2 +service_id: 109 +service_display_name: Управление DNS +service_short_name: zonesV2 +service_man: '# Управление DNS

## Что делает сервис

Управляет DNS-зоной вашего домена в инфраструктуре `ngcloud.ru`.
Сервис помогает:

- создать DNS-зону;
- поддерживать + записи в зоне (добавлять, удалять, массово менять);
- удалять зону;
- синхронизировать данные зоны с фактическим состоянием на DNS-серверах.

Сервис работает с авторитетными DNS-серверами + зоны:

- `ns3.ngcloud.ru`
- `185.247.187.83`
- `2a10:aa80:0:5::3`
- `ns4.ngcloud.ru`
- `81.22.46.43`
- `2a10:aa80:0:6::3`

## Очень важно: что сделать у регистратора + домена

Чтобы зона действительно начала обслуживаться, **нужно делегировать домен** у регистратора на авторитетные DNS-серверы:

- `ns3.ngcloud.ru`
- `ns4.ngcloud.ru`

В панели + регистратора нужно заменить NS-серверы домена на значения выше.
Без этого записи в зоне могут быть созданы, но интернет не будет использовать их для вашего домена.

## Проверка после настройки

Проверить + ответы от серверов зоны:

```bash
dig <ваш_домен> @ns3.ngcloud.ru
dig <ваш_домен> @ns4.ngcloud.ru
```

Проверить, что делегирование у регистратора применилось:

```bash
dig + <ваш_домен> NS
```

В ответе должны быть `ns3.ngcloud.ru` и `ns4.ngcloud.ru`.
' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 254 + operation: create + kind: instance + action: create +- svcOperationId: 260 + operation: create_record + kind: subresource + action: create +- svcOperationId: 255 + operation: delete + kind: instance + action: delete +- svcOperationId: 261 + operation: delete_record + kind: subresource + action: delete +- svcOperationId: 256 + operation: modify + kind: instance + action: modify +- svcOperationId: 262 + operation: modify_record + kind: subresource + action: modify +- svcOperationId: 259 + operation: reconcile + kind: action + action: reconcile +stateOut: + records: {} +cfsParams: +- svcOperationCfsParamId: 761 + svcOperationCfsParam: zoneName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 762 + svcOperationCfsParam: zoneKind + dataType: string + isRequired: true + defaultValue: NATIVE + isModifiable: false + valueList: + - NATIVE + - SLAVE +- svcOperationCfsParamId: 763 + svcOperationCfsParam: zoneMastersForSlave + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 764 + svcOperationCfsParam: zoneRefresh + dataType: integer > 0 + isRequired: true + defaultValue: '86400' + isModifiable: false +- svcOperationCfsParamId: 765 + svcOperationCfsParam: zoneRetry + dataType: integer > 0 + isRequired: true + defaultValue: '7200' + isModifiable: false +- svcOperationCfsParamId: 766 + svcOperationCfsParam: zoneExpire + dataType: integer > 0 + isRequired: true + defaultValue: '3600000' + isModifiable: false +- svcOperationCfsParamId: 767 + svcOperationCfsParam: zoneTTL + dataType: integer > 0 + isRequired: true + defaultValue: '86400' + isModifiable: false +- svcOperationCfsParamId: 768 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: powerdns + isModifiable: false + valueList: + - powerdns +- svcOperationCfsParamId: 777 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 778 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '3600' + isModifiable: false +- svcOperationCfsParamId: 779 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: A + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 780 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 781 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 769 + svcOperationCfsParam: records + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + recordName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + recordTTL: + dataType: integer > 0 + defaultValue: '3600' + isRequired: true + isModifiable: false + recordType: + dataType: string + defaultValue: A + isRequired: true + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP + recordInput: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 783 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 784 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 785 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 786 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 254: + - 761 + - 762 + - 763 + - 764 + - 765 + - 766 + - 767 + - 768 + 260: + - 777 + - 778 + - 779 + - 780 + 255: [] + 261: + - 781 + 256: + - 769 + 262: + - 783 + - 784 + - 785 + - 786 + 259: [] +stateParams: + zoneName: '' + zoneKind: NATIVE + zoneMastersForSlave: '' + zoneRefresh: '86400' + zoneRetry: '7200' + zoneExpire: '3600000' + zoneTTL: '86400' + resourceRealm: powerdns diff --git a/site/services/stand2/111_dnsrecord.yaml b/site/services/stand2/111_dnsrecord.yaml new file mode 100644 index 0000000..e4c3e1b --- /dev/null +++ b/site/services/stand2/111_dnsrecord.yaml @@ -0,0 +1,92 @@ +name: dnsrecord +service_id: 111 +service_display_name: DNS запись +service_short_name: dnsrecord +service_man: Необходима DNS зона, в которой будет создана DNS запись.
Выберите
* Зону в которой будет создана запись
* Тип записи
* Имя записи
* Значение записи +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 45 + operation: create + kind: instance + action: create +- svcOperationId: 46 + operation: delete + kind: instance + action: delete +- svcOperationId: 90 + operation: modify + kind: instance + action: modify +- svcOperationId: 408 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 75 + svcOperationCfsParam: zoneUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 76 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - PTR + - SOA + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 77 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 78 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 450 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '3600' + isModifiable: false +- svcOperationCfsParamId: 256 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 45: + - 75 + - 76 + - 77 + - 78 + - 450 + 46: [] + 90: + - 256 + 408: [] +stateParams: + zoneUid: '' + recordType: '' + recordName: '' + recordInput: '' + recordTTL: '3600' diff --git a/site/services/stand2/115_mariadb.yaml b/site/services/stand2/115_mariadb.yaml new file mode 100644 index 0000000..a18939b --- /dev/null +++ b/site/services/stand2/115_mariadb.yaml @@ -0,0 +1,408 @@ +name: mariadb +service_id: 115 +service_display_name: Mariadb +service_short_name: mariadb +service_man: 'Mariadb кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.
Автоматическое резервное копирование, ручное восстановление.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 138 + operation: create + kind: instance + action: create +- svcOperationId: 242 + operation: create_database + kind: subresource + action: create +- svcOperationId: 243 + operation: create_user + kind: subresource + action: create +- svcOperationId: 139 + operation: delete + kind: instance + action: delete +- svcOperationId: 248 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 247 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 142 + operation: modify + kind: instance + action: modify +- svcOperationId: 287 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 141 + operation: resume + kind: instance + action: resume +- svcOperationId: 140 + operation: suspend + kind: instance + action: suspend +stateOut: + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 877 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 878 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' +- svcOperationCfsParamId: 879 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 880 + svcOperationCfsParam: mariadbConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: 9.4.0 + isRequired: true + isModifiable: false + valueList: + - 8.4.0 + - 9.4.0 +- svcOperationCfsParamId: 881 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '720' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 882 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 734 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: db-aah92zcm + isModifiable: false +- svcOperationCfsParamId: 735 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: usero6y8ruyp + isModifiable: false +- svcOperationCfsParamId: 736 + svcOperationCfsParam: password + dataType: string + isRequired: true + defaultValue: kgocowba + isModifiable: false +- svcOperationCfsParamId: 737 + svcOperationCfsParam: dbName + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + dbname: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 738 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: '%' + isModifiable: false +- svcOperationCfsParamId: 456 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 745 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 744 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 883 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 884 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 885 + svcOperationCfsParam: mariadbConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 8.4.0 + - 9.4.0 +- svcOperationCfsParamId: 886 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 887 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +cfsParamsByOp: + 138: + - 877 + - 878 + - 879 + - 880 + - 881 + - 882 + 242: + - 734 + 243: + - 735 + - 736 + - 737 + - 738 + 139: + - 456 + 248: + - 745 + 247: + - 744 + 142: + - 883 + - 884 + - 885 + - 886 + - 887 + 287: [] + 141: [] + 140: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"disk": 10, "cpu": 500, "memory": 512, "replicas": 1}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' + mariadbConfiguration: '{"version": "9.4.0"}' + backupConfiguration: '{"s3Uid": "", "retain": 720, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"enabled": false, "schedule": 0, "quota": 100, "percent": 10}' diff --git a/site/services/stand2/116_kafka.yaml b/site/services/stand2/116_kafka.yaml new file mode 100644 index 0000000..eac596b --- /dev/null +++ b/site/services/stand2/116_kafka.yaml @@ -0,0 +1,349 @@ +name: kafka +service_id: 116 +service_display_name: ApacheKafka +service_short_name: kafka +service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу

## 1. Общая информация

Сервис **Организация в Cloud Director** предназначен для управления изолированными + организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль + уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.

### Доступные операции

**create** + — Создание новой организации с заданными характеристиками и типом доступа.
**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.
**modify** + — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).
**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.
**resume** + — Разморозка организации, восстановление функций управления.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: + платформа, на которой будет создана организация.
Пример значения: `ngcloud.ru`.

### Тип организации
Описание: тип создаваемой организации.
Варианты:
- `iaas` — организация с прямым + доступом к облаку и авторизацией через Keycloak.
- `saas` — организация под управлением Nubes, без прямого доступа к облаку.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.

### Промышленное окружение
- Тип организации: `saas` (упрощённая + модель использования).

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе операций):

### Идентификатор организации
Уникальный + идентификатор созданной организации. Используется для всех дальнейших API-операций.

### Статус организации
Отражает текущее состояние: active, suspended, modifying, deleting.

### + Параметры сети
Выходные данные при наличии ipSpaces: список выделенных внешних IP, имя ip_space, количество IP.

---

## 5. Дополнительная информация

- Для конфигурации внешних + IP внутри организации необходимо предварительно создать:
-- хотя бы один **Виртуальный датацентр (VDC)**;
-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный к этой организации.
- + Удаление организации возможно только через 14 дней после перевода в состояние suspend.
- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов IP, сетей, ВМок + и иных объектов.
- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.
- Для iaas-организаций доступ осуществляется через Keycloak.

' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 148 + operation: create + kind: instance + action: create +- svcOperationId: 165 + operation: create_topic + kind: subresource + action: create +- svcOperationId: 168 + operation: create_user + kind: subresource + action: create +- svcOperationId: 149 + operation: delete + kind: instance + action: delete +- svcOperationId: 167 + operation: delete_topic + kind: subresource + action: delete +- svcOperationId: 170 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 162 + operation: modify + kind: instance + action: modify +- svcOperationId: 166 + operation: modify_topic + kind: subresource + action: modify +- svcOperationId: 169 + operation: modify_user + kind: subresource + action: modify +- svcOperationId: 161 + operation: resume + kind: instance + action: resume +- svcOperationId: 160 + operation: suspend + kind: instance + action: suspend +stateOut: + topics: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 1084 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1085 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1086 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + allocationExternal: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 523 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 524 + svcOperationCfsParam: partitions + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 525 + svcOperationCfsParam: replicas + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 530 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 531 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 532 + svcOperationCfsParam: operations + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - Create + - Describe + - Read + - Write +- svcOperationCfsParamId: 533 + svcOperationCfsParam: group + dataType: string + isRequired: true + defaultValue: '*' + isModifiable: false +- svcOperationCfsParamId: 534 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: '*' + isModifiable: false +- svcOperationCfsParamId: 529 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 540 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1087 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1088 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + allocationExternal: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 526 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 527 + svcOperationCfsParam: partitions + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 528 + svcOperationCfsParam: replicas + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 535 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 536 + svcOperationCfsParam: operations + dataType: array + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - Create + - Describe + - Read + - Write +- svcOperationCfsParamId: 537 + svcOperationCfsParam: group + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 538 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 539 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 148: + - 1084 + - 1085 + - 1086 + 165: + - 523 + - 524 + - 525 + 168: + - 530 + - 531 + - 532 + - 533 + - 534 + 149: [] + 167: + - 529 + 170: + - 540 + 162: + - 1087 + - 1088 + 166: + - 526 + - 527 + - 528 + 169: + - 535 + - 536 + - 537 + - 538 + - 539 + 161: [] + 160: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 2000, "memory": 2048, "replicas": 0, "disk": 1}' + accessConfiguration: '{"allocationExternal": false, "masterAccessList": "[]"}' diff --git a/site/services/stand2/119_akhq.yaml b/site/services/stand2/119_akhq.yaml new file mode 100644 index 0000000..3baecf1 --- /dev/null +++ b/site/services/stand2/119_akhq.yaml @@ -0,0 +1,109 @@ +name: akhq +service_id: 119 +service_display_name: Akhq +service_short_name: Akhq +service_man: '# Инструкция по развертыванию Apache Kafka через платформу

---
## 1. Общая информация
AKHQ — это веб-интерфейс для работы с кластерами Apache Kafka.
Позволяет просматривать + топики, consumer group''ы, сообщения, ACL, схему безопасности, состояние брокеров и метаданные.
Поддерживает работу с несколькими кластерами Kafka одновременно, включая внутренние и внешние (TLS) + подключения.

## Доступные операции
- **create** — Создание ресурса AKHQ
- **suspend** — Остановка ресурса
- **resume** — Возобновление работы ресурса
- **modify** — + Модификация настроек
- **delete** — Удаление ресурса

---
## 2. Параметры развертывания кластера
Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:

* + **Кластер Kafka к которому нужно настроить подключение**
Для использования AKHQ необходимо предварительно развернуть сервис Kafka. Пример: `kafka-external`.

* **Платформа для развертывания:**
Платформа + для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество узлов для работы Akhq. Пример `2`

* **Квота + (megabyte) памяти пода:**
Квота памяти пода в мегабайтах. Пример: `512`

* **Квота (millicore ) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`

* **Имя + домена:**
Dns Имя по которому будет происходить обращение к сервису. Указать необходимо уникальное имя до . ( то есть если необходимо получить dns ui) Пример: `kafka-external`

---
## + 4. Выходные параметры
После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.
Ключевым из них является:

**connectionUrl**
Это полное доменное имя (FQDN), + по которому будет доступен интерфейс AKHQ. После развёртывания подождите несколько минут — UI станет доступен по HTTPS, как только все сервисы полностью запустятся.

**Учетные данные**
Здесь + представлены поля для ввода логина и пароля, с помощью которых вы сможете авторизоваться в сервисе.

---
## 5. Дополнительная информация
Учётные записи, созданные для работы с AKHQ, предоставляют + доступ только для просмотра данных. Для управления Kafka, пожалуйста, используйте возможности личного кабинета.
---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 175 + operation: create + kind: instance + action: create +- svcOperationId: 176 + operation: delete + kind: instance + action: delete +- svcOperationId: 180 + operation: modify + kind: instance + action: modify +- svcOperationId: 178 + operation: resume + kind: instance + action: resume +- svcOperationId: 177 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 550 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 551 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: false +- svcOperationCfsParamId: 552 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: false +- svcOperationCfsParamId: 553 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 554 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +- svcOperationCfsParamId: 555 + svcOperationCfsParam: kafkaUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 565 + svcOperationCfsParam: kafkaUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 175: + - 550 + - 551 + - 552 + - 553 + - 554 + - 555 + 176: [] + 180: + - 565 + 178: [] + 177: [] +stateParams: + resourceRealm: '' + resourceMemory: '512' + resourceCPU: '500' + domain: '' + resourceInstances: '1' + kafkaUid: '' diff --git a/site/services/stand2/120_clickhouse.yaml b/site/services/stand2/120_clickhouse.yaml new file mode 100644 index 0000000..5330abd --- /dev/null +++ b/site/services/stand2/120_clickhouse.yaml @@ -0,0 +1,523 @@ +name: clickhouse +service_id: 120 +service_display_name: ClickHouse +service_short_name: clickhouse +service_man: '# Инструкция по управлению кластерами и пользователями ClickHouse

---

## Общая информация

ClickHouse — это колоночная система управления базами данных, предназначенная + для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.

Кластер + создаётся через оператор Altinity (`https://github.com/Altinity/clickhouse-operator`) в ресурсной платформе типа `k8s`

Кластеры могут создаваться шардированными с произвольным количеством реплик. + Для обеспечения отказоустойчивости и координации обязательно включение параметра `Создать ClickHouse-Keeper`.

Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать + услугу `S3 Object Storage`.
---

## Доступные операции

* **create** — Создание кластера
* **delete** — Удаление кластера
* **suspend** — Приостановка работы кластера
* + **resume** — Возобновление работы кластера
* **create_database** — Создание базы данных
* **delete_database** — Удаление базы данных
* **create_user** — Создание пользователя и настройка + прав доступа к базе данных
* **delete_user** — Удаление пользователя

## Процесс создания и первого подключения

1. Выполнить операцию `create` - будет создан кластер
2. Выполнить + операцию `create_database` - будет создана база данных
3. Выполнить операцию `create_user` - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)

## Примеры подключения

### + Подключение через HTTP-интерфейс

```bash
# Проверка доступности кластера
curl "http://:@:8123/" -d "SELECT 1"

# Выполнение запроса
curl "http://:@:8123/" + -d "SHOW DATABASES"
```

## Простые кейсы
*Создать БД и обычной таблицы*
```clickhouse
CREATE TABLE database.table
(
id UInt64,
value String
)
ENGINE + = MergeTree()
ORDER BY id;

INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);

SELECT count() FROM database.table;
```
Базы и таблицы не реплицируются + без специального ключа (`ON CLUSTER ''clickhousek8s''`)
В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах


*Создание БД и шардированной + таблицы*
```clickhouse
CREATE TABLE database.localUsers
(
id UInt64,
value String
)
ENGINE = MergeTree()
ORDER BY id;

CREATE TABLE database.shardedTable
AS + localUsers
ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', id);

INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);

SELECT count() + FROM shardedTable;
```
Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse

*Создание реплицируемой и шардированной таблицы*
```clickhouse
CREATE + TABLE IF NOT EXISTS database.localUsers ON cluster ''clickhousek8s''
(
user_id UInt64,
name String,
email String
)
ENGINE = ReplicatedMergeTree(
''/clickhouse/tables/{shard}/localUsers'',
''{replica}''
)
ORDER + BY user_id;

CREATE TABLE IF NOT EXISTS database.users ON cluster ''clickhousek8s''
AS database.localUsers
ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', rand());

INSERT + INTO database.users VALUES (1, ''Alice'', ''alice@example.com'');
INSERT INTO database.users VALUES (2, ''Bob'', ''bob@example.com'');
INSERT INTO database.users VALUES (3, ''Charlie'', ''charlie@example.com'');
INSERT + INTO database.users VALUES (4, ''David'', ''david@example.com'');
INSERT INTO database.users VALUES (5, ''Gosha'', ''gosha@example.com'');
INSERT INTO database.users VALUES (6, ''Eve'', ''eve@example.com'');
INSERT + INTO database.users VALUES (7, ''Frank'', ''frank@example.com'');
INSERT INTO database.users VALUES (8, ''Grace'', ''grace@example.com'');
INSERT INTO database.users VALUES (9, ''Hannah'', ''hannah@example.com'');
INSERT + INTO database.users VALUES (10, ''Ivan'', ''ivan@example.com'');

SELECT * FROM database.localUsers;
SELECT * FROM database.users;

SELECT COUNT(*) AS total_users FROM database.users;
SELECT + COUNT(*) AS total_users_local FROM database.localUsers;
```' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 181 + operation: create + kind: instance + action: create +- svcOperationId: 186 + operation: create_database + kind: subresource + action: create +- svcOperationId: 185 + operation: create_user + kind: subresource + action: create +- svcOperationId: 184 + operation: delete + kind: instance + action: delete +- svcOperationId: 188 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 187 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 189 + operation: modify + kind: instance + action: modify +- svcOperationId: 276 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 183 + operation: resume + kind: instance + action: resume +- svcOperationId: 182 + operation: suspend + kind: instance + action: suspend +stateOut: + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 837 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 838 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + shards: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 839 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 840 + svcOperationCfsParam: clickhouseKeeperConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '1' + - '3' +- svcOperationCfsParamId: 841 + svcOperationCfsParam: clickhouseConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '25.10' + isRequired: true + isModifiable: false + valueList: + - '25.10' +- svcOperationCfsParamId: 842 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 843 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' +- svcOperationCfsParamId: 851 + svcOperationCfsParam: clickhouseFilesConfiguration + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + path: + dataType: string + defaultValue: something.xml + isRequired: true + isModifiable: false + xmlConfig: + dataType: string + defaultValue: + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 600 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: db01 + isModifiable: false +- svcOperationCfsParamId: 596 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: myusername + isModifiable: false +- svcOperationCfsParamId: 598 + svcOperationCfsParam: dbName + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + dbName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 599 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: ::/0 + isModifiable: false +- svcOperationCfsParamId: 602 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 601 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 844 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + shards: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 845 + svcOperationCfsParam: clickhouseKeeperConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '1' + - '3' +- svcOperationCfsParamId: 846 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 847 + svcOperationCfsParam: clickhouseConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '25.10' +- svcOperationCfsParamId: 848 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 849 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: false,true + isRequired: true + isModifiable: false + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 850 + svcOperationCfsParam: clickhouseFilesConfiguration + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + path: + dataType: string + defaultValue: something.xml + isRequired: true + isModifiable: false + xmlConfig: + dataType: string + defaultValue: + isRequired: true + isModifiable: false +cfsParamsByOp: + 181: + - 837 + - 838 + - 839 + - 840 + - 841 + - 842 + - 843 + - 851 + 186: + - 600 + 185: + - 596 + - 598 + - 599 + 184: [] + 188: + - 602 + 187: + - 601 + 189: + - 844 + - 845 + - 846 + - 847 + - 848 + - 849 + - 850 + 276: [] + 183: [] + 182: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 2048, "replicas": 1, "shards": 1, "disk": 10}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' + clickhouseKeeperConfiguration: '{"cpu": 500, "memory": 512, "replicas": 0}' + clickhouseConfiguration: '{"version": "25.10"}' + backupConfiguration: '{"s3Uid": "", "retain": 7, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"quota": 100, "percent": 10, "enabled": false, "schedule": 0}' + clickhouseFilesConfiguration: '{"path": "something.xml", "xmlConfig": ""}' diff --git a/site/services/stand2/12_s3.yaml b/site/services/stand2/12_s3.yaml new file mode 100644 index 0000000..bb27afb --- /dev/null +++ b/site/services/stand2/12_s3.yaml @@ -0,0 +1,119 @@ +name: s3 +service_id: 12 +service_display_name: S3 Object Storage +service_short_name: s3 +service_man: Руководство доступно по ссылке:
https://docs.s3.msk-1.ngcloud.ru/s3/s3.description.html +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 1 + operation: create + kind: instance + action: create +- svcOperationId: 6 + operation: create_sub_user + kind: subresource + action: create +- svcOperationId: 5 + operation: delete + kind: instance + action: delete +- svcOperationId: 7 + operation: delete_sub_user + kind: subresource + action: delete +- svcOperationId: 4 + operation: modify + kind: instance + action: modify +- svcOperationId: 407 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 3 + operation: resume + kind: instance + action: resume +- svcOperationId: 2 + operation: suspend + kind: instance + action: suspend +stateOut: + sub_users: {} +cfsParams: +- svcOperationCfsParamId: 163 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: ceph.tst.nubes.ru + isModifiable: false + valueList: + - ceph.tst.nubes.ru +- svcOperationCfsParamId: 320 + svcOperationCfsParam: displayName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 60 + svcOperationCfsParam: subUserName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 61 + svcOperationCfsParam: subUserAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - read + - write + - readwrite + - full +- svcOperationCfsParamId: 63 + svcOperationCfsParam: subUserName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 50 + svcOperationCfsParam: maxSizeGbPerUser + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 51 + svcOperationCfsParam: maxObjectsPerBucket + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 52 + svcOperationCfsParam: maxBucketsPerUser + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 1: + - 163 + - 320 + 6: + - 60 + - 61 + 5: [] + 7: + - 63 + 4: + - 50 + - 51 + - 52 + 407: [] + 3: [] + 2: [] +stateParams: + resourceRealm: ceph.tst.nubes.ru + displayName: '' diff --git a/site/services/stand2/13_s3bucket.yaml b/site/services/stand2/13_s3bucket.yaml new file mode 100644 index 0000000..caad982 --- /dev/null +++ b/site/services/stand2/13_s3bucket.yaml @@ -0,0 +1,90 @@ +name: s3bucket +service_id: 13 +service_display_name: S3 бакет +service_short_name: s3bucket +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 51 + operation: create + kind: instance + action: create +- svcOperationId: 52 + operation: delete + kind: instance + action: delete +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 124 + svcOperationCfsParam: s3UserUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 125 + svcOperationCfsParam: bucketName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 126 + svcOperationCfsParam: maxSize + dataType: string + isRequired: true + defaultValue: '-1' + isModifiable: false +- svcOperationCfsParamId: 127 + svcOperationCfsParam: readAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 128 + svcOperationCfsParam: listAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 129 + svcOperationCfsParam: corsAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 130 + svcOperationCfsParam: placement + dataType: string + isRequired: true + defaultValue: HOT + isModifiable: false + valueList: + - HOT + - COLD +cfsParamsByOp: + 51: + - 124 + - 125 + - 126 + - 127 + - 128 + - 129 + - 130 + 52: [] +stateParams: + s3UserUid: '' + bucketName: '' + maxSize: '-1' + readAll: 'false' + listAll: 'false' + corsAll: 'false' + placement: HOT diff --git a/site/services/stand2/148_vc_mgmt_sthutrval_cluster.yaml b/site/services/stand2/148_vc_mgmt_sthutrval_cluster.yaml new file mode 100644 index 0000000..5b38d61 --- /dev/null +++ b/site/services/stand2/148_vc_mgmt_sthutrval_cluster.yaml @@ -0,0 +1,150 @@ +name: vc_mgmt_sthutrval_cluster +service_id: 148 +service_display_name: Менеджмент Kubernetes кластер Штурвал +service_short_name: vcMgmtSthutrvalCluster +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 258 + operation: create + kind: instance + action: create +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 771 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: sandbox.nubes.ru + isRequired: true + isModifiable: false + valueList: + - sandbox.nubes.ru + clusterName: + dataType: string + defaultValue: example-ywasgmh6 + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 772 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + appVersion: + dataType: string + defaultValue: 2.13.1 + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 773 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 774 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + groupName: + dataType: string + defaultValue: workers-gj7zkkhv + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' +- svcOperationCfsParamId: 775 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +cfsParamsByOp: + 258: + - 771 + - 772 + - 773 + - 774 + - 775 +stateParams: + startupConfiguration: '{"resourceRealm": "sandbox.nubes.ru", "clusterName": "example-ywasgmh6"}' + clusterConfiguration: '{"appVersion": "2.13.1"}' + controlPlaneConfiguration: '{"sizingPolicy": "", "sizingDisk": 50, "count": 1}' + workerConfiguration: '{"sizingDisk": 50, "count": 2, "groupName": "workers-gj7zkkhv", "sizingPolicy": ""}' + accessConfiguration: '{"needExternalAddressIngress": true, "accessIpListIngress": "[]", "needExternalAddressAPI": true, "accessIpListAPI": "[]"}' diff --git a/site/services/stand2/149_valo_tenant.yaml b/site/services/stand2/149_valo_tenant.yaml new file mode 100644 index 0000000..92c5262 --- /dev/null +++ b/site/services/stand2/149_valo_tenant.yaml @@ -0,0 +1,216 @@ +name: valo_tenant +service_id: 149 +service_display_name: VALO Cloud +service_short_name: valoTenant +service_man: '# Инструкция по развертыванию Тенант Valo через платформу

## 1. Общая информация
Тенант Valo — логический изолированный экземпляр сервиса VALO Cloud, предоставляющий защищённое + облачное хранилище, синхронизацию данных и доступ к документам с различных устройств. При создании тенант автоматически разворачивается в тестовом режиме сроком на 2 месяца. Перевод в промышленную эксплуатацию + выполняется отдельной операцией.

### Доступные операции

* **create** — создание нового тенанта в тестовом режиме сроком на 2 месяца.
* **modify** — изменение настроек тенанта, включая + перевод из ТЕСТ в ПРОД.
* **suspend** — выключение (приостановка работы) тенанта.
* **resume** — включение ранее приостановленного тенанта.
* **delete** — удаление тенанта; доступно только + после выполнения операции suspend.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: платформа, + на которой будет создан тенант.
Пример значения: `valo.ngcloud.ru`.

### DNS-Префикс
Описание: Будет добавлено в зону valo.ngcloud.ru
Пример значения: `mysimpledomain`.

### + Параметры хранилища
Описание: Сколько места будет выделено под использование в тенанте. Данные хранятся в S3. Размер указывается в Gigabytes
Пример значения: `10`.

### Настройки тенанта
Описание: + Ряд конфигурации Valo-тенанта, такие как настройки пользователя и доступного функционала
Пример значения: `опционально в рамках настройки`.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
Достаточно развернуть тенант в ТЕСТ. Срок предоставляется в 2 месяца. По истечению срока тенант автоматически переводится в `suspend` на стороне ресурсной платформы

### + Промышленное окружение
Для разблокировки используйте операцию `modify`

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе + операций):

### Статус тенанта
Отражает текущее состояние и параметры.

---

## 5. Дополнительная информация
Тенант всегда создаётся в режиме ТЕСТ и не может быть сразу + переведён в ПРОД без операции modify.
Удаление тенанта возможно только после его выключения с помощью операции suspend.
Срок тестового режима составляет 2 месяца с момента создания.
Операции + suspend и resume используются для временного управления доступностью сервиса без потери конфигурации.
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 202 + operation: create + kind: instance + action: create +- svcOperationId: 206 + operation: delete + kind: instance + action: delete +- svcOperationId: 203 + operation: modify + kind: instance + action: modify +- svcOperationId: 205 + operation: resume + kind: instance + action: resume +- svcOperationId: 204 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 655 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: valo.ngcloud.ru + isModifiable: false + valueList: + - valo.ngcloud.ru +- svcOperationCfsParamId: 656 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 657 + svcOperationCfsParam: valoOptions + dataType: map-fixed + isRequired: true + defaultValue: '{}' + isModifiable: true + dataDescriptor: + ffLogging: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + userCount: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + requestApproveMaxPeriod: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + ffOnlineEditor: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffWatermark: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffUserImport: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffThemes: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffPublicLink: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 658 + svcOperationCfsParam: s3Storage + dataType: integer > 0 + isRequired: true + defaultValue: '10' + isModifiable: true +- svcOperationCfsParamId: 659 + svcOperationCfsParam: valoOptions + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + requestApproveMaxPeriod: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + ffOnlineEditor: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffWatermark: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffUserImport: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffThemes: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffPublicLink: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffLogging: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + userCount: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 660 + svcOperationCfsParam: s3Storage + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 202: + - 655 + - 656 + - 657 + - 658 + 206: [] + 203: + - 659 + - 660 + 205: [] + 204: [] +stateParams: + resourceRealm: valo.ngcloud.ru + domain: '' + valoOptions: '{"ffLogging": true, "userCount": 10, "requestApproveMaxPeriod": 2, "ffOnlineEditor": true, "ffWatermark": true, "ffUserImport": true, "ffThemes": true, "ffPublicLink": true}' + s3Storage: '10' diff --git a/site/services/stand2/150_k8s_sthutrval_cluster.yaml b/site/services/stand2/150_k8s_sthutrval_cluster.yaml new file mode 100644 index 0000000..77d7dfc --- /dev/null +++ b/site/services/stand2/150_k8s_sthutrval_cluster.yaml @@ -0,0 +1,324 @@ +name: k8s_sthutrval_cluster +service_id: 150 +service_display_name: Kubernetes кластер Штурвал +service_short_name: k8sSthutrvalCluster +service_man: Перед разворачиванием убедиться, что в облаке есть 2 свободных невыделенных IP в пуле +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 108 + operation: create + kind: instance + action: create +- svcOperationId: 281 + operation: create_user + kind: subresource + action: create +- svcOperationId: 109 + operation: delete + kind: instance + action: delete +- svcOperationId: 282 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 110 + operation: modify + kind: instance + action: modify +- svcOperationId: 253 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 174 + operation: resume + kind: instance + action: resume +- svcOperationId: 173 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 750 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + nsxtUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + clusterName: + dataType: string + defaultValue: example-kcrwfrbd + isRequired: true + isModifiable: false + vdcUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 751 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + sizingPolicy: + dataType: string + defaultValue: '[]' + isRequired: true + isModifiable: false + valueList: + - '{}' +- svcOperationCfsParamId: 752 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + groupName: + dataType: string + defaultValue: workers-rbrr6za5 + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 753 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 755 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + appVersion: + dataType: string + defaultValue: 2.13.1 + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 869 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 870 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 756 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + appVersion: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 757 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 758 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + groupName: + dataType: string + defaultValue: workers-kk0fpv6w + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 759 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +cfsParamsByOp: + 108: + - 750 + - 751 + - 752 + - 753 + - 755 + 281: + - 869 + 109: [] + 282: + - 870 + 110: + - 756 + - 757 + - 758 + - 759 + 253: [] + 174: [] + 173: [] +stateParams: + startupConfiguration: '{"nsxtUid": "", "clusterName": "example-kcrwfrbd", "vdcUid": ""}' + controlPlaneConfiguration: '{"sizingDisk": 50, "count": 1, "sizingPolicy": "[]"}' + workerConfiguration: '{"groupName": "workers-rbrr6za5", "sizingPolicy": "", "sizingDisk": 50, "count": 2}' + accessConfiguration: '{"needExternalAddressAPI": true, "accessIpListAPI": "[]", "needExternalAddressIngress": true, "accessIpListIngress": "[]"}' + clusterConfiguration: '{"appVersion": "2.13.1"}' diff --git a/site/services/stand2/151_k8s_openbao.yaml b/site/services/stand2/151_k8s_openbao.yaml new file mode 100644 index 0000000..94de8e5 --- /dev/null +++ b/site/services/stand2/151_k8s_openbao.yaml @@ -0,0 +1,374 @@ +name: k8s_openbao +service_id: 151 +service_display_name: Vault +service_short_name: k8sOpenbao +service_man: '# Инструкция по развертыванию Хранилища секретов через платформу

## 1. Общая информация
Хранилище секретов — сервис централизованного и защищённого хранения чувствительных данных + (секретов, ключей, конфигураций). Предназначен для использования приложениями и сервисами в Kubernetes с управлением доступом на основе ролей.
В качестве приложения используется открытый проект OpenBao + с поддержкой кластерного режима RAFT.

### Доступные операции
**create** — Создание хранилища секретов и инициализация кластера.
**delete** — Удаление хранилища секретов с полной очисткой + всех связанных сущностей.
**modify** — Изменение параметров развернутого хранилища секретов.
**suspend** — Приостановка работы кластера без удаления Persistent Volume.
**resume** — Возобновление + работы кластера с автоматическим unseal всех нод.
**restart** — Поочередный перезапуск нод с последующим подключением в кластер.
**create_kv** — Создание Key/Value хранилища версии V2.
**delete_kv** + — Удаление Key/Value хранилища со всеми содержащимися секретами.
**create_secrets** — Создание секрета внутри Key/Value хранилища.
**delete_secrets** — Удаление секрета из Key/Value хранилища.
**update_secrets** + — Обновление значения секрета.
**recovery_secrets** — Откат секрета к указанной версии.
**create_role** — Создание роли для управления Key/Value хранилищем или секретами.
**update_role** — + Обновление параметров роли.
**delete_role** — Удаление роли доступа.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа + для развертывания
Описание: Кластер Kubernetes, в котором будет развернуто приложение.
Формат значения: имя Kubernetes-кластера.

### Имя домена
Описание: Доменное имя сервиса. При + указании полного FQDN выполняется проверка DNS A-записи или добавляется А-запись в техническую зону.
Формат значения: secrets.domain.com / mysecretdomain.

### Кол-во реплик
Описание: + Количество узлов в кластере.
Формат значения: целое число.

### Квота ядра пода
Описание: Лимит CPU для одного узла. Указывается в milicores (1000 milicores = 1 CPU).
Формат значения: + целое число.

### Квота памяти пода
Описание: Лимит оперативной памяти для одного узла. Указывается в megabytes.
Формат значения: целое число.

### Размер диска под хранение секретов
Описание: + Объем диска для хранения данных. Фактический объем равен значению, умноженному на количество реплик. Указывается в Gigabytes
Формат значения: целое число.

### Версия OpenBao
Описание: + Версия OpenBao для развертывания сервиса.
Формат значения: выбор из предоставленного списка версий.

---

## 3. Рекомендованные характеристики

### Тестовое окружение
Кол-во + реплик: 2.
Квота ядра пода: 200.
Квота памяти пода: 256.
Размер диска под хранение секретов: 1.
Версия OpenBao: актуальная стабильная версия.

### Промышленное окружение
Кол-во + реплик: от 3.
Квота ядра пода: от 1000.
Квота памяти пода: от 1024.
Размер диска под хранение секретов: от 10.
Версия OpenBao: актуальная стабильная версия.

---

## 4. + Выходные параметры
Настройки внутри хранилища (kv/secrets/roles) — конфигурации Key/Value, секретов и ролей, созданные соответствующими операциями.
Настройки самого хранилище (сайзинг, объемы) + — параметры ресурсов и хранилища данных, примененные к сервису.
Статус кластера (running / suspended) — текущее состояние работы кластера.
url для подключения к веб — адрес веб-интерфейса сервиса.

---

## + 5. Дополнительная информация
При удалении хранилища все данные и настройки безвозвратно удаляются.
При использовании доменного имени требуется корректная настройка DNS.
Операции управления + секретами и ролями выполняются только после успешного создания хранилища.
Удаление кластера производится через операцию `suspend`, а удаление становится доступно через 14 дней после остановки кластера
Правило + выше не относится к операции `delete_kv` / `delete_secrets` / `delete_role`' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 210 + operation: create + kind: instance + action: create +- svcOperationId: 212 + operation: create_kv + kind: subresource + action: create +- svcOperationId: 237 + operation: create_policy + kind: subresource + action: create +- svcOperationId: 214 + operation: create_secrets + kind: subresource + action: create +- svcOperationId: 231 + operation: delete + kind: instance + action: delete +- svcOperationId: 213 + operation: delete_kv + kind: subresource + action: delete +- svcOperationId: 239 + operation: delete_policy + kind: subresource + action: delete +- svcOperationId: 233 + operation: delete_secrets + kind: subresource + action: delete +- svcOperationId: 211 + operation: modify + kind: instance + action: modify +- svcOperationId: 236 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 232 + operation: recovery_secrets + kind: subresource + action: recovery +- svcOperationId: 234 + operation: restart + kind: action + action: restart +- svcOperationId: 216 + operation: resume + kind: instance + action: resume +- svcOperationId: 215 + operation: suspend + kind: instance + action: suspend +- svcOperationId: 238 + operation: update_policy + kind: subresource + action: update +- svcOperationId: 230 + operation: update_secrets + kind: subresource + action: update +stateOut: + kvs: {} + policies: {} + secrets: {} +cfsParams: +- svcOperationCfsParamId: 663 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 664 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 665 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '3' + isModifiable: true +- svcOperationCfsParamId: 666 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 667 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '10' + isModifiable: true +- svcOperationCfsParamId: 668 + svcOperationCfsParam: appVersion + dataType: string + isRequired: true + defaultValue: 2.5.2 + isModifiable: true + valueList: + - 2.5.2 +- svcOperationCfsParamId: 669 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: bao-ovkw1qbi + isModifiable: false +- svcOperationCfsParamId: 675 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: kvname-bbycmhbz + isModifiable: false +- svcOperationCfsParamId: 728 + svcOperationCfsParam: policySettings + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + capabilities: + dataType: json + defaultValue: '["read", "list"]' + isRequired: true + isModifiable: false + path: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 729 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: policy-xqjoiy6t + isModifiable: false +- svcOperationCfsParamId: 677 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 678 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: path/to/mysecret + isModifiable: false +- svcOperationCfsParamId: 679 + svcOperationCfsParam: secretData + dataType: map + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 676 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 732 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 726 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 727 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 670 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 671 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 672 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 673 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 674 + svcOperationCfsParam: appVersion + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - 2.5.2 +- svcOperationCfsParamId: 723 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 724 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 725 + svcOperationCfsParam: secretVersion + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 730 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 731 + svcOperationCfsParam: policySettings + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + capabilities: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + path: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 719 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 720 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 721 + svcOperationCfsParam: needFullUpdateSecret + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 722 + svcOperationCfsParam: secretData + dataType: map + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 210: + - 663 + - 664 + - 665 + - 666 + - 667 + - 668 + - 669 + 212: + - 675 + 237: + - 728 + - 729 + 214: + - 677 + - 678 + - 679 + 231: [] + 213: + - 676 + 239: + - 732 + 233: + - 726 + - 727 + 211: + - 670 + - 671 + - 672 + - 673 + - 674 + 236: [] + 232: + - 723 + - 724 + - 725 + 234: [] + 216: [] + 215: [] + 238: + - 730 + - 731 + 230: + - 719 + - 720 + - 721 + - 722 +stateParams: + resourceRealm: '' + resourceCPU: '500' + resourceInstances: '3' + resourceMemory: '512' + resourceDisk: '10' + appVersion: 2.5.2 + domain: bao-ovkw1qbi diff --git a/site/services/stand2/163_llm_ai.yaml b/site/services/stand2/163_llm_ai.yaml new file mode 100644 index 0000000..9036c7a --- /dev/null +++ b/site/services/stand2/163_llm_ai.yaml @@ -0,0 +1,237 @@ +name: llm_ai +service_id: 163 +service_display_name: LLM +service_short_name: llmAi +service_man: '## 1. Общая информация

LLMaaS (Large Language Model as a Service) — это сервис для доступа к языковым моделям через OpenAI-совместимое API.
Платформа позволяет создавать организации + (тенанты), команды, выпускать и управлять API-ключами, устанавливать лимиты на использование.

---

## Доступные операции

- **create** — Создание организации в LLMaaS
- + **delete** — Удаление организации

- **create_team** — Создание команды внутри организации
- **modify_team** — Редактирование команды (модели, RPM, TPM)
- **delete_team** — + Удаление команды

- **create_secrets** — Создание API-ключа
- **update_secrets** — Обновление параметров API-ключа
- **delete_secrets** — Удаление API-ключа

---

## + 2. Параметры создания организации

Ниже перечислены параметры, которые необходимо указать при создании организации:

* **Платформа для развертывания**
Выбирается автоматически, изменять + не нужно.

* **Период бюджета**
Срок жизни организации в днях.
Пример: `30`


---

## 3. Параметры создания команды

* **Имя команды**
Уникальное + имя команды в рамках организации.
Пример: `production`

* **Модель**
Название модели, доступной для команды.
Пример: `gpt-oss-120b`

* **Лимит запросов в минуту (RPM)**
Максимальное + количество запросов к API в минуту.
Пример: `60`

* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + исходящих) в минуту.
Пример: `100000`

---

## + 4. Параметры редактирования команды

Для существующей команды можно изменить:

* **Модель**
Новая модель для команды.
Пример: `gpt-oss-20b`

* **Лимит запросов в минуту + (RPM)**
Новое значение RPM.
Пример: `120`

* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`

---

## 5. Параметры создания API-ключа

Ниже + перечислены параметры, которые необходимо указать при создании API-ключа:

* **Имя ключа**
Уникальное имя ключа в рамках организации.
Пример: `prod-key`

* **Команда**
Имя + команды для привязки ключа. Если не указано — ключ привязывается к команде `main`.
Пример: `production`

* **Модель**
Название модели, доступной для данного ключа.
Пример: `gpt-oss-120b`

* + **Лимит запросов в минуту (RPM)**
Максимальное количество запросов к API в минуту.
Пример: `60`

* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + + исходящих) в минуту.
Пример: `100000`

**Важно:** Лимиты API-ключа не могут превышать лимиты команды, к которой он привязан.
При превышении операция будет отклонена с ошибкой.
Перед + созданием ключа убедитесь, что `RPM <= team.RPM` и `TPM <= team.TPM`.


---

## 6. Параметры обновления API-ключа

Для уже существующего ключа можно изменить параметры. Все + параметры являются опциональными:

* **Имя ключа**
Имя обновляемого ключа.
Пример: `prod-key`

* **Модель**
Новое название модели.
Пример: `gpt-oss-20b`

* + **Лимит запросов в минуту (RPM)**
Новое значение RPM.
Пример: `120`

* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`

**Важно:** При обновлении + лимитов API-ключа новые значения не могут превышать лимиты команды.
Если указать значения выше командных, операция завершится ошибкой.
Указывайте `RPM <= team.RPM` и `TPM <= team.TPM`.

Команда + определяется автоматически по стейту услуги — изменить привязку к другой команде через эту операцию нельзя.

---

## 7. Параметры удаления API-ключа

* **Команда**
Имя команды, + к которой привязан ключ.
Пример: `production`

* **Имя ключа**
Имя удаляемого ключа.
Пример: `prod-key`

---

## 8. Параметры удаления команды

* **Имя + команды**
Имя удаляемой команды.
Пример: `production`

---

## 9. Параметры удаления организации

Удаление организации не требует дополнительных параметров — удаляется + вся организация со всеми командами и ключами.

---

## 10. Выходные параметры

После успешного создания организации платформа возвращает:

* **connectionUrl**
URL + для доступа к inference API (OpenAI-совместимый).
Пример: `https://api.aillm.ru`

---


## 12. Пример использования API

После получения API-ключа клиент может обращаться + к LLMaaS напрямую:

**Запрос к chat completions:**

```bash
curl https://api.aillm.ru/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" + \
-d ''{
"model": "gpt-oss-120b",
"messages": [
{"role": "user", "content": "Привет!"}
]
}''
```

**Получение списка доступных моделей:**

```bash
curl + https://api.aillm.ru/v1/models \
-H "Authorization: Bearer sk-..."
```
' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 271 + operation: create + kind: instance + action: create +- svcOperationId: 274 + operation: create_secrets + kind: subresource + action: create +- svcOperationId: 278 + operation: create_team + kind: subresource + action: create +- svcOperationId: 273 + operation: delete + kind: instance + action: delete +- svcOperationId: 275 + operation: delete_secrets + kind: subresource + action: delete +- svcOperationId: 280 + operation: delete_team + kind: subresource + action: delete +- svcOperationId: 279 + operation: modify_team + kind: subresource + action: modify +- svcOperationId: 277 + operation: update_secrets + kind: subresource + action: update +stateOut: + secrets: {} + teams: {} +cfsParams: +- svcOperationCfsParamId: 826 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: llmAi.aillm.ru + isModifiable: false + valueList: + - llmAi.aillm.ru +- svcOperationCfsParamId: 833 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 834 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: false +- svcOperationCfsParamId: 835 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: false +- svcOperationCfsParamId: 857 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 859 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 858 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 860 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 861 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: false +- svcOperationCfsParamId: 862 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: false +- svcOperationCfsParamId: 836 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 876 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 868 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 864 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 865 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 873 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: true +- svcOperationCfsParamId: 874 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: true +- svcOperationCfsParamId: 852 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 853 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 854 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: true +- svcOperationCfsParamId: 855 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: true +- svcOperationCfsParamId: 875 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 271: + - 826 + 274: + - 833 + - 834 + - 835 + - 857 + - 859 + 278: + - 858 + - 860 + - 861 + - 862 + 273: [] + 275: + - 836 + - 876 + 280: + - 868 + 279: + - 864 + - 865 + - 873 + - 874 + 277: + - 852 + - 853 + - 854 + - 855 + - 875 +stateParams: + resourceRealm: llmAi.aillm.ru diff --git a/site/services/stand2/19_vc_org.yaml b/site/services/stand2/19_vc_org.yaml new file mode 100644 index 0000000..95fea45 --- /dev/null +++ b/site/services/stand2/19_vc_org.yaml @@ -0,0 +1,133 @@ +name: vc_org +service_id: 19 +service_display_name: Организация в Cloud Director +service_short_name: vcOrg +service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу

## 1. Общая информация

Сервис **Организация в Cloud Director** предназначен для управления изолированными + организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль + уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.

### Доступные операции

**create** + — Создание новой организации с заданными характеристиками и типом доступа.
**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.
**modify** + — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).
**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.
**resume** + — Разморозка организации, восстановление функций управления.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: + платформа, на которой будет создана организация.
Пример значения: `ngcloud.ru`.

### Тип организации
Описание: тип создаваемой организации.
Варианты:
- `iaas` — организация с прямым + доступом к облаку и авторизацией через Keycloak.
- `saas` — организация под управлением Nubes, без прямого доступа к облаку.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.

### Промышленное окружение
- Тип организации: `saas` (упрощённая + модель использования).

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе операций):

### Url организации
Для + быстрого доступа в тенант

### Статус организации
Отражает текущее состояние и параметры.

---

## 5. Дополнительная информация

- Для конфигурации внешних IP внутри + организации необходимо предварительно создать:
-- хотя бы один **Виртуальный датацентр (VDC)** привязанный к этой организации;
-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный + к vdc выше.
- Удаление организации возможно только через 14 дней после перевода в состояние suspend.
- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов + IP, сетей, ВМок и иных объектов.
- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.
- Для iaas-организаций доступ осуществляется + через Keycloak.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 136 + operation: create + kind: instance + action: create +- svcOperationId: 283 + operation: create_user + kind: subresource + action: create +- svcOperationId: 137 + operation: delete + kind: instance + action: delete +- svcOperationId: 284 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 207 + operation: modify + kind: instance + action: modify +- svcOperationId: 249 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 144 + operation: resume + kind: instance + action: resume +- svcOperationId: 143 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 418 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: sandbox.nubes.ru + isModifiable: false + valueList: + - sandbox.nubes.ru +- svcOperationCfsParamId: 556 + svcOperationCfsParam: organizationType + dataType: string + isRequired: true + defaultValue: iaas + isModifiable: false + valueList: + - iaas + - saas +- svcOperationCfsParamId: 871 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 872 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 662 + svcOperationCfsParam: vIPConfigure + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 136: + - 418 + - 556 + 283: + - 871 + 137: [] + 284: + - 872 + 207: + - 662 + 249: [] + 144: [] + 143: [] +stateParams: + resourceRealm: sandbox.nubes.ru + organizationType: iaas diff --git a/site/services/stand2/1_dummy.yaml b/site/services/stand2/1_dummy.yaml new file mode 100644 index 0000000..ff91e5b --- /dev/null +++ b/site/services/stand2/1_dummy.yaml @@ -0,0 +1,314 @@ +name: dummy +service_id: 1 +service_display_name: Болванка +service_short_name: dummy +service_man: '## Болванка для тестов.

А это просто много букв, чтобы посмотреть, как ведет себя текст при переполнении контейнера.


``` json
{
"iamServiceUrl": "https://auth-api-test.ngcloud.ru/api/v1/user",
"idpResponse": + {
"prefix": {
"charset": "",
"status_text": "Request Time-out",
"text": true,
"errordetail": "",
"filecontent": + "Connection Timeout",
"responseheader": {},
"header": "",
"statuscode": "408 Request Time-out",
"status_code": 408,
"mimetype": + "Unable to determine MIME type of file."
}
}
}
```' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 18 + operation: create + kind: instance + action: create +- svcOperationId: 71 + operation: delete + kind: instance + action: delete +- svcOperationId: 92 + operation: modify + kind: instance + action: modify +- svcOperationId: 257 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 240 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 94 + operation: resume + kind: instance + action: resume +- svcOperationId: 93 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 198 + svcOperationCfsParam: durationMs + dataType: integer >= 0 + isRequired: true + defaultValue: '0' + isModifiable: true +- svcOperationCfsParamId: 199 + svcOperationCfsParam: failAtStart + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 200 + svcOperationCfsParam: failInProgress + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 201 + svcOperationCfsParam: whereFail + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 242 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: dummy + isModifiable: false + valueList: + - dummy +- svcOperationCfsParamId: 286 + svcOperationCfsParam: bodymessage + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 321 + svcOperationCfsParam: mapExample + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + subparam1: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + secret: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + subparam2: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 322 + svcOperationCfsParam: jsonExample + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 396 + svcOperationCfsParam: nestedRefExample + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 647 + svcOperationCfsParam: mapFixed + dataType: map-fixed + isRequired: false + defaultValue: '' + isModifiable: false + dataDescriptor: + bol1: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + minStr1: + dataType: string + defaultValue: abracadabra + isRequired: true + isModifiable: false + valueList: + - abracadabra + param1: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + param2: + dataType: string + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '["1"' + - '"2"' + - '"3"]' + param3: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 654 + svcOperationCfsParam: arrayMapFixedExample + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: false + dataDescriptor: + bol1: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + minStr1: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - abracadabra + param1: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + param2: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '["1"' + - '"2"' + - '"3"]' + param3: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 863 + svcOperationCfsParam: arr + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - test + - '2' + - val1 +- svcOperationCfsParamId: 287 + svcOperationCfsParam: durationMs + dataType: integer >= 0 + isRequired: true + defaultValue: '0' + isModifiable: true +- svcOperationCfsParamId: 288 + svcOperationCfsParam: failAtStart + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 289 + svcOperationCfsParam: failInProgress + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 290 + svcOperationCfsParam: whereFail + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 291 + svcOperationCfsParam: bodymessage + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 373 + svcOperationCfsParam: mapExample + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true + dataDescriptor: + secret: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 374 + svcOperationCfsParam: jsonExample + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 18: + - 198 + - 199 + - 200 + - 201 + - 242 + - 286 + - 321 + - 322 + - 396 + - 647 + - 654 + - 863 + 71: [] + 92: + - 287 + - 288 + - 289 + - 290 + - 291 + - 373 + - 374 + 257: [] + 240: [] + 94: [] + 93: [] +stateParams: + durationMs: '0' + failAtStart: 'false' + failInProgress: 'false' + whereFail: '1' + resourceRealm: dummy + bodymessage: '' + mapExample: '{"subparam1": "", "secret": "", "subparam2": ""}' + jsonExample: '' + nestedRefExample: '' + mapFixed: '{"bol1": false, "minStr1": "abracadabra", "param1": 1, "param2": "1", "param3": 1}' + arrayMapFixedExample: '{"bol1": false, "minStr1": "", "param1": 0, "param2": "", "param3": 1}' + arr: '' diff --git a/site/services/stand2/21_vc_vdc.yaml b/site/services/stand2/21_vc_vdc.yaml new file mode 100644 index 0000000..662531f --- /dev/null +++ b/site/services/stand2/21_vc_vdc.yaml @@ -0,0 +1,166 @@ +name: vc_vdc +service_id: 21 +service_display_name: Виртуальный датацентр (vDC) +service_short_name: vc_vdc +service_man: '# Инструкция по развертыванию Виртуальный датацентр (vDC) через платформу

## 1. Общая информация

**Виртуальный датацентр (vDC)** — это логическая изолированная среда в VMware + Cloud Director, предназначенная для размещения и управления виртуальными машинами, сетевой инфраструктурой и ресурсами хранения. Сервис обеспечивает выделение вычислительных ресурсов под конкретную организацию + и предоставляет гибкие параметры масштабирования, контроля потребления и разделения ресурсов.

### Доступные операции

**create** — Создание виртуального датацентра (vDC) с заданными параметрами + CPU, RAM, Storage и сетевой конфигурацией.
**delete** — Удаление vDC. Требуется предварительный перевод vDC в состояние *suspend*. Полное удаление возможно через 14 дней.
**modify** — Внесение + изменений в параметры ресурсов (CPU/RAM/Storage), выделенных для vDC.
**suspend** — Заморозка vDC. Новые ресурсы или изменения внутри vDC становятся невозможными, работа ВМ не останавливается.
**resume** + — Разморозка vDC. Восстановление возможности управления сущностями внутри vDC.

---

## 2. Параметры развертывания

Ниже перечислены входные параметры операции **create**.

### + UUID Организации
Уникальный идентификатор организации в Cloud Director. Перед созданием vDC требуется предварительное создание услугу `Организация в Cloud Director`.

### Provider VDC в Cloud + Director
Свойство ресурсной платформы, определяющее, какой пул физических ресурсов будет использоваться.

### Network Pool в Cloud Director
Определяет возможности сетевой конфигурации, + включая создание Edge Gateway и выход во внешние сети.

### Гарантированная доля ЯДЕР
Гарантированный процент вычислительных ресурсов (CPU), закрепленный за vDC. Значение устанавливается разово + при создании.

### Гарантированная доля ОЗУ
Гарантированный процент оперативной памяти, закрепленный за vDC. Также задаётся один раз при создании.

### Сколько аллоцировать на VDC + ЯДЕР
Количество виртуальных ядер, выделяемых в рамках vDC.

### Сколько аллоцировать на VDC ОЗУ
Количество оперативной памяти в GB, выделяемой для vDC.

### Конфигурация Storage
Набор + дисковых политик и их объёмов, выделяемых для vDC. Указывается имя политики и требуемый размер (GB).

---

## 3. Рекомендованные характеристики

### Тестовое окружение

- + Количество ядер CPU: 10–20
- Аллоцируемая RAM: 16–64 GB
- Гарантированная доля CPU: 20%
- Гарантированная доля RAM: 20%
- Storage:
- Политика `SATA`
- Объём: 100–300 GB

### + Промышленное окружение

- Количество ядер CPU: 16–128
- Аллоцируемая RAM: 64–512 GB
- Гарантированная доля CPU: 50%
- Гарантированная доля RAM: 50%
- Storage:
- Политики уровня + `SSD`
- Объём: 1–10 TB, выбор несколько политик под разные нагрузки

---

## 4. Выходные параметры

Выходные параметры формируются операцией **create** (и используются другими + операциями):

### Имя vDC
Уникальный идентификатор созданного виртуального датацентра. Используется в дальнейших операциях (modify, suspend, delete).

### Параметры выделенных ресурсов
Подтверждение + итогового объёма CPU/RAM/Storage, выделенных vDC. Используются для учёта и контроля потребления.

---

## 5. Дополнительная информация

- Перед созданием vDC необходимо обеспечить + наличие корректно созданной организации и доступных пула ресурсов ресурсной платформы.
- Гарантированная доля CPU и RAM задаётся **однократно при создании vDC**. После развертывания изменить эти значения + невозможно; для изменения необходимо пересоздать vDC.
- Удаление vDC возможно только через **14 дней после перевода в состояние *suspend***. Удаление очищает все связанные сущности (ВМ, сети, каталоги), + поэтому необходимо убедиться, что данные перенесены.
- Платформа Cloud Director использует концепцию изолированных организационных ресурсов, поэтому корректная настройка Provider VDC и Network Pool + является обязательной при создании vDC.
- При изменении параметров (modify) изменяются только показатели CPU, RAM и Storage. Сетевые параметры и гарантированные доли остаются неизменными.
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 9 + operation: create + kind: instance + action: create +- svcOperationId: 24 + operation: delete + kind: instance + action: delete +- svcOperationId: 112 + operation: modify + kind: instance + action: modify +- svcOperationId: 250 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 172 + operation: resume + kind: instance + action: resume +- svcOperationId: 171 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 30 + svcOperationCfsParam: organizationUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 335 + svcOperationCfsParam: providerVdc + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 361 + svcOperationCfsParam: storageConfig + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + size: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 397 + svcOperationCfsParam: cpuGuaranteed + dataType: integer > 0 + isRequired: true + defaultValue: '20' + isModifiable: false + valueList: + - '20' + - '50' + - '80' +- svcOperationCfsParamId: 557 + svcOperationCfsParam: cpuAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '80' + isModifiable: true +- svcOperationCfsParamId: 558 + svcOperationCfsParam: memAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 746 + svcOperationCfsParam: networkProvider + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 560 + svcOperationCfsParam: cpuAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 561 + svcOperationCfsParam: memAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 562 + svcOperationCfsParam: storageConfig + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + size: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 9: + - 30 + - 335 + - 361 + - 397 + - 557 + - 558 + - 746 + 24: [] + 112: + - 560 + - 561 + - 562 + 250: [] + 172: [] + 171: [] +stateParams: + organizationUid: '' + providerVdc: '' + storageConfig: '{"name": "", "size": 2000}' + cpuGuaranteed: '20' + cpuAllocated: '80' + memAllocated: '200' + networkProvider: '' diff --git a/site/services/stand2/22_vc_nsxt.yaml b/site/services/stand2/22_vc_nsxt.yaml new file mode 100644 index 0000000..9988cbc --- /dev/null +++ b/site/services/stand2/22_vc_nsxt.yaml @@ -0,0 +1,139 @@ +name: vc_nsxt +service_id: 22 +service_display_name: Сетевой шлюз периметра (Edge) +service_short_name: vc_nsxt +service_man: '# Инструкция по развертыванию Сетевой шлюз периметра (Edge) через платформу

## 1. Общая информация

Сервис **Сетевой шлюз периметра (Edge)** предназначен для создания периметрового + сетевого шлюза в рамках одного виртуального датацентра (vDC) или группы виртуальных датацентров (groupvDC).
При создании автоматически разворачивается routed-сеть с адресным пространством `10.10.102.0/24`.
Сервис + обеспечивает сетевую изоляцию, маршрутизацию, а также может включать функциональность балансировщика нагрузки AVI (ALB) для последующей интеграции, включая поддержку кластеров Штурвал.

### Доступные + операции

**create** — Создание нового Edge с привязкой к vDC или groupvDC и развёртыванием routed-сети.
**delete** — Удаление ранее созданного Edge. Недоступно при наличии зависимых услуг + (vApp, VM, Кластер Штурвал).
**modify** — Изменение параметров и сетевых настроек существующего Edge.

---

## 2. Параметры развертывания

Ниже приведены параметры операции + **create**.

### Тип родительской услуги
Определяет контекст размещения Edge.
Допустимые значения: `vdc`, `groupvdc`.
Использование:
- При выборе `vdc` обязателен параметр + **UUID VDC**.
- При выборе `groupvdc` обязателен параметр **UUID Группы VDC**.

### UUID VDC
Идентификатор виртуального датацентра.
Необходимо предварительно создать vDC через услугу + «Виртуальный датацентр (vDC)».
Указывается только при выборе родительского типа `vdc`.

### UUID Группы VDC
Идентификатор группы виртуальных датацентров.
Создаётся через услугу + «Группа виртуальных датацентров (groupvDC)».
Используется при выборе родительского типа `groupvdc`.

### Включить ALB
Флаг активации AVI Load Balancer в Cloud Director.
Пример + значения: `true`/`false`.
Нужен для развёртывания кластера Штурвал и возможности создания Virtual Services.

### Наименование segroup
Имя сервиса групп (segroup) на уровне ресурсной + платформы.
Обязательно при включённом ALB.
Определяет группу, в которой будут выделяться пулы AVI для Virtual Services.

### virtualServicesCount
Количество резервируемых виртуальных + сервисов (Virtual Services) на AVI.
Типичное значение: 1–10 в зависимости от нагрузки.

---

## 3. Рекомендованные характеристики

### Тестовое окружение (Test)

- + Тип родительской услуги: `vdc`
- virtualServicesCount: 1–2
- ALB: выключен по умолчанию (включать только при необходимости тестирования Штурвала)
- segroup: задаётся только при включённом + ALB
- VDC гарантии CPU/RAM: минимальные (поскольку изменить их после создания нельзя)

### Промышленное окружение (Production)

- Тип родительской услуги: `groupvdc` при работе с + распределёнными нагрузками или `vdc` для локализованных проектов
- virtualServicesCount: 3–10, исходя из предполагаемого количества публикаций
- ALB: включён, если требуется высокая доступность + сервисов или используется кластер Штурвал
- segroup: рекомендуется использовать выделенную группу под проект
- VDC гарантии CPU/RAM: повышенные, с учётом того, что изменить их после создания + невозможно без пересоздания vDC

---

## 4. Выходные параметры

### Имя Edge
Уникальное название созданного сетевого шлюза, используется для ссылок и дальнейших операций.

### + Имя routed-сети
Автоматически созданная routed-сеть с подсетью `10.10.102.0/24`, используется для подключения ресурсов.

### Параметры Edge
Набор параметров, указанных пользователем при + создании: тип услуги, ALB, segroup, virtualServicesCount и др.
Используются в операциях modify и для анализа состояния сервиса.

---

## 5. Дополнительная информация

- В + рамках сервиса **один раз при создании задаётся гарантированная доля CPU/RAM vDC**. Изменить её невозможно — требуется пересоздание vDC.
- Удаление Edge недоступно при наличии зависимых ресурсов + (vApp, VM, кластер Штурвал).
- При использовании ALB необходимо корректно указывать segroup, чтобы обеспечить корректное выделение пулов AVI.
- При выборе режима `groupvdc` следует учитывать + распределение нагрузки между несколькими vDC.
- SNAT для всех ресурсов внутри Edge можно активировать через операцию modify (параметры выделения VIP и ipSpace).

' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 10 + operation: create + kind: instance + action: create +- svcOperationId: 25 + operation: delete + kind: instance + action: delete +- svcOperationId: 111 + operation: modify + kind: instance + action: modify +- svcOperationId: 252 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 8 + svcOperationCfsParam: vdcUid + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 340 + svcOperationCfsParam: needEnableAVI + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 341 + svcOperationCfsParam: virtualServicesCount + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 621 + svcOperationCfsParam: vdcType + dataType: string + isRequired: true + defaultValue: vdc + isModifiable: false + valueList: + - vdc + - vdcGroup +- svcOperationCfsParamId: 622 + svcOperationCfsParam: vdcGroupUid + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 825 + svcOperationCfsParam: qosProfile + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 368 + svcOperationCfsParam: needEnableAVI + dataType: boolean + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 369 + svcOperationCfsParam: virtualServicesCount + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 372 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 856 + svcOperationCfsParam: qosProfile + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 10: + - 8 + - 340 + - 341 + - 621 + - 622 + - 825 + 25: [] + 111: + - 368 + - 369 + - 372 + - 856 + 252: [] +stateParams: + vdcUid: '' + needEnableAVI: 'false' + virtualServicesCount: '1' + vdcType: vdc + vdcGroupUid: '' + qosProfile: '' diff --git a/site/services/stand2/25_vcexternalip.yaml b/site/services/stand2/25_vcexternalip.yaml new file mode 100644 index 0000000..bbc2bde --- /dev/null +++ b/site/services/stand2/25_vcexternalip.yaml @@ -0,0 +1,186 @@ +name: vcexternalip +service_id: 25 +service_display_name: Публичные IP адреса +service_short_name: vcexternalip +service_man: '**Обычно эта услуга разворачивается автоматически при развёртывании более сложных услуг**
Вручную создавать можно, однако услуга требует много параметров, о которых можно просто не знать

Резервировать + публичные IP адреса можно только после создания NGcloud Organization, NGcloud Виртуальный датацентр, NGcloud Каталог, Сетевой шлюз периметра.
Вы можете назначить IP адрес для существующего экземпляра + сервиса.' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 56 + operation: create + kind: instance + action: create +- svcOperationId: 57 + operation: delete + kind: instance + action: delete +- svcOperationId: 197 + operation: modify + kind: instance + action: modify +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 140 + svcOperationCfsParam: serviceUid + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 141 + svcOperationCfsParam: dnatCreate + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true +- svcOperationCfsParamId: 142 + svcOperationCfsParam: internalPortAccess + dataType: string + isRequired: true + defaultValue: '5432' + isModifiable: true +- svcOperationCfsParamId: 143 + svcOperationCfsParam: snatCreate + dataType: boolean + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 144 + svcOperationCfsParam: internalAddrAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 324 + svcOperationCfsParam: fromServiceNamespace + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 325 + svcOperationCfsParam: fromServiceCloudEdgeName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 326 + svcOperationCfsParam: fromServiceCloudVdcName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 327 + svcOperationCfsParam: fromServiceCloudOrgName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 328 + svcOperationCfsParam: fromServiceCloudVmwareUrl + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 336 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 488 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: sandbox.nubes.ru + isModifiable: false + valueList: + - sandbox.nubes.ru +- svcOperationCfsParamId: 624 + svcOperationCfsParam: fromServiceCloudEdgeScope + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 626 + svcOperationCfsParam: fromServiceVdcGroupName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 627 + svcOperationCfsParam: serviceUid + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 628 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 629 + svcOperationCfsParam: dnatCreate + dataType: boolean + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 630 + svcOperationCfsParam: snatCreate + dataType: boolean + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 631 + svcOperationCfsParam: internalPortAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 632 + svcOperationCfsParam: internalAddrAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 56: + - 140 + - 141 + - 142 + - 143 + - 144 + - 324 + - 325 + - 326 + - 327 + - 328 + - 336 + - 488 + - 624 + - 626 + 57: [] + 197: + - 627 + - 628 + - 629 + - 630 + - 631 + - 632 +stateParams: + serviceUid: '' + dnatCreate: 'true' + internalPortAccess: '5432' + snatCreate: '' + internalAddrAccess: '' + fromServiceNamespace: '' + fromServiceCloudEdgeName: '' + fromServiceCloudVdcName: '' + fromServiceCloudOrgName: '' + fromServiceCloudVmwareUrl: '' + ipSpaceName: '' + resourceRealm: sandbox.nubes.ru + fromServiceCloudEdgeScope: '' + fromServiceVdcGroupName: '' diff --git a/site/services/stand2/26_vapp.yaml b/site/services/stand2/26_vapp.yaml new file mode 100644 index 0000000..140f01c --- /dev/null +++ b/site/services/stand2/26_vapp.yaml @@ -0,0 +1,75 @@ +name: vapp +service_id: 26 +service_display_name: Виртуальный каталог ВМ (vApp) +service_short_name: vapp +service_man: '# Инструкция по развертыванию Виртуальный каталог ВМ (vApp) через платформу

## 1. Общая информация

**Виртуальный каталог ВМ (vApp)** — это логическая каталог, объединённая + в единый управляемый объект. Сервис предназначен для совместного развертывания, управления жизненным циклом и сетевого взаимодействия набора связанных ВМ. Основные функции включают:
- централизованное + управление включением, выключением и приостановкой группы ВМ;
- унифицированный сетевой доступ через привязанный Edge-шлюз;

### Доступные операции

**create** — Создание нового vApp + с привязкой к заданным услугам VDC и Edge
**delete** — Удаление существующего vApp. Требуется предварительный перевод vApp в состояние *suspend*. Полное удаление возможно через 14 дней.
**suspend** + — Остановка vApp (выключение всех ВМ внутри каталога)
**resume** — Запуск vApp (включение всех ВМ внутри каталога)

---

## 2. Параметры развертывания

Параметры берутся из + операции **create**.

### UUID Услуги VDC
Уникальный идентификатор услуги «Виртуальный датацентр (vDC)».
Используется для определения вычислительной инфраструктуры, в которой будет развернут + vApp.

### UUID Услуги Edge
Уникальный идентификатор услуги «Сетевой шлюз периметра (Edge)».
Обеспечивает маршрутизацию и сетевое подключение. Может быть привязан к группе VDC, поэтому + выбирается отдельно.

### Имя vApp
Строгое имя, соответствующее маске формирования DNS-имени.
Используется как часть в DNS-имени при создании виртуальных машин.

---

## + 3. Рекомендованные характеристики
Так как является промежуточным этапом для создания ВМ, все характеристики описываются в услуге `Виртуальная машина`

---

## 4. Выходные параметры

### + Параметры vApp
Заданные при создании vApp

---

## 5. Дополнительная информация

- Привязка к VDC и Edge осуществляется раздельно, поскольку один Edge может обслуживать несколько + VDC (через услугу `Группа виртуальных датацентров (groupvDC)`). Это гарантирует возможность развернуть ВМ в единой сети, но в разных виртуальных датацентрах.
- Перед удалением vApp необходимо вручную + перевести его в состояние **suspend**. Удаление возможно только спустя 14 дней после этого шага.
- Операция delete удаляет весь vApp полностью, включая все виртуальные машины, связанные с ним.
- + Рекомендуется заранее планировать сетевые связи и назначения DNS-имён для обеспечения корректной работы сервисов, развернутых внутри vApp.
- При проектировании инфраструктуры следует учитывать зависимости + между Edge-шлюзом, VDC и размещаемыми ВМ, чтобы избежать ограничений при масштабировании и интеграции.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 69 + operation: create + kind: instance + action: create +- svcOperationId: 70 + operation: delete + kind: instance + action: delete +- svcOperationId: 285 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 209 + operation: resume + kind: instance + action: resume +- svcOperationId: 208 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 190 + svcOperationCfsParam: nsxtUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 191 + svcOperationCfsParam: vappName + dataType: string + isRequired: true + defaultValue: hf1t7p5c + isModifiable: false +- svcOperationCfsParamId: 623 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +cfsParamsByOp: + 69: + - 190 + - 191 + - 623 + 70: [] + 285: [] + 209: [] + 208: [] +stateParams: + nsxtUid: '' + vappName: hf1t7p5c + vdcUid: '' diff --git a/site/services/stand2/27_vc_vm_v2.yaml b/site/services/stand2/27_vc_vm_v2.yaml new file mode 100644 index 0000000..7ae978e --- /dev/null +++ b/site/services/stand2/27_vc_vm_v2.yaml @@ -0,0 +1,52 @@ +name: vc_vm_v2 +service_id: 27 +service_display_name: VM в Cloud Director (vc_vmV2) +service_short_name: vc_vm_v2 +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 100 + operation: create + kind: instance + action: create +- svcOperationId: 101 + operation: delete + kind: instance + action: delete +- svcOperationId: 104 + operation: modify + kind: instance + action: modify +- svcOperationId: 102 + operation: resume + kind: instance + action: resume +- svcOperationId: 103 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 301 + svcOperationCfsParam: serverListJson + dataType: json + isRequired: true + defaultValue: '[{}]' + isModifiable: true +- svcOperationCfsParamId: 302 + svcOperationCfsParam: serverListJson + dataType: json + isRequired: true + defaultValue: '[{}]' + isModifiable: true +cfsParamsByOp: + 100: + - 301 + 101: [] + 104: + - 302 + 102: [] + 103: [] +stateParams: + serverListJson: '[{}]' diff --git a/site/services/stand2/28_vc_vm_v3.yaml b/site/services/stand2/28_vc_vm_v3.yaml new file mode 100644 index 0000000..a790017 --- /dev/null +++ b/site/services/stand2/28_vc_vm_v3.yaml @@ -0,0 +1,298 @@ +name: vc_vm_v3 +service_id: 28 +service_display_name: Виртуальная машина +service_short_name: vc_vm_v3 +service_man: '# Документация по разворачиванию ВМ в Личном кабинете

Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).

## Доступные + операции
- **create** — Создание виртуальной машины
- **delete** — Удаление виртуальной машины
- **resume** — Запуск виртуальной машины
- **suspend** — Остановка виртуальной машины

---

## + Параметры для развёртывания ВМ

### Обязательные параметры:

**vappUid**
UUID vApp, в которой будет создаваться виртуальная машина.
*Пример: WZ00400*

**vmName**
Уникальное + имя виртуальной машины.
*Пример: test-vm*

**vmCpu**
Количество ядер процессора. Должно быть больше 0.
*Пример: 1*

**vmRam**
Объем оперативной памяти в гигабайтах. Должно + быть больше 0.
*Пример: 1*


**accessPortList**
Белый список портов для доступа к виртуальной машине извне в формате JSON.
*Пример: ["22","10050]*

**imageVm**
Образ + операционной системы для развёртывания.
*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*

**userLogin**
Логин пользователя для SSH-доступа.
*По умолчанию: + myuser*

**userPublicKey**
Публичный SSH-ключ пользователя в формате OpenSSH.
*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*

**needAddZabbixTemplate**
Значение истина\ложь, + определяющее будет ли добавлен хост в zabbix.
*Пример: true*

### Опциональные параметры:

**accessIpList**
Белый список IP-адресов для доступа к виртуальной машине в формате JSON. + Если оставить пустым, вм будет доступена со всех адресов.
*Пример: ["192.168.1.1", "10.0.0.5"]*

**vmDisk**
Размер дополнительного диска в гигабайтах. Должно быть больше 0.
*Пример: + 50*

**ipSpaceName**
Внешний IP-адрес. Если не требуется — укажите значение "no-needed" (В нем не будет работать сбор метрик zabbix).

**cloudInit**
YAML-скрипт для кастомизации + системы через cloud-init.

---

## Доступные образы операционных систем

### RockyLinux_9-16G-cloudinit
Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для + серверных задач.
- Размер системного диска: 16 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

### Ubuntu_22-20G
Образ на основе Ubuntu Server 22.04 LTS для + облачного окружения.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

### Debian_13-20G
Образ на основе Debian 13 (Trixie) для + стабильной серверной работы.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

---

## Пример использования Cloud-init

```yaml
users:
- + name: myuser
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...

packages:
- + nginx

runcmd:
- systemctl enable --now nginx
- systemctl restart nginx
```

---

## Результат выполнения

После успешного развёртывания в Личном кабинете + появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.

---

## Важные примечания

### + Особенности работы:
- Для отключения внешнего IP укажите значение "no-needed" в параметре ipSpaceName
- Параметр cloudInit является опциональным

### Ограничения:
- Не рекомендуется + использовать продолжительные инструкции в cloud-init (таймаут 5 минут)
- Не поддерживается запись файлов через cloud-init
- Не реализовано создание резервных копий ВМ

---

## + Диагностика проблем с cloud-init

### Основной лог-файл:
```bash
/var/log/cloud-init.log
```

### Пакет не устанавливается:
- Проверьте доступность пакета в репозитории
- + Убедитесь в правильности написания имени пакета
- Попробуйте установить вручную: `apt install <имя_пакета>` (Debian/Ubuntu) или `dnf install <имя_пакета>` (Rocky Linux)

### Команда не выполняется:
- + Проверьте наличие требуемой утилиты в системе
- Убедитесь в правильности синтаксиса команды
- Попробуйте выполнить команду вручную для диагностики' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 132 + operation: create + kind: instance + action: create +- svcOperationId: 133 + operation: delete + kind: instance + action: delete +- svcOperationId: 159 + operation: modify + kind: instance + action: modify +- svcOperationId: 286 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 164 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 135 + operation: resume + kind: instance + action: resume +- svcOperationId: 134 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 407 + svcOperationCfsParam: vappUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 408 + svcOperationCfsParam: vmName + dataType: string + isRequired: true + defaultValue: web01 + isModifiable: false +- svcOperationCfsParamId: 409 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 410 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 411 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 412 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 413 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 414 + svcOperationCfsParam: imageVm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 415 + svcOperationCfsParam: cloudInit + dataType: yaml + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 416 + svcOperationCfsParam: userLogin + dataType: string + isRequired: true + defaultValue: myuser + isModifiable: false +- svcOperationCfsParamId: 417 + svcOperationCfsParam: userPublicKey + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 448 + svcOperationCfsParam: accessPortList + dataType: string + isRequired: true + defaultValue: '["22"]' + isModifiable: true +- svcOperationCfsParamId: 493 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 494 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 495 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 496 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - no-needed + - internet-antiddos-v1 + - internet-no-antiddos-v1 + - internet-ipv4-v1 +- svcOperationCfsParamId: 497 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 498 + svcOperationCfsParam: accessPortList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 509 + svcOperationCfsParam: vmName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 510 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 511 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 512 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 513 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - no-needed + - internet-antiddos-v1 + - internet-no-antiddos-v1 + - internet-ipv4-v1 +- svcOperationCfsParamId: 514 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 515 + svcOperationCfsParam: imageVm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - RockyLinux_9-16G-cloudinit + - Ubuntu_22-20G + - Debian_13-20G +- svcOperationCfsParamId: 516 + svcOperationCfsParam: userLogin + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 517 + svcOperationCfsParam: userPublicKey + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 518 + svcOperationCfsParam: cloudInit + dataType: yaml + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 520 + svcOperationCfsParam: accessPortList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 132: + - 407 + - 408 + - 409 + - 410 + - 411 + - 412 + - 413 + - 414 + - 415 + - 416 + - 417 + - 448 + 133: [] + 159: + - 493 + - 494 + - 495 + - 496 + - 497 + - 498 + 286: [] + 164: + - 509 + - 510 + - 511 + - 512 + - 513 + - 514 + - 515 + - 516 + - 517 + - 518 + - 520 + 135: [] + 134: [] +stateParams: + vappUid: '' + vmName: web01 + vmCpu: '1' + vmRam: '1' + vmDisk: '' + ipSpaceName: '' + accessIpList: '' + imageVm: '' + cloudInit: '' + userLogin: myuser + userPublicKey: '' + accessPortList: '["22"]' diff --git a/site/services/stand2/29_vc_vdc_group.yaml b/site/services/stand2/29_vc_vdc_group.yaml new file mode 100644 index 0000000..a2bb7c8 --- /dev/null +++ b/site/services/stand2/29_vc_vdc_group.yaml @@ -0,0 +1,71 @@ +name: vc_vdc_group +service_id: 29 +service_display_name: Группа датацентров +service_short_name: vcVdcGroup +service_man: '# Инструкция по развертыванию Группа виртуальных датацентров (groupvDC) через платформу

## 1. Общая информация

Сервис **Группа виртуальных датацентров (groupvDC)** предназначен + для логического объединения нескольких виртуальных датацентров (vDC) в единую группу. Это позволяет растягивать SDN между разными vDC и централизованно управлять сетевой связностью. Управление инфраструктурой + осуществляется через Cloud Director.
Сервис применяется в случаях, когда требуется обеспечить единое сетевое пространство для распределенных виртуальных датацентров.

### Доступные операции

**create** + — Создание новой группы виртуальных датацентров.
**delete** — Удаление существующей группы vDC.
**add_vdc** — Добавление дополнительного виртуального датацентра в группу.
**remove_vdc** — + Удаление ранее добавленного виртуального датацентра из группы.

---

## 2. Параметры развертывания

Параметры операции **create**:

### UUID VDC
Идентификатор виртуального + датацентра, который будет являться первичным в группе.
Описание: требуется предварительно создать виртуальный датацентр с помощью услуги `Виртуальный датацентр (vDC)`.

---

## 3. + Рекомендованные характеристики

### Тестовое окружение
- Для тестового окружения создавать группу VDC нет необходимости, так как это создаёт дополнительный слой абстракции в Cloud Director

### + Промышленное окружение
- Для промышленного окружения, если в тенанте существуют разные VDC, создание groupvdc позволит снизить сетевые издержки (за счёт общей сети)

---

## 4. Выходные + параметры

### Параметры groupvdc
Набор параметров, указанных пользователем при создании

---

## 5. Дополнительная информация
- Группа vDC используется для растягивания + SDN между несколькими виртуальными датацентрами. Управление всеми сетевыми элементами внутри группы выполняется Cloud Director.
- Удалить первичный vDC (тот, что был указан при операции **create**) + невозможно. Для его удаления необходимо удалить всю группу и создать новую.
- Перед добавлением любого vDC в группу он должен быть предварительно развернут через сервис `Виртуальный датацентр (vDC)`.
- + Сети создаются не в этой услуге, а в услуге `Сетевой шлюз периметра (Edge)`. В ней необходимо будет выбрать тип `groupvdc`' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 192 + operation: add_vdc + kind: subresource + action: add +- svcOperationId: 191 + operation: create + kind: instance + action: create +- svcOperationId: 195 + operation: delete + kind: instance + action: delete +- svcOperationId: 251 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 193 + operation: remove_vdc + kind: subresource + action: remove +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 619 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 618 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 620 + svcOperationCfsParam: vdcName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 192: + - 619 + 191: + - 618 + 195: [] + 251: [] + 193: + - 620 +stateParams: + vdcUid: '' diff --git a/site/services/stand2/2_template.yaml b/site/services/stand2/2_template.yaml new file mode 100644 index 0000000..9b90b83 --- /dev/null +++ b/site/services/stand2/2_template.yaml @@ -0,0 +1,201 @@ +name: template +service_id: 2 +service_display_name: Темплейт k8s +service_short_name: template +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 74 + operation: create + kind: instance + action: create +- svcOperationId: 75 + operation: delete + kind: instance + action: delete +- svcOperationId: 76 + operation: modify + kind: instance + action: modify +- svcOperationId: 298 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 98 + operation: resume + kind: instance + action: resume +- svcOperationId: 97 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 813 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '128' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 814 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 815 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + type: + dataType: string + defaultValue: ingress + isRequired: true + isModifiable: false + valueList: + - ingress + - service + domain: + dataType: string + defaultValue: abracadabra-aoy3qnll + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 816 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + disk: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 817 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + type: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - ingress + - service + domain: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 74: + - 813 + - 814 + - 815 + 75: [] + 76: + - 816 + - 817 + 298: [] + 98: [] + 97: [] +stateParams: + clusterConfiguration: '{"cpu": 100, "disk": 5, "memory": 128, "replicas": 1}' + startupConfiguration: '{"resourceRealm": ""}' + accessConfiguration: '{"slaveAccessList": "[]", "type": "ingress", "domain": "abracadabra-aoy3qnll", "masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": ""}' diff --git a/site/services/stand2/50_nextcloud.yaml b/site/services/stand2/50_nextcloud.yaml new file mode 100644 index 0000000..38a9156 --- /dev/null +++ b/site/services/stand2/50_nextcloud.yaml @@ -0,0 +1,428 @@ +name: nextcloud +service_id: 50 +service_display_name: Nextcloud +service_short_name: nextcloud +service_man: 'Ресурсная платформа: k8s. Автоматизация: helm chart' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 16 + operation: create + kind: instance + action: create +- svcOperationId: 404 + operation: create_backup + kind: subresource + action: create +- svcOperationId: 17 + operation: delete + kind: instance + action: delete +- svcOperationId: 67 + operation: modify + kind: instance + action: modify +- svcOperationId: 390 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 406 + operation: recovery + kind: action + action: recovery +- svcOperationId: 66 + operation: restart + kind: action + action: restart +- svcOperationId: 129 + operation: resume + kind: instance + action: resume +- svcOperationId: 128 + operation: suspend + kind: instance + action: suspend +stateOut: + backups: {} +cfsParams: +- svcOperationCfsParamId: 1055 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + redisUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 + psqlEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + redisEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + psqlUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1056 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' +- svcOperationCfsParamId: 1057 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: nextcloud-vjp2crbf + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1058 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: 33.0.4 + isRequired: true + isModifiable: false + valueList: + - 33.0.4 + documentServer: + dataType: string + defaultValue: collabora + isRequired: true + isModifiable: false + valueList: + - collabora + logLevel: + dataType: string + defaultValue: INFO + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE +- svcOperationCfsParamId: 1077 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + veleroUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1059 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1060 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + logLevel: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 33.0.4 + documentServer: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - collabora +- svcOperationCfsParamId: 1078 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 + veleroUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + recoveryPoint: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + psqlEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + redisEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + psqlUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + redisUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1079 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' + replicas: + dataType: integer > 0 + defaultValue: 1,2 + isRequired: true + isModifiable: false + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1080 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + domain: + dataType: string + defaultValue: nextcloud-dcxz2gqv + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1081 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + logLevel: + dataType: string + defaultValue: NONE + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE + version: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + documentServer: + dataType: string + defaultValue: collabora + isRequired: true + isModifiable: false + valueList: + - collabora +cfsParamsByOp: + 16: + - 1055 + - 1056 + - 1057 + - 1058 + 404: + - 1077 + 17: [] + 67: + - 1059 + - 1060 + 390: [] + 406: + - 1078 + - 1079 + - 1080 + - 1081 + 66: [] + 129: [] + 128: [] +stateParams: + startupConfiguration: '{"redisUid": "", "resourceRealm": "", "psqlEnabled": true, "redisEnabled": true, "psqlUid": ""}' + clusterConfiguration: '{"replicas": 1, "disk": 10, "cpu": 1000, "memory": 1024}' + accessConfiguration: '{"domain": "nextcloud-vjp2crbf"}' + appConfiguration: '{"version": "33.0.4", "documentServer": "collabora", "logLevel": "INFO"}' diff --git a/site/services/stand2/81_superset.yaml b/site/services/stand2/81_superset.yaml new file mode 100644 index 0000000..5520a16 --- /dev/null +++ b/site/services/stand2/81_superset.yaml @@ -0,0 +1,84 @@ +name: superset +service_id: 81 +service_display_name: Apache Superset +service_short_name: superset +service_man: 'Apache Superset как сервис.
Ресурсная платформа: k8s.
Автоматизация: k8s operator.
Авторизация: 2FA keycloak (для доменного логина @mgmt.nubes.ru)' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 12 + operation: create + kind: instance + action: create +- svcOperationId: 13 + operation: delete + kind: instance + action: delete +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 14 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: superset-1 + isModifiable: false +- svcOperationCfsParamId: 20 + svcOperationCfsParam: emails + dataType: string + isRequired: true + defaultValue: testuser1 + isModifiable: false +- svcOperationCfsParamId: 96 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: false +- svcOperationCfsParamId: 97 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: false +- svcOperationCfsParamId: 98 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +- svcOperationCfsParamId: 109 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 227 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +cfsParamsByOp: + 12: + - 14 + - 20 + - 96 + - 97 + - 98 + - 109 + - 227 + 13: [] +stateParams: + domain: superset-1 + emails: testuser1 + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceRealm: '' + resourceInstances: '1' diff --git a/site/services/stand2/82_harbor.yaml b/site/services/stand2/82_harbor.yaml new file mode 100644 index 0000000..7f928a2 --- /dev/null +++ b/site/services/stand2/82_harbor.yaml @@ -0,0 +1,105 @@ +name: harbor +service_id: 82 +service_display_name: Container Registry +service_short_name: harbor +service_man: 'Расширенный реестр для управления Docker-образами с enterprise-функциями безопасности, репликации и контроля доступа.
Container Registry позволяет хранить, развертывать и управлять Docker-образами + контейнеров в инфраструктуре NGcloud.
Сервис можно использовать в процессе разработки контейнеров. Например, вы можете настроить систему автоматизации на работу с реестром в Container Registry в рамках + процесса непрерывной интеграции. Контейнеры идеально подходят для запуска небольших, независимых и легко изменяемых сервисов.
Чтобы начать работу, создайте реестр и загрузите в него Docker-образ
Авторизация: + keycloak' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 14 + operation: create + kind: instance + action: create +- svcOperationId: 15 + operation: delete + kind: instance + action: delete +- svcOperationId: 270 + operation: modify + kind: instance + action: modify +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 16 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: harbor-1 + isModifiable: false +- svcOperationCfsParamId: 110 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 228 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '100' + isModifiable: true +- svcOperationCfsParamId: 229 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 230 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 231 + svcOperationCfsParam: s3Uid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 822 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 823 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 824 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 14: + - 16 + - 110 + - 228 + - 229 + - 230 + - 231 + 15: [] + 270: + - 822 + - 823 + - 824 +stateParams: + domain: harbor-1 + resourceRealm: '' + resourceCPU: '100' + resourceMemory: '200' + resourceInstances: '1' + s3Uid: '' diff --git a/site/services/stand2/86_k8s_velero.yaml b/site/services/stand2/86_k8s_velero.yaml new file mode 100644 index 0000000..48b874d --- /dev/null +++ b/site/services/stand2/86_k8s_velero.yaml @@ -0,0 +1,177 @@ +name: k8s_velero +service_id: 86 +service_display_name: Velero +service_short_name: k8sVelero +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 332 + operation: create + kind: instance + action: create +- svcOperationId: 331 + operation: delete + kind: instance + action: delete +- svcOperationId: 334 + operation: modify + kind: instance + action: modify +- svcOperationId: 336 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 335 + operation: resume + kind: instance + action: resume +- svcOperationId: 333 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 962 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 963 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 964 + svcOperationCfsParam: nodeAgentConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1076 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + s3BucketUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1082 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 965 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 966 + svcOperationCfsParam: nodeAgentConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 332: + - 962 + - 963 + - 964 + - 1076 + 331: + - 1082 + 334: + - 965 + - 966 + 336: [] + 335: [] + 333: [] +stateParams: + clusterConfiguration: '{"cpu": 1000, "memory": 2048, "replicas": 1}' + startupConfiguration: '{"resourceRealm": ""}' + nodeAgentConfiguration: '{"cpu": 2000, "memory": 2048}' + backupConfiguration: '{"s3BucketUid": ""}' diff --git a/site/services/stand2/89_flask.yaml b/site/services/stand2/89_flask.yaml new file mode 100644 index 0000000..f3ccfb8 --- /dev/null +++ b/site/services/stand2/89_flask.yaml @@ -0,0 +1,238 @@ +name: flask +service_id: 89 +service_display_name: Web-сервер с фреймворком Flask +service_short_name: flask +service_man: '# Инструкция по развертыванию Web-сервер с фреймворком Flask через платформу

## 1. Общая информация

Сервис **Web-сервер с фреймворком Flask** предназначен для развертывания + веб-приложений на базе Flask.

### Доступные операции

create — включить сервис, развернуть веб-приложение с указанными параметрами.
delete — удалить сервис, только после suspend.
modify + — изменить настройки сервиса и переразвернуть.
suspend — выключить веб-приложение, остановить обслуживание.
resume — включить веб-приложение после suspend.

---

## 2. Параметры + развертывания

Параметры входных данных операции **create**:

### Имя домена
Описание: доменное имя для доступа к веб-приложению. Если указан FQDN, происходит проверка DNS на валидность + А-записи. А-запись должна указывать на балансировщик ресурсной платформы. Если указано имя в рамках одного октета, оно будет добавлено в публичную DNS-зону.
Пример значения: строка, допустимые FQDN + или имя в одном октете. Пример: example.com или myapp.

### Платформа для развертывания
Описание: кластер Kubernetes, в котором будет развернуто приложение.
Пример значения: идентификатор + кластера Kubernetes.

### Квота ядра пода
Описание: количество CPU, выделяемое на под, в Milicores.
Пример значения: целое число, например 500 для 0.5 ядра.

### Квота памяти пода
Описание: + количество памяти, выделяемое на под, в Megabytes.
Пример значения: целое число, например 512 для 512 MB.

### Кол-во реплик пода
Описание: количество инстансов пода для масштабирования.
Пример + значения: целое число, шт, например 2.

### URL Проекта (gitpath)
Описание: полный HTTPS путь до проекта в Git-репозитории.
Пример значения: URL в формате https://github.com/myuser/myproject.git. + Доступ к репозиторию должен быть публичным.

### URL HealthCheck
Описание: путь для проверки здоровья приложения внутри пода.
Пример значения: строка, путь, например /api/v1/health.

### + Переменные окружения пода
Описание: структура данных, которая будет передана как переменные окружения в под.
Пример значения: ключ-значение, например {"ENV": "production"}.

---

## + 3. Рекомендованные характеристики

### Тестовое окружение
- Квота ядра пода: 300m (0.3 ядра)
- Квота памяти пода: 256 MB
- Кол-во реплик пода: 1

### Промышленное окружение
- + Квота ядра пода: от 1000m (1 ядро) в зависимости от нагрузки
- Квота памяти пода: от 1024 MB (1 GB) с учетом потребностей приложения
- Кол-во реплик пода: от 2 для обеспечения отказоустойчивости

---

## + 4. Выходные параметры
Операция create не возвращает явных выходных параметров. Успешное выполнение операции приводит к развертыванию сервиса, доступного по указанному домену.

---

## + 5. Дополнительная информация
- В корне проекта должен находиться файл requirements.txt со списком зависимостей Python.
- Исходный код веб-приложения должен располагаться в директории site.
- + Запуск веб-сервера осуществляется командой python app.py.
- Используется версия Python: python:3.12-slim.
- Git-репозиторий должен быть публично доступен для платформы.
- Операция delete возможна + только после suspend.
- Операция modify приводит к переразвертыванию с новыми параметрами.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 376 + operation: create + kind: instance + action: create +- svcOperationId: 379 + operation: delete + kind: instance + action: delete +- svcOperationId: 375 + operation: modify + kind: instance + action: modify +- svcOperationId: 381 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 380 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 378 + operation: resume + kind: instance + action: resume +- svcOperationId: 377 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1037 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1038 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1039 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: flask-ub0sbq5h + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1040 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '3.12' + isRequired: true + isModifiable: false + valueList: + - '3.12' + gitPath: + dataType: string + defaultValue: https://github.com/Foxyhhd/Baldurs-Gate-test.git + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1041 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1042 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1043 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '3.12' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1044 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1045 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +cfsParamsByOp: + 376: + - 1037 + - 1038 + - 1039 + - 1040 + - 1041 + 379: [] + 375: + - 1042 + - 1043 + - 1044 + 381: [] + 380: + - 1045 + 378: [] + 377: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "flask-ub0sbq5h"}' + appConfiguration: '{"version": "3.12", "gitPath": "https://github.com/Foxyhhd/Baldurs-Gate-test.git", "healthPath": ""}' + jsonEnv: '{}' diff --git a/site/services/stand2/90_postgres.yaml b/site/services/stand2/90_postgres.yaml new file mode 100644 index 0000000..207f0aa --- /dev/null +++ b/site/services/stand2/90_postgres.yaml @@ -0,0 +1,859 @@ +name: postgres +service_id: 90 +service_display_name: PostgreSQL +service_short_name: postgres +service_man: '# Инструкция по развертыванию PostgreSQL через платформу

---
## 1. Общая информация

PostgreSQL — это надёжная объектно-реляционная СУБД с открытым исходным кодом, поддерживающая + расширенный набор функций, транзакции и хранение сложных типов данных. Развёртывание полностью автоматизировано платформой на базе Zalando Postgres Operator с использованием Kubernetes.

## Доступные + операции

- **create** — Создание кластера
- **delete** — Удаление кластера
- **modify** — Модификация кластера
- **suspend** — Остановка кластера
- **resume** — + Запуск кластера
- **restart** — Перезапуск кластера
- **recovery** — Восстановление из резервной копии

- **create_user** — Создание пользователя
- **delete_user** — Удаление + пользователя

- **create_database** — Создание базы данных
- **delete_database** — Удаление базы данных


---
## 2. Параметры развертывания кластера

Ниже перечислены + параметры, которые необходимо указать при создании ресурса PostgreSQL:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в которой будет развернут кластер). Пример: + `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество инстансов (реплик) в кластере PostgreSQL. Пример: `2` (master + slave).

* **Квота (megabyte) памяти пода:**
Квота + памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска для базы + данных:**
Размер диска для хранения данных в гигабайтах. Пример: `20`

* **Выделяет внешний IP для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для доступа + к master. Пример: `true` или `false`

* **Имя ipSpace для публикации внешнего IP master:**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`

* + **Выделяет внешний IP для доступа к slave:**
Флаг для выделения внешнего IP для slave (реплики чтения). Работает, если slave присутствует в кластере.

* **Имя ipSpace для публикации внешнего + IP slave:**
Если включен параметр для slave, то поле необходимо заполнить.

* **UUID экземпляра услуги S3:**
UUID экземпляра S3 для хранения резервных копий.

* **Версия PostgreSQL:**
Версия + PostgreSQL для развертывания. Пример: `16`

* **Расписание бэкапов (ext_BACKUP_SCHEDULE):**
Необязательный. Cron-выражение для времени запуска бэкапов. По умолчанию: `0 0 * * *` (ежедневно + в полночь).

* **Количество сохраняемых бэкапов (ext_BACKUP_NUM_TO_RETAIN):**
Необязательный. Количество сохраняемых бэкапов. По умолчанию: `7`

* **PgPooler (master / slave):**
Флаги + включения PgBouncer для подключений на запись и чтение. При включении создаётся отдельный под.

* **Разрешить подключение без SSL (allowNoSSL):**
По умолчанию подключение с sslmode=require. + При `true` разрешается подключение без SSL.

* **Автоскейлинг PV (autoScale):**
Включает автоскейлинг тома. Требует настройки autoScalePercentage, autoScaleTechWindow, autoScaleQuotaGb.

* + **Дополнительные параметры PostgreSQL (jsonParameters):**
JSON с переменными конфигурации PostgreSQL. Документация: https://www.postgresql.org/docs/current/runtime-config.html

---
## + 3. Выходные параметры

После успешного развертывания ресурса PostgreSQL платформа возвращает ряд параметров.

#### externalConnect

Внешние эндпоинты для подключения к кластеру:
- + **master** — для операций записи (host: `write.${namespace}`, port: 5432)
- **slave** — для операций чтения (host: `read.${namespace}`, port: 5432)

Пример ответа платформы:

```json
{
"slave": + {
"ip": "",
"fqdn": "",
"uuid": "",
"isExternal": false
},
"master": {
"ip": "",
"fqdn": "write..",
"uuid": + "",
"isExternal": false
}
}
```

Поля: `ip` — внешний IP; `fqdn` — полное имя хоста; `uuid` — идентификатор; `isExternal` — признак внешнего доступа.

#### + internalConnect

Внутренние эндпоинты (FQDN) для подключения из других сервисов внутри той же сети Kubernetes.

Пример ответа платформы:

```json
{
"slave": "",
"master": + {
"slave": "",
"master": {
"slave": "",
"master": "postgresqlk8s-master..svc.cluster.local"
}
}
}
```

Для подключения используйте + значение `master.master.master` (host для записи) или соответствующее значение slave (host для чтения).

Для подключения используется порт **5432**.

---
## 4. Управление пользователями

### + create_user — Создание пользователя

* **Имя пользователя (username):**
Имя создаваемого пользователя. Используется для подключения к базе и настройки прав.
Пример: `myapp_user`

* + **Роль (role):**
Тип роли пользователя. Допустимые значения:
- `app_user` — базовые права для DML-операций (SELECT, INSERT, UPDATE, DELETE)
- `ddl_user` — расширенные права: createdb, + createrole (управление базами и ролями)

Защищённые имена, которые нельзя использовать: `admin`, `postgres`, `standby`.

### delete_user — Удаление пользователя

* **Имя пользователя + (username):**
Имя удаляемого пользователя. Пример: `myapp_user`

Пользователя нельзя удалить, если он является владельцем базы данных. Сначала удалите или передайте владение базами данных + другому пользователю.

---
## 5. Управление базами данных

### create_database — Создание базы данных

* **Имя базы данных (dbName):**
Название создаваемой базы данных. + Пример: `myapp_db`

* **Владелец базы данных (dbOwner):**
Имя пользователя-владельца базы. Должен существовать в кластере (создан через create_user). Пример: `myapp_user`

### delete_database + — Удаление базы данных

* **Имя базы данных (dbName):**
Название удаляемой базы данных. Пример: `myapp_db`
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 19 + operation: create + kind: instance + action: create +- svcOperationId: 264 + operation: create_backup + kind: subresource + action: create +- svcOperationId: 245 + operation: create_database + kind: subresource + action: create +- svcOperationId: 241 + operation: create_user + kind: subresource + action: create +- svcOperationId: 20 + operation: delete + kind: instance + action: delete +- svcOperationId: 246 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 244 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 48 + operation: modify + kind: instance + action: modify +- svcOperationId: 263 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 47 + operation: recovery + kind: action + action: recovery +- svcOperationId: 54 + operation: restart + kind: action + action: restart +- svcOperationId: 114 + operation: resume + kind: instance + action: resume +- svcOperationId: 115 + operation: suspend + kind: instance + action: suspend +stateOut: + backups: {} + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 788 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 789 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 790 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 791 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '17' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerMaster: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 792 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 793 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 794 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1094 + svcOperationCfsParam: mtlsConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '{}' + isModifiable: true + dataDescriptor: + certServer: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + type: + dataType: string + defaultValue: 'off' + isRequired: true + isModifiable: false + valueList: + - 'off' + - manual + - auto + durationCA: + dataType: integer > 0 + defaultValue: '175200' + isRequired: true + isModifiable: false + durationServer: + dataType: integer > 0 + defaultValue: '87600' + isRequired: true + isModifiable: false + certCA: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 741 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 742 + svcOperationCfsParam: dbOwner + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 733 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 740 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - app_user + - ddl_user +- svcOperationCfsParamId: 1096 + svcOperationCfsParam: mtlsAccess + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 457 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 743 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 739 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 795 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 796 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 797 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: false,true + isRequired: true + isModifiable: false + poolerMaster: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 798 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections +- svcOperationCfsParamId: 799 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 800 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' +- svcOperationCfsParamId: 1095 + svcOperationCfsParam: mtlsConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + durationCA: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + durationServer: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + certCA: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + certServer: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + refreshCert: + dataType: boolean + defaultValue: 'false' + isRequired: false + isModifiable: false + valueList: + - 'false' + - 'true' + type: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'off' + - manual + - auto +- svcOperationCfsParamId: 801 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 + recoveryPoint: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 802 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 803 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 804 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '17' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerMaster: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 805 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 806 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 807 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +cfsParamsByOp: + 19: + - 788 + - 789 + - 790 + - 791 + - 792 + - 793 + - 794 + - 1094 + 264: [] + 245: + - 741 + - 742 + 241: + - 733 + - 740 + - 1096 + 20: + - 457 + 246: + - 743 + 244: + - 739 + 48: + - 795 + - 796 + - 797 + - 798 + - 799 + - 800 + - 1095 + 263: [] + 47: + - 801 + - 802 + - 803 + - 804 + - 805 + - 806 + - 807 + 54: [] + 114: [] + 115: [] +stateParams: + clusterConfiguration: '{"replicas": 1, "disk": 10, "cpu": 500, "memory": 512}' + startupConfiguration: '{"resourceRealm": ""}' + accessConfiguration: '{"slaveAccessList": "[]", "masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": ""}' + postgresConfiguration: '{"version": "17", "sslRequired": true, "poolerMaster": false, "poolerSlave": false}' + postgresConf: '{"paramName": "", "paramValue": ""}' + backupConfiguration: '{"s3Uid": "", "retain": 7, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"percent": 10, "enabled": false, "schedule": 0, "quota": 100}' + mtlsConfiguration: '{"certServer": "", "type": "off", "durationCA": 175200, "durationServer": 87600, "certCA": ""}' diff --git a/site/services/stand2/91_redis.yaml b/site/services/stand2/91_redis.yaml new file mode 100644 index 0000000..4b57253 --- /dev/null +++ b/site/services/stand2/91_redis.yaml @@ -0,0 +1,186 @@ +name: redis +service_id: 91 +service_display_name: Redis +service_short_name: redis +service_man: 'Redis кластер. Под кеши.
Ресурсная платформа: k8s.
Автоматизация: k8s operator
port 6379' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 21 + operation: create + kind: instance + action: create +- svcOperationId: 22 + operation: delete + kind: instance + action: delete +- svcOperationId: 394 + operation: modify + kind: instance + action: modify +- svcOperationId: 391 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 393 + operation: resume + kind: instance + action: resume +- svcOperationId: 392 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1061 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1062 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1063 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1064 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1065 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 21: + - 1061 + - 1062 + - 1063 + 22: [] + 394: + - 1064 + - 1065 + 391: [] + 393: [] + 392: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 500, "memory": 512, "replicas": 1, "disk": 10}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' diff --git a/site/services/stand2/92_mongodb.yaml b/site/services/stand2/92_mongodb.yaml new file mode 100644 index 0000000..875ae41 --- /dev/null +++ b/site/services/stand2/92_mongodb.yaml @@ -0,0 +1,267 @@ +name: mongodb +service_id: 92 +service_display_name: MongoDB +service_short_name: mongodb +service_man: '# Инструкция по развертыванию MongoDB через платформу

## 1. Общая информация

MongoDB — документоориентированная распределённая база данных, обеспечивающая высокую доступность, + горизонтальное масштабирование и гибкую модель хранения.

### Доступные операции с кластером

* **create** — создание базы
* **delete** — удаление базы данных
* **suspend** — + остановка базы данных
* **resume** — запуск базы данных
* **modify** — изменение базы данных

### Доступные операции с пользователями

* **create_user** — создание пользователя
* + **modify_user** — модификация пользователя
* **delete_user** — удаление пользователя

---

## 2. Параметры развертывания базы данных

Эти параметры необходимо указать при создании + базы данных.

### Платформа для развертывания

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

### Количество узлов

Количество реплик в + кластере MongoDB.
Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> + **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### + Квота CPU пода (mCPU)

CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных в гигабайтах.
Пример: + `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: + `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: + `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры модификации базы данных

Все параметры, которые вы указываете при модификации, являются необязательными — система автоматически + подставит ранее сохранённые значения, и при необходимости вы можете изменить их на нужные.

### Количество узлов

Количество реплик в кластере MongoDB.
Оптимально выбирать нечётное + значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> **Примечание:** уменьшение количества узлов + после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### Квота CPU пода (mCPU)

CPU-квота + для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных указывается в гигабайтах. Его можно увеличить при + необходимости, однако уменьшить уже выделенный размер невозможно.
Пример: `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для + доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, + с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры создания пользователя

### + Имя пользователя

Указывается имя пользователя (любой регистр).
Пример: `readApp`

### Имя базы данных

Название базы, в которой будет создан пользователь.
Если база отсутствует, + она будет создана автоматически.
Пример: `Apps_9392`

### Имя роли

* **read** — доступ только на чтение
* **readWrite** — чтение и изменение данных
* **dbOwner** — полный + контроль над базой данных

---

## 4. Параметры модификации пользователя

### Имя пользователя

Необходимо выбрать существующего пользователя.
Если список пуст, требуется + предварительно создать пользователя.

### Имя базы данных

База данных, к которой относится пользователь.
Если база отсутствует, она будет создана автоматически.
Пример: `Apps_9392`

### + Имя роли

* **read**
* **readWrite**
* **dbOwner**

---

## 5. Параметры удаления пользователя

### Имя пользователя

Выберите пользователя из списка для + удаления.

---

## 6. Выходные параметры

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

### internalConnect

Внутренний эндпоинт + для подключения к кластеру из сервисов, работающих в той же сети.
Используется для внутренних интеграций и системных сервисов.

### externalConnect

Внешний FQDN для подключения к + кластеру извне.
Порт подключения — **27017**.

---

## 7. Пример подключения

Перед подключением необходимо установить **mongosh**.

Команда подключения к базе данных:

```
mongosh + "mongodb://:@:27017/"
```

Где:

* `` — имя пользователя
* `` — пароль
* `` — internalConnect или + externalConnect
* `` — имя базы данных

## 8. Дополнительная информация

Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину + и паролю.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 37 + operation: create + kind: instance + action: create +- svcOperationId: 198 + operation: create_user + kind: subresource + action: create +- svcOperationId: 190 + operation: delete + kind: instance + action: delete +- svcOperationId: 199 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 201 + operation: modify + kind: instance + action: modify +- svcOperationId: 200 + operation: modify_user + kind: subresource + action: modify +- svcOperationId: 409 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 196 + operation: resume + kind: instance + action: resume +- svcOperationId: 194 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 1089 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1090 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1091 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 635 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 636 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 643 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - dbOwner + - read + - readWrite +- svcOperationCfsParamId: 644 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1092 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1093 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 640 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 641 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 642 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - dbOwner + - read + - readWrite +cfsParamsByOp: + 37: + - 1089 + - 1090 + - 1091 + 198: + - 635 + - 636 + - 643 + 190: [] + 199: + - 644 + 201: + - 1092 + - 1093 + 200: + - 640 + - 641 + - 642 + 409: [] + 196: [] + 194: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 1024, "replicas": 1, "disk": 5}' + accessConfiguration: '{"masterAccessList": "[]", "masterIpSpace": ""}' diff --git a/site/services/stand2/93_rabbitmq.yaml b/site/services/stand2/93_rabbitmq.yaml new file mode 100644 index 0000000..e272bee --- /dev/null +++ b/site/services/stand2/93_rabbitmq.yaml @@ -0,0 +1,196 @@ +name: rabbitmq +service_id: 93 +service_display_name: RabbitMQ +service_short_name: rabbitmq +service_man: '# Инструкция по развертыванию RabbitMQ через платформу

---
## 1. Общая информация
RabbitMQ — это брокер сообщений с открытым исходным кодом, который обеспечивает надёжную + доставку сообщений между приложениями.
Позволяет надёжно передавать сообщения между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. + Развёртывание полностью автоматизировано платформой.

## Доступные операции
- **create** — Создание кластера
- **modify** — Изменение параметров кластера
- **delete** — Удаление + кластера
- **suspend** — Остановка кластера
- **resume** — Запуск кластера


---
## 2. Параметры развертывания кластера
Ниже перечислены параметры, которые необходимо + указать при создании ресурса RabbitMQ:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.

* + **Количество узлов в сети:**
Количество реплик в кластере RabbitMQ. При значении больше 1 создаётся кластер с репликацией для обеспечения высокой доступности.
Пример: `1` (single node) или + `3` (кластер с репликацией)

* **Квота (megabyte) памяти пода:**
Квота памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах + (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска для базы данных:**
Размер диска для хранения данных RabbitMQ в гигабайтах. Пример: `50`

* **Выделяет внешний IP + для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-узлу. При включении создаётся Service типа LoadBalancer и настраивается VIP на порту 5672.
Пример: + `true` или `false`

* **Имя ipSpace для публикации внешнего IP master:**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`


---
## + 3. Модификация кластера
Операция **modify** позволяет изменить параметры существующего кластера RabbitMQ.

**Изменяемые параметры:**
* **Квота (megabyte) памяти пода** — можно увеличить + или уменьшить
* **Квота (millicore) ядра пода** — можно увеличить или уменьшить
* **Размер (gigabyte) диска для базы данных** — можно только увеличить (уменьшение не поддерживается)
* **Количество + узлов в сети** — можно только увеличить (уменьшение не поддерживается)
* **Выделяет внешний IP для доступа к master** — можно включить или выключить
* **Имя ipSpace для публикации внешнего IP + master** — можно изменить при включенном внешнем IP

**Ограничения:**
* Уменьшение размера диска не поддерживается
* Уменьшение количества реплик не поддерживается

---
## + 4. Выходные параметры
После успешного развертывания ресурса RabbitMQ платформа возвращает ряд параметров в разделе "Поля состояния (сгенерированные значения)":

**clusterDomain**
Домен + кластера Kubernetes, в котором развернут RabbitMQ.
Пример: `cluster.local`

**inernalConnect**
Внутренние эндпоинты для подключения к кластеру RabbitMQ из других сервисов, развернутых + внутри той же сети.
Содержит:
* **master** — FQDN для подключения к кластеру. Пример: `rabbitmqk8s.{namespace}.svc.{clusterDomain}`

**externalConnect**
Внешние эндпоинты для подключения + к кластеру RabbitMQ извне.
Содержит объекты с полями:
* **admin** — доступ к веб-интерфейсу управления:
* `fqdn` — полное доменное имя для веб-интерфейса. Пример: `admin.{namespace}.{domain}`
* + `ip` — IP-адрес
* **master** — доступ к AMQP протоколу (если включен внешний IP):
* `fqdn` — полное доменное имя для AMQP. Пример: `write.{namespace}.{domain}`
* `ip` — IP-адрес

**monitoring**
Информация + о дашбордах мониторинга:
* **allDashboards** — URL для доступа ко всем дашбордам Grafana

Для подключения используются следующие порты:

* **5672** — AMQP протокол (внутренний и внешний + доступ, если включен внешний IP)
* **15672** — веб-интерфейс управления (доступен через Ingress по HTTPS)

**Учётные данные**
Данные для подключения к RabbitMQ доступны в разделе "Учётные + данные":
* **adminUser** — имя пользователя администратора
* **adminPass** — пароль администратора


---
## 5. Примеры подключения через консоль (rabbitmqadmin)

### Работа + с очередями через rabbitmqadmin

Для работы с RabbitMQ через консоль используется утилита `rabbitmqadmin`. Установите её или используйте образ с предустановленной утилитой.

Задайте переменные + окружения с учётными данными:

```bash
export RABBITMQ_USERNAME=
export RABBITMQ_PASSWORD=
export RABBIT_HOST=
```

Где:
* `` + и `` — учётные данные из раздела "Учётные данные"
* `` — адрес для подключения:
* Для внешнего подключения: `externalConnect.admin.fqdn` или `externalConnect.master.fqdn`

**Создание + очереди:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
declare queue name=healthcheck durable=false
```

**Листинг + очередей:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
list queues
```

**Отправка сообщения:**

```bash
rabbitmqadmin + \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
publish exchange=amq.default routing_key=healthcheck payload="ping-$(date +%s)"
```

**Чтение + сообщения:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
get queue=healthcheck ackmode=ack_requeue_false
```

---
## + 6. Дополнительная информация
Для подключения к кластеру RabbitMQ используйте полученные эндпоинты из раздела "Поля состояния (сгенерированные значения)" и учётные данные из раздела "Учётные данные".

Веб-интерфейс + управления доступен по адресу, указанному в параметре `externalConnect.admin.fqdn` через HTTPS.

Для внутреннего подключения используйте адрес из `inernalConnect.master` на порту 5672.

---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 38 + operation: create + kind: instance + action: create +- svcOperationId: 39 + operation: delete + kind: instance + action: delete +- svcOperationId: 106 + operation: modify + kind: instance + action: modify +- svcOperationId: 410 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 117 + operation: resume + kind: instance + action: resume +- svcOperationId: 116 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1097 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1098 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1099 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1100 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1101 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 38: + - 1097 + - 1098 + - 1099 + 39: [] + 106: + - 1100 + - 1101 + 410: [] + 117: [] + 116: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 1024, "replicas": 1, "disk": 5}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' diff --git a/site/services/stand2/94_lucee.yaml b/site/services/stand2/94_lucee.yaml new file mode 100644 index 0000000..222671d --- /dev/null +++ b/site/services/stand2/94_lucee.yaml @@ -0,0 +1,228 @@ +name: lucee +service_id: 94 +service_display_name: Lucee +service_short_name: lucee +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 49 + operation: create + kind: instance + action: create +- svcOperationId: 50 + operation: delete + kind: instance + action: delete +- svcOperationId: 55 + operation: modify + kind: instance + action: modify +- svcOperationId: 373 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 53 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 163 + operation: restart + kind: action + action: restart +- svcOperationId: 95 + operation: resume + kind: instance + action: resume +- svcOperationId: 96 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1019 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1020 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1021 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: lucee-tepsq9jk + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1022 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '6.0' + isRequired: true + isModifiable: false + valueList: + - '5.4' + - '6.0' + gitPath: + dataType: string + defaultValue: https://github.com/xahys/testlucee + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1023 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1024 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1025 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '6.0' + - '5.4' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1026 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1027 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +cfsParamsByOp: + 49: + - 1019 + - 1020 + - 1021 + - 1022 + - 1023 + 50: [] + 55: + - 1024 + - 1025 + - 1026 + 373: [] + 53: + - 1027 + 163: [] + 95: [] + 96: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "lucee-tepsq9jk"}' + appConfiguration: '{"version": "6.0", "gitPath": "https://github.com/xahys/testlucee", "healthPath": ""}' + jsonEnv: '{}' diff --git a/site/services/stand2/95_nodejs.yaml b/site/services/stand2/95_nodejs.yaml new file mode 100644 index 0000000..cde802c --- /dev/null +++ b/site/services/stand2/95_nodejs.yaml @@ -0,0 +1,229 @@ +name: nodejs +service_id: 95 +service_display_name: NodeJS +service_short_name: nodejs +service_man: Развертывает контейнер в k8s кластере с node, который можно использовать для запуска своих приложений.
Приложение должно быть доступно по ссылки в git репозитории, которая является входным + параметром. +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 58 + operation: create + kind: instance + action: create +- svcOperationId: 61 + operation: delete + kind: instance + action: delete +- svcOperationId: 59 + operation: modify + kind: instance + action: modify +- svcOperationId: 374 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 60 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 121 + operation: resume + kind: instance + action: resume +- svcOperationId: 120 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1028 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 1029 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1030 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: node-btf263ja + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1031 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '23' + isRequired: true + isModifiable: false + valueList: + - '18' + - '20' + - '22' + - '23' + gitPath: + dataType: string + defaultValue: https://github.com/xahys/testnode.git + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1032 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1033 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1034 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '18' + - '20' + - '22' + - '23' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1035 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1036 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +cfsParamsByOp: + 58: + - 1028 + - 1029 + - 1030 + - 1031 + - 1032 + 61: [] + 59: + - 1033 + - 1034 + - 1035 + 374: [] + 60: + - 1036 + 121: [] + 120: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "node-btf263ja"}' + appConfiguration: '{"version": "23", "gitPath": "https://github.com/xahys/testnode.git", "healthPath": ""}' + jsonEnv: '{}' diff --git a/site/services/stand2/96_pgadmin.yaml b/site/services/stand2/96_pgadmin.yaml new file mode 100644 index 0000000..21b01b3 --- /dev/null +++ b/site/services/stand2/96_pgadmin.yaml @@ -0,0 +1,137 @@ +name: pgadmin +service_id: 96 +service_display_name: pgAdmin +service_short_name: pgadmin +service_man: Инструмент с графическим интерфейсом для управления базами данных PostgreSQL +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 62 + operation: create + kind: instance + action: create +- svcOperationId: 63 + operation: delete + kind: instance + action: delete +- svcOperationId: 64 + operation: modify + kind: instance + action: modify +- svcOperationId: 65 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 123 + operation: resume + kind: instance + action: resume +- svcOperationId: 122 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 164 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: pgadmin-1 + isModifiable: false +- svcOperationCfsParamId: 165 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 166 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 167 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 169 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 170 + svcOperationCfsParam: login + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 171 + svcOperationCfsParam: password + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 172 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 173 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 174 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 277 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +cfsParamsByOp: + 62: + - 164 + - 165 + - 166 + - 167 + - 169 + - 170 + - 171 + 63: [] + 64: + - 172 + - 173 + - 174 + 65: + - 277 + 123: [] + 122: [] +stateParams: + domain: pgadmin-1 + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceRealm: '' + login: '' + password: '' diff --git a/site/services/stand2/98_http.yaml b/site/services/stand2/98_http.yaml new file mode 100644 index 0000000..bac88b4 --- /dev/null +++ b/site/services/stand2/98_http.yaml @@ -0,0 +1,149 @@ +name: http +service_id: 98 +service_display_name: Простой HTTP контейнер +service_short_name: http +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 77 + operation: create + kind: instance + action: create +- svcOperationId: 78 + operation: delete + kind: instance + action: delete +- svcOperationId: 81 + operation: modify + kind: instance + action: modify +- svcOperationId: 403 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 79 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 130 + operation: resume + kind: instance + action: resume +- svcOperationId: 131 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 212 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: http-1 + isModifiable: false +- svcOperationCfsParamId: 213 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '100' + isModifiable: true +- svcOperationCfsParamId: 214 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 215 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 216 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +- svcOperationCfsParamId: 217 + svcOperationCfsParam: registryPath + dataType: string + isRequired: true + defaultValue: nexus-sa.tst.nubes.ru/docker-nubes/jolt + isModifiable: false +- svcOperationCfsParamId: 241 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 782 + svcOperationCfsParam: ingressAnnotations + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: false +- svcOperationCfsParamId: 218 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 219 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 220 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 272 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - iot-naeel + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + - naeel-test-3 +cfsParamsByOp: + 77: + - 212 + - 213 + - 214 + - 215 + - 216 + - 217 + - 241 + - 782 + 78: [] + 81: + - 218 + - 219 + - 220 + 403: [] + 79: + - 272 + 130: [] + 131: [] +stateParams: + domain: http-1 + resourceCPU: '100' + resourceMemory: '200' + resourceInstances: '1' + resourceRealm: '' + registryPath: nexus-sa.tst.nubes.ru/docker-nubes/jolt + jsonEnv: '' + ingressAnnotations: '{}' diff --git a/site/services/stand2/99_gitea.yaml b/site/services/stand2/99_gitea.yaml new file mode 100644 index 0000000..82f15db --- /dev/null +++ b/site/services/stand2/99_gitea.yaml @@ -0,0 +1,164 @@ +name: gitea +service_id: 99 +service_display_name: Gitea +service_short_name: gitea +service_man: '# Инструкция по развертыванию Gitea через платформу

---
## 1. Общая информация
Gitea — это лёгкий, быстрый и самодостаточный сервис хостинга Git-репозиториев с веб-интерфейсом.
Позволяет + создавать и управлять репозиториями, организациями, командами, а также настраивать CI/CD через интеграции.
Развёртывание полностью автоматизировано платформой.

## Доступные операции
- + **create** — Создание сервиса Gitea
- **delete** — Удаление сервиса Gitea
- **modify** — Модификация сервиса Gitea
- **suspend** — Остановка сервиса Gitea
- **resume** — + Запуск сервиса Gitea

---
## 2. Параметры развертывания
Ниже перечислены параметры, которые необходимо указать при создании ресурса Gitea:

* **Платформа для развертывания:**
Платформа + для развертывания (среда, в которой будет развёрнут сервис). Пример: `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество реплик подов Gitea. Пример: `1`

* **Квота (megabyte) + памяти пода:**
Квота памяти пода в мегабайтах. Пример: `1024`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`

* **Размер + (gigabyte) диска для базы данных:**
Размер PVC для хранения репозиториев и данных Gitea в гигабайтах. Пример: `10`

* **FQDN / Домен:**
Доменное имя, по которому будет доступен сервис. + Пример: `git.example.com`

* **Инстанс услуги PostgreSQL:**
UUID услуги k8sPgsql, в которой будет создана база данных `gitea` и пользователь `techgitea`.

* **Дополнительные параметры + сервера (iniServerParams):**
JSON-объект с дополнительными параметрами секции `[server]` в `app.ini`. Пример:
```json
{"MAX_CONTENT_LENGTH": "524288000"}
```

* **Дополнительные + annotations для Ingress (ingressExtraAnnotations):**
JSON-объект с дополнительными annotations для Ingress-контроллера. Пример:
```json
{"nginx.ingress.kubernetes.io/proxy-body-size": + "500m"}
```

---
## 3. Особенности подключения и работы с репозиториями

### 3.1. Доступ только по HTTPS
Сервис развёртывается с **rootless-образом** Gitea. SSH-сервер внутри + и он **доступен только внутри кластера Kubernetes**.

**Внешний доступ к репозиториям осуществляется исключительно по HTTPS через Ingress.**

```bash
# Пример клонирования
https://<домен>/<пользователь>/<репозиторий>.git
```

### + 3.2. Настройка git для передачи логина и пароля
Для работы с приватными репозиториями через HTTPS необходимо передать учётные данные. Рекомендуется использовать один из следующих способов:

**Встроить + креды в URL remote**
```bash
git remote set-url origin https://<логин>:<пароль>@<домен>/<пользователь>/<репозиторий>.git
```
> **Важно:** Логин и пароль администратора создаются автоматически + при развертывании и хранятся в Vault.

### 3.3. Работа с большими файлами
По умолчанию `MAX_CONTENT_LENGTH` установлен в **500 МБ**, а Ingress пропускает pack-файлы до **500 МБ**.

Если + необходимо запушить файлы близкие к лимиту, увеличьте HTTP-буфер git на стороне клиента:
```bash
git config http.postBuffer 524288000
```

Для файлов **более 500 МБ** рекомендуется + использовать **Git LFS**.

---
## 4. Выходные параметры
После успешного развертывания ресурса Gitea платформа возвращает ряд параметров.

Ключевым из них является:

**connectionUrl**
Это + внешний URL для доступа к веб-интерфейсу и Git-репозиториям по HTTPS. Пример:
```
https://git.example.com
```

**internalConnect**
Внутренний эндпоинт для подключения к PostgreSQL + из других сервисов внутри кластера.

---
## 5. Дополнительная информация
- База данных `gitea` и пользователь `techgitea` создаются автоматически в указанной услуге PostgreSQL.
- DNS-запись + и TLS-сертификат (Let''s Encrypt) настраиваются автоматически на основе указанного домена.
- Для изменения параметров сервера Gitea (`app.ini`) используйте операцию **modify** с полем `iniServerParams`.
- + Для добавления дополнительных Ingress-annotations используйте операцию **modify** с полем `ingressExtraAnnotations`.
---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 82 + operation: create + kind: instance + action: create +- svcOperationId: 83 + operation: delete + kind: instance + action: delete +- svcOperationId: 91 + operation: modify + kind: instance + action: modify +- svcOperationId: 127 + operation: resume + kind: instance + action: resume +- svcOperationId: 126 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 232 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 233 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 234 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 235 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 237 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: gitea-1 + isModifiable: false +- svcOperationCfsParamId: 238 + svcOperationCfsParam: psqlUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 818 + svcOperationCfsParam: ingressExtraAnnotations + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 821 + svcOperationCfsParam: iniServerParams + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 259 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 260 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 261 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 262 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 819 + svcOperationCfsParam: ingressExtraAnnotations + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 820 + svcOperationCfsParam: iniServerParams + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 82: + - 232 + - 233 + - 234 + - 235 + - 237 + - 238 + - 818 + - 821 + 83: [] + 91: + - 259 + - 260 + - 261 + - 262 + - 819 + - 820 + 127: [] + 126: [] +stateParams: + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceInstances: '1' + domain: gitea-1 + psqlUid: '' + ingressExtraAnnotations: '' + iniServerParams: '' diff --git a/site/services/stand3/109_zones_v2.yaml b/site/services/stand3/109_zones_v2.yaml new file mode 100644 index 0000000..26c6972 --- /dev/null +++ b/site/services/stand3/109_zones_v2.yaml @@ -0,0 +1,258 @@ +name: zones_v2 +service_id: 109 +service_display_name: Управление DNS +service_short_name: zonesV2 +service_man: '# Управление DNS

## Что делает сервис

Управляет DNS-зоной вашего домена в инфраструктуре `ngcloud.ru`.
Сервис помогает:

- создать DNS-зону;
- поддерживать + записи в зоне (добавлять, удалять, массово менять);
- удалять зону;
- синхронизировать данные зоны с фактическим состоянием на DNS-серверах.

Сервис работает с авторитетными DNS-серверами + зоны:

- `ns3.ngcloud.ru`
- `185.247.187.83`
- `2a10:aa80:0:5::3`
- `ns4.ngcloud.ru`
- `81.22.46.43`
- `2a10:aa80:0:6::3`

## Очень важно: что сделать у регистратора + домена

Чтобы зона действительно начала обслуживаться, **нужно делегировать домен** у регистратора на авторитетные DNS-серверы:

- `ns3.ngcloud.ru`
- `ns4.ngcloud.ru`

В панели + регистратора нужно заменить NS-серверы домена на значения выше.
Без этого записи в зоне могут быть созданы, но интернет не будет использовать их для вашего домена.

## Проверка после настройки

Проверить + ответы от серверов зоны:

```bash
dig <ваш_домен> @ns3.ngcloud.ru
dig <ваш_домен> @ns4.ngcloud.ru
```

Проверить, что делегирование у регистратора применилось:

```bash
dig + <ваш_домен> NS
```

В ответе должны быть `ns3.ngcloud.ru` и `ns4.ngcloud.ru`.
' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 254 + operation: create + kind: instance + action: create +- svcOperationId: 260 + operation: create_record + kind: subresource + action: create +- svcOperationId: 255 + operation: delete + kind: instance + action: delete +- svcOperationId: 261 + operation: delete_record + kind: subresource + action: delete +- svcOperationId: 256 + operation: modify + kind: instance + action: modify +- svcOperationId: 262 + operation: modify_record + kind: subresource + action: modify +- svcOperationId: 259 + operation: reconcile + kind: action + action: reconcile +stateOut: + records: {} +cfsParams: +- svcOperationCfsParamId: 761 + svcOperationCfsParam: zoneName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 762 + svcOperationCfsParam: zoneKind + dataType: string + isRequired: true + defaultValue: NATIVE + isModifiable: false + valueList: + - NATIVE + - SLAVE +- svcOperationCfsParamId: 763 + svcOperationCfsParam: zoneMastersForSlave + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 764 + svcOperationCfsParam: zoneRefresh + dataType: integer > 0 + isRequired: true + defaultValue: '86400' + isModifiable: false +- svcOperationCfsParamId: 765 + svcOperationCfsParam: zoneRetry + dataType: integer > 0 + isRequired: true + defaultValue: '7200' + isModifiable: false +- svcOperationCfsParamId: 766 + svcOperationCfsParam: zoneExpire + dataType: integer > 0 + isRequired: true + defaultValue: '3600000' + isModifiable: false +- svcOperationCfsParamId: 767 + svcOperationCfsParam: zoneTTL + dataType: integer > 0 + isRequired: true + defaultValue: '86400' + isModifiable: false +- svcOperationCfsParamId: 768 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: powerdns + isModifiable: false + valueList: + - powerdns +- svcOperationCfsParamId: 777 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 778 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '3600' + isModifiable: false +- svcOperationCfsParamId: 779 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: A + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 780 + svcOperationCfsParam: recordInput + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + record: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 781 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 769 + svcOperationCfsParam: records + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + recordName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + recordTTL: + dataType: integer > 0 + defaultValue: '3600' + isRequired: true + isModifiable: false + recordType: + dataType: string + defaultValue: A + isRequired: true + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP + - CAA + recordInput: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 783 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 784 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 785 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - A + - AAAA + - CNAME + - MX + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 786 + svcOperationCfsParam: recordInput + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + record: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 254: + - 761 + - 762 + - 763 + - 764 + - 765 + - 766 + - 767 + - 768 + 260: + - 777 + - 778 + - 779 + - 780 + 255: [] + 261: + - 781 + 256: + - 769 + 262: + - 783 + - 784 + - 785 + - 786 + 259: [] +stateParams: + zoneName: '' + zoneKind: NATIVE + zoneMastersForSlave: '' + zoneRefresh: '86400' + zoneRetry: '7200' + zoneExpire: '3600000' + zoneTTL: '86400' + resourceRealm: powerdns diff --git a/site/services/stand3/111_dnsrecord.yaml b/site/services/stand3/111_dnsrecord.yaml new file mode 100644 index 0000000..e4c3e1b --- /dev/null +++ b/site/services/stand3/111_dnsrecord.yaml @@ -0,0 +1,92 @@ +name: dnsrecord +service_id: 111 +service_display_name: DNS запись +service_short_name: dnsrecord +service_man: Необходима DNS зона, в которой будет создана DNS запись.
Выберите
* Зону в которой будет создана запись
* Тип записи
* Имя записи
* Значение записи +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 45 + operation: create + kind: instance + action: create +- svcOperationId: 46 + operation: delete + kind: instance + action: delete +- svcOperationId: 90 + operation: modify + kind: instance + action: modify +- svcOperationId: 408 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 75 + svcOperationCfsParam: zoneUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 76 + svcOperationCfsParam: recordType + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - A + - AAAA + - CNAME + - MX + - PTR + - SOA + - SRV + - TXT + - LUA + - NS + - SSHFP +- svcOperationCfsParamId: 77 + svcOperationCfsParam: recordName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 78 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 450 + svcOperationCfsParam: recordTTL + dataType: integer > 0 + isRequired: true + defaultValue: '3600' + isModifiable: false +- svcOperationCfsParamId: 256 + svcOperationCfsParam: recordInput + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 45: + - 75 + - 76 + - 77 + - 78 + - 450 + 46: [] + 90: + - 256 + 408: [] +stateParams: + zoneUid: '' + recordType: '' + recordName: '' + recordInput: '' + recordTTL: '3600' diff --git a/site/services/stand3/115_mariadb.yaml b/site/services/stand3/115_mariadb.yaml new file mode 100644 index 0000000..18f23c8 --- /dev/null +++ b/site/services/stand3/115_mariadb.yaml @@ -0,0 +1,406 @@ +name: mariadb +service_id: 115 +service_display_name: Mariadb +service_short_name: mariadb +service_man: 'Mariadb кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.
Автоматическое резервное копирование, ручное восстановление.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 138 + operation: create + kind: instance + action: create +- svcOperationId: 242 + operation: create_database + kind: subresource + action: create +- svcOperationId: 243 + operation: create_user + kind: subresource + action: create +- svcOperationId: 139 + operation: delete + kind: instance + action: delete +- svcOperationId: 248 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 247 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 142 + operation: modify + kind: instance + action: modify +- svcOperationId: 287 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 141 + operation: resume + kind: instance + action: resume +- svcOperationId: 140 + operation: suspend + kind: instance + action: suspend +stateOut: + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 877 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 878 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 879 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 880 + svcOperationCfsParam: mariadbConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: 9.4.0 + isRequired: true + isModifiable: false + valueList: + - 8.4.0 + - 9.4.0 +- svcOperationCfsParamId: 881 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '720' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 882 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 734 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: db-ebbjso21 + isModifiable: false +- svcOperationCfsParamId: 735 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: user3vanbmfy + isModifiable: false +- svcOperationCfsParamId: 736 + svcOperationCfsParam: password + dataType: string + isRequired: true + defaultValue: p4egnsar + isModifiable: false +- svcOperationCfsParamId: 737 + svcOperationCfsParam: dbName + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + dbname: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 738 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: '%' + isModifiable: false +- svcOperationCfsParamId: 456 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 745 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 744 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 883 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 884 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 885 + svcOperationCfsParam: mariadbConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 8.4.0 + - 9.4.0 +- svcOperationCfsParamId: 886 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 887 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 138: + - 877 + - 878 + - 879 + - 880 + - 881 + - 882 + 242: + - 734 + 243: + - 735 + - 736 + - 737 + - 738 + 139: + - 456 + 248: + - 745 + 247: + - 744 + 142: + - 883 + - 884 + - 885 + - 886 + - 887 + 287: [] + 141: [] + 140: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 500, "memory": 512, "replicas": 1, "disk": 10}' + accessConfiguration: '{"masterAccessList": "[]", "masterIpSpace": ""}' + mariadbConfiguration: '{"version": "9.4.0"}' + backupConfiguration: '{"s3Uid": "", "retain": 720, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"enabled": false, "schedule": 0, "quota": 100, "percent": 10}' diff --git a/site/services/stand3/116_kafka.yaml b/site/services/stand3/116_kafka.yaml new file mode 100644 index 0000000..e6a93cb --- /dev/null +++ b/site/services/stand3/116_kafka.yaml @@ -0,0 +1,347 @@ +name: kafka +service_id: 116 +service_display_name: ApacheKafka +service_short_name: kafka +service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу

## 1. Общая информация

Сервис **Организация в Cloud Director** предназначен для управления изолированными + организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль + уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.

### Доступные операции

**create** + — Создание новой организации с заданными характеристиками и типом доступа.
**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.
**modify** + — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).
**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.
**resume** + — Разморозка организации, восстановление функций управления.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: + платформа, на которой будет создана организация.
Пример значения: `ngcloud.ru`.

### Тип организации
Описание: тип создаваемой организации.
Варианты:
- `iaas` — организация с прямым + доступом к облаку и авторизацией через Keycloak.
- `saas` — организация под управлением Nubes, без прямого доступа к облаку.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.

### Промышленное окружение
- Тип организации: `saas` (упрощённая + модель использования).

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе операций):

### Идентификатор организации
Уникальный + идентификатор созданной организации. Используется для всех дальнейших API-операций.

### Статус организации
Отражает текущее состояние: active, suspended, modifying, deleting.

### + Параметры сети
Выходные данные при наличии ipSpaces: список выделенных внешних IP, имя ip_space, количество IP.

---

## 5. Дополнительная информация

- Для конфигурации внешних + IP внутри организации необходимо предварительно создать:
-- хотя бы один **Виртуальный датацентр (VDC)**;
-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный к этой организации.
- + Удаление организации возможно только через 14 дней после перевода в состояние suspend.
- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов IP, сетей, ВМок + и иных объектов.
- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.
- Для iaas-организаций доступ осуществляется через Keycloak.

' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 148 + operation: create + kind: instance + action: create +- svcOperationId: 165 + operation: create_topic + kind: subresource + action: create +- svcOperationId: 168 + operation: create_user + kind: subresource + action: create +- svcOperationId: 149 + operation: delete + kind: instance + action: delete +- svcOperationId: 167 + operation: delete_topic + kind: subresource + action: delete +- svcOperationId: 170 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 162 + operation: modify + kind: instance + action: modify +- svcOperationId: 166 + operation: modify_topic + kind: subresource + action: modify +- svcOperationId: 169 + operation: modify_user + kind: subresource + action: modify +- svcOperationId: 161 + operation: resume + kind: instance + action: resume +- svcOperationId: 160 + operation: suspend + kind: instance + action: suspend +stateOut: + topics: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 1084 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1085 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1086 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + allocationExternal: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 523 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 524 + svcOperationCfsParam: partitions + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 525 + svcOperationCfsParam: replicas + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 530 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 531 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 532 + svcOperationCfsParam: operations + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - Create + - Describe + - Read + - Write +- svcOperationCfsParamId: 533 + svcOperationCfsParam: group + dataType: string + isRequired: true + defaultValue: '*' + isModifiable: false +- svcOperationCfsParamId: 534 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: '*' + isModifiable: false +- svcOperationCfsParamId: 529 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 540 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1087 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1088 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + allocationExternal: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 526 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 527 + svcOperationCfsParam: partitions + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 528 + svcOperationCfsParam: replicas + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 535 + svcOperationCfsParam: nameTopic + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 536 + svcOperationCfsParam: operations + dataType: array + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - Create + - Describe + - Read + - Write +- svcOperationCfsParamId: 537 + svcOperationCfsParam: group + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 538 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: false + defaultValue: '*' + isModifiable: true +- svcOperationCfsParamId: 539 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 148: + - 1084 + - 1085 + - 1086 + 165: + - 523 + - 524 + - 525 + 168: + - 530 + - 531 + - 532 + - 533 + - 534 + 149: [] + 167: + - 529 + 170: + - 540 + 162: + - 1087 + - 1088 + 166: + - 526 + - 527 + - 528 + 169: + - 535 + - 536 + - 537 + - 538 + - 539 + 161: [] + 160: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 2000, "memory": 2048, "replicas": 0, "disk": 1}' + accessConfiguration: '{"allocationExternal": false, "masterAccessList": "[]"}' diff --git a/site/services/stand3/119_akhq.yaml b/site/services/stand3/119_akhq.yaml new file mode 100644 index 0000000..129e0c3 --- /dev/null +++ b/site/services/stand3/119_akhq.yaml @@ -0,0 +1,107 @@ +name: akhq +service_id: 119 +service_display_name: Akhq +service_short_name: Akhq +service_man: '# Инструкция по развертыванию Apache Kafka через платформу

---
## 1. Общая информация
AKHQ — это веб-интерфейс для работы с кластерами Apache Kafka.
Позволяет просматривать + топики, consumer group''ы, сообщения, ACL, схему безопасности, состояние брокеров и метаданные.
Поддерживает работу с несколькими кластерами Kafka одновременно, включая внутренние и внешние (TLS) + подключения.

## Доступные операции
- **create** — Создание ресурса AKHQ
- **suspend** — Остановка ресурса
- **resume** — Возобновление работы ресурса
- **modify** — + Модификация настроек
- **delete** — Удаление ресурса

---
## 2. Параметры развертывания кластера
Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:

* + **Кластер Kafka к которому нужно настроить подключение**
Для использования AKHQ необходимо предварительно развернуть сервис Kafka. Пример: `kafka-external`.

* **Платформа для развертывания:**
Платформа + для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество узлов для работы Akhq. Пример `2`

* **Квота + (megabyte) памяти пода:**
Квота памяти пода в мегабайтах. Пример: `512`

* **Квота (millicore ) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`

* **Имя + домена:**
Dns Имя по которому будет происходить обращение к сервису. Указать необходимо уникальное имя до . ( то есть если необходимо получить dns ui) Пример: `kafka-external`

---
## + 4. Выходные параметры
После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.
Ключевым из них является:

**connectionUrl**
Это полное доменное имя (FQDN), + по которому будет доступен интерфейс AKHQ. После развёртывания подождите несколько минут — UI станет доступен по HTTPS, как только все сервисы полностью запустятся.

**Учетные данные**
Здесь + представлены поля для ввода логина и пароля, с помощью которых вы сможете авторизоваться в сервисе.

---
## 5. Дополнительная информация
Учётные записи, созданные для работы с AKHQ, предоставляют + доступ только для просмотра данных. Для управления Kafka, пожалуйста, используйте возможности личного кабинета.
---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 175 + operation: create + kind: instance + action: create +- svcOperationId: 176 + operation: delete + kind: instance + action: delete +- svcOperationId: 180 + operation: modify + kind: instance + action: modify +- svcOperationId: 178 + operation: resume + kind: instance + action: resume +- svcOperationId: 177 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 550 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 551 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: false +- svcOperationCfsParamId: 552 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: false +- svcOperationCfsParamId: 553 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 554 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +- svcOperationCfsParamId: 555 + svcOperationCfsParam: kafkaUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 565 + svcOperationCfsParam: kafkaUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 175: + - 550 + - 551 + - 552 + - 553 + - 554 + - 555 + 176: [] + 180: + - 565 + 178: [] + 177: [] +stateParams: + resourceRealm: '' + resourceMemory: '512' + resourceCPU: '500' + domain: '' + resourceInstances: '1' + kafkaUid: '' diff --git a/site/services/stand3/120_clickhouse.yaml b/site/services/stand3/120_clickhouse.yaml new file mode 100644 index 0000000..a85941b --- /dev/null +++ b/site/services/stand3/120_clickhouse.yaml @@ -0,0 +1,521 @@ +name: clickhouse +service_id: 120 +service_display_name: ClickHouse +service_short_name: clickhouse +service_man: '# Инструкция по управлению кластерами и пользователями ClickHouse

---

## Общая информация

ClickHouse — это колоночная система управления базами данных, предназначенная + для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.

Кластер + создаётся через оператор Altinity (`https://github.com/Altinity/clickhouse-operator`) в ресурсной платформе типа `k8s`

Кластеры могут создаваться шардированными с произвольным количеством реплик. + Для обеспечения отказоустойчивости и координации обязательно включение параметра `Создать ClickHouse-Keeper`.

Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать + услугу `S3 Object Storage`.
---

## Доступные операции

* **create** — Создание кластера
* **delete** — Удаление кластера
* **suspend** — Приостановка работы кластера
* + **resume** — Возобновление работы кластера
* **create_database** — Создание базы данных
* **delete_database** — Удаление базы данных
* **create_user** — Создание пользователя и настройка + прав доступа к базе данных
* **delete_user** — Удаление пользователя

## Процесс создания и первого подключения

1. Выполнить операцию `create` - будет создан кластер
2. Выполнить + операцию `create_database` - будет создана база данных
3. Выполнить операцию `create_user` - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)

## Примеры подключения

### + Подключение через HTTP-интерфейс

```bash
# Проверка доступности кластера
curl "http://:@:8123/" -d "SELECT 1"

# Выполнение запроса
curl "http://:@:8123/" + -d "SHOW DATABASES"
```

## Простые кейсы
*Создать БД и обычной таблицы*
```clickhouse
CREATE TABLE database.table
(
id UInt64,
value String
)
ENGINE + = MergeTree()
ORDER BY id;

INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);

SELECT count() FROM database.table;
```
Базы и таблицы не реплицируются + без специального ключа (`ON CLUSTER ''clickhousek8s''`)
В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах


*Создание БД и шардированной + таблицы*
```clickhouse
CREATE TABLE database.localUsers
(
id UInt64,
value String
)
ENGINE = MergeTree()
ORDER BY id;

CREATE TABLE database.shardedTable
AS + localUsers
ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', id);

INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);

SELECT count() + FROM shardedTable;
```
Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse

*Создание реплицируемой и шардированной таблицы*
```clickhouse
CREATE + TABLE IF NOT EXISTS database.localUsers ON cluster ''clickhousek8s''
(
user_id UInt64,
name String,
email String
)
ENGINE = ReplicatedMergeTree(
''/clickhouse/tables/{shard}/localUsers'',
''{replica}''
)
ORDER + BY user_id;

CREATE TABLE IF NOT EXISTS database.users ON cluster ''clickhousek8s''
AS database.localUsers
ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', rand());

INSERT + INTO database.users VALUES (1, ''Alice'', ''alice@example.com'');
INSERT INTO database.users VALUES (2, ''Bob'', ''bob@example.com'');
INSERT INTO database.users VALUES (3, ''Charlie'', ''charlie@example.com'');
INSERT + INTO database.users VALUES (4, ''David'', ''david@example.com'');
INSERT INTO database.users VALUES (5, ''Gosha'', ''gosha@example.com'');
INSERT INTO database.users VALUES (6, ''Eve'', ''eve@example.com'');
INSERT + INTO database.users VALUES (7, ''Frank'', ''frank@example.com'');
INSERT INTO database.users VALUES (8, ''Grace'', ''grace@example.com'');
INSERT INTO database.users VALUES (9, ''Hannah'', ''hannah@example.com'');
INSERT + INTO database.users VALUES (10, ''Ivan'', ''ivan@example.com'');

SELECT * FROM database.localUsers;
SELECT * FROM database.users;

SELECT COUNT(*) AS total_users FROM database.users;
SELECT + COUNT(*) AS total_users_local FROM database.localUsers;
```' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 181 + operation: create + kind: instance + action: create +- svcOperationId: 186 + operation: create_database + kind: subresource + action: create +- svcOperationId: 185 + operation: create_user + kind: subresource + action: create +- svcOperationId: 184 + operation: delete + kind: instance + action: delete +- svcOperationId: 188 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 187 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 189 + operation: modify + kind: instance + action: modify +- svcOperationId: 276 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 183 + operation: resume + kind: instance + action: resume +- svcOperationId: 182 + operation: suspend + kind: instance + action: suspend +stateOut: + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 837 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 838 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + shards: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 839 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 840 + svcOperationCfsParam: clickhouseKeeperConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '1' + - '3' +- svcOperationCfsParamId: 841 + svcOperationCfsParam: clickhouseConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '25.10' + isRequired: true + isModifiable: false + valueList: + - '25.10' +- svcOperationCfsParamId: 842 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 843 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 851 + svcOperationCfsParam: clickhouseFilesConfiguration + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + path: + dataType: string + defaultValue: something.xml + isRequired: true + isModifiable: false + xmlConfig: + dataType: string + defaultValue: + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 600 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: db01 + isModifiable: false +- svcOperationCfsParamId: 596 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: myusername + isModifiable: false +- svcOperationCfsParamId: 598 + svcOperationCfsParam: dbName + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + dbName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 599 + svcOperationCfsParam: accessHosts + dataType: string + isRequired: true + defaultValue: ::/0 + isModifiable: false +- svcOperationCfsParamId: 602 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 601 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 844 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + shards: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 845 + svcOperationCfsParam: clickhouseKeeperConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '1' + - '3' + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 846 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 847 + svcOperationCfsParam: clickhouseConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '25.10' +- svcOperationCfsParamId: 848 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 849 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: false,true + isRequired: true + isModifiable: false + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 850 + svcOperationCfsParam: clickhouseFilesConfiguration + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + path: + dataType: string + defaultValue: something.xml + isRequired: true + isModifiable: false + xmlConfig: + dataType: string + defaultValue: + isRequired: true + isModifiable: false +cfsParamsByOp: + 181: + - 837 + - 838 + - 839 + - 840 + - 841 + - 842 + - 843 + - 851 + 186: + - 600 + 185: + - 596 + - 598 + - 599 + 184: [] + 188: + - 602 + 187: + - 601 + 189: + - 844 + - 845 + - 846 + - 847 + - 848 + - 849 + - 850 + 276: [] + 183: [] + 182: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 2048, "replicas": 1, "shards": 1, "disk": 10}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' + clickhouseKeeperConfiguration: '{"cpu": 500, "memory": 512, "replicas": 0}' + clickhouseConfiguration: '{"version": "25.10"}' + backupConfiguration: '{"schedule": "0 0 * * *", "s3Uid": "", "retain": 7}' + autoscaleConfiguration: '{"schedule": 0, "quota": 100, "percent": 10, "enabled": false}' + clickhouseFilesConfiguration: '{"path": "something.xml", "xmlConfig": ""}' diff --git a/site/services/stand3/12_s3.yaml b/site/services/stand3/12_s3.yaml new file mode 100644 index 0000000..f6ecdbd --- /dev/null +++ b/site/services/stand3/12_s3.yaml @@ -0,0 +1,119 @@ +name: s3 +service_id: 12 +service_display_name: S3 Object Storage +service_short_name: s3 +service_man: Руководство доступно по ссылке:
https://docs.s3-website.msk-1.ngcloud.ru/ +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 1 + operation: create + kind: instance + action: create +- svcOperationId: 6 + operation: create_sub_user + kind: subresource + action: create +- svcOperationId: 5 + operation: delete + kind: instance + action: delete +- svcOperationId: 7 + operation: delete_sub_user + kind: subresource + action: delete +- svcOperationId: 4 + operation: modify + kind: instance + action: modify +- svcOperationId: 407 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 3 + operation: resume + kind: instance + action: resume +- svcOperationId: 2 + operation: suspend + kind: instance + action: suspend +stateOut: + sub_users: {} +cfsParams: +- svcOperationCfsParamId: 163 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: ceph.tst.nubes.ru + isModifiable: false + valueList: + - ceph.tst.nubes.ru +- svcOperationCfsParamId: 320 + svcOperationCfsParam: displayName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 60 + svcOperationCfsParam: subUserName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 61 + svcOperationCfsParam: subUserAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - read + - write + - readwrite + - full +- svcOperationCfsParamId: 63 + svcOperationCfsParam: subUserName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 50 + svcOperationCfsParam: maxSizeGbPerUser + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 51 + svcOperationCfsParam: maxObjectsPerBucket + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 52 + svcOperationCfsParam: maxBucketsPerUser + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 1: + - 163 + - 320 + 6: + - 60 + - 61 + 5: [] + 7: + - 63 + 4: + - 50 + - 51 + - 52 + 407: [] + 3: [] + 2: [] +stateParams: + resourceRealm: ceph.tst.nubes.ru + displayName: '' diff --git a/site/services/stand3/13_s3bucket.yaml b/site/services/stand3/13_s3bucket.yaml new file mode 100644 index 0000000..caad982 --- /dev/null +++ b/site/services/stand3/13_s3bucket.yaml @@ -0,0 +1,90 @@ +name: s3bucket +service_id: 13 +service_display_name: S3 бакет +service_short_name: s3bucket +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 51 + operation: create + kind: instance + action: create +- svcOperationId: 52 + operation: delete + kind: instance + action: delete +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 124 + svcOperationCfsParam: s3UserUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 125 + svcOperationCfsParam: bucketName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 126 + svcOperationCfsParam: maxSize + dataType: string + isRequired: true + defaultValue: '-1' + isModifiable: false +- svcOperationCfsParamId: 127 + svcOperationCfsParam: readAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 128 + svcOperationCfsParam: listAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 129 + svcOperationCfsParam: corsAll + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 130 + svcOperationCfsParam: placement + dataType: string + isRequired: true + defaultValue: HOT + isModifiable: false + valueList: + - HOT + - COLD +cfsParamsByOp: + 51: + - 124 + - 125 + - 126 + - 127 + - 128 + - 129 + - 130 + 52: [] +stateParams: + s3UserUid: '' + bucketName: '' + maxSize: '-1' + readAll: 'false' + listAll: 'false' + corsAll: 'false' + placement: HOT diff --git a/site/services/stand3/148_vc_mgmt_sthutrval_cluster.yaml b/site/services/stand3/148_vc_mgmt_sthutrval_cluster.yaml new file mode 100644 index 0000000..e583079 --- /dev/null +++ b/site/services/stand3/148_vc_mgmt_sthutrval_cluster.yaml @@ -0,0 +1,150 @@ +name: vc_mgmt_sthutrval_cluster +service_id: 148 +service_display_name: Менеджмент Kubernetes кластер Штурвал +service_short_name: vcMgmtSthutrvalCluster +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 258 + operation: create + kind: instance + action: create +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 771 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: sandbox.nubes.ru + isRequired: true + isModifiable: false + valueList: + - sandbox.nubes.ru + clusterName: + dataType: string + defaultValue: example-brcyqrjr + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 772 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + appVersion: + dataType: string + defaultValue: 2.13.1 + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 773 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 774 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + groupName: + dataType: string + defaultValue: workers-jax0kk2f + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' +- svcOperationCfsParamId: 775 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +cfsParamsByOp: + 258: + - 771 + - 772 + - 773 + - 774 + - 775 +stateParams: + startupConfiguration: '{"resourceRealm": "sandbox.nubes.ru", "clusterName": "example-brcyqrjr"}' + clusterConfiguration: '{"appVersion": "2.13.1"}' + controlPlaneConfiguration: '{"sizingPolicy": "", "sizingDisk": 50, "count": 1}' + workerConfiguration: '{"sizingDisk": 50, "count": 2, "groupName": "workers-jax0kk2f", "sizingPolicy": ""}' + accessConfiguration: '{"needExternalAddressAPI": true, "accessIpListAPI": "[]", "needExternalAddressIngress": true, "accessIpListIngress": "[]"}' diff --git a/site/services/stand3/149_valo_tenant.yaml b/site/services/stand3/149_valo_tenant.yaml new file mode 100644 index 0000000..b23a975 --- /dev/null +++ b/site/services/stand3/149_valo_tenant.yaml @@ -0,0 +1,216 @@ +name: valo_tenant +service_id: 149 +service_display_name: VALO Cloud +service_short_name: valoTenant +service_man: '# Инструкция по развертыванию Тенант Valo через платформу

## 1. Общая информация
Тенант Valo — логический изолированный экземпляр сервиса VALO Cloud, предоставляющий защищённое + облачное хранилище, синхронизацию данных и доступ к документам с различных устройств. При создании тенант автоматически разворачивается в тестовом режиме сроком на 2 месяца. Перевод в промышленную эксплуатацию + выполняется отдельной операцией.

### Доступные операции

* **create** — создание нового тенанта в тестовом режиме сроком на 2 месяца.
* **modify** — изменение настроек тенанта, включая + перевод из ТЕСТ в ПРОД.
* **suspend** — выключение (приостановка работы) тенанта.
* **resume** — включение ранее приостановленного тенанта.
* **delete** — удаление тенанта; доступно только + после выполнения операции suspend.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: платформа, + на которой будет создан тенант.
Пример значения: `valo.ngcloud.ru`.

### DNS-Префикс
Описание: Будет добавлено в зону valo.ngcloud.ru
Пример значения: `mysimpledomain`.

### + Параметры хранилища
Описание: Сколько места будет выделено под использование в тенанте. Данные хранятся в S3. Размер указывается в Gigabytes
Пример значения: `10`.

### Настройки тенанта
Описание: + Ряд конфигурации Valo-тенанта, такие как настройки пользователя и доступного функционала
Пример значения: `опционально в рамках настройки`.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
Достаточно развернуть тенант в ТЕСТ. Срок предоставляется в 2 месяца. По истечению срока тенант автоматически переводится в `suspend` на стороне ресурсной платформы

### + Промышленное окружение
Для разблокировки используйте операцию `modify`

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе + операций):

### Статус тенанта
Отражает текущее состояние и параметры.

---

## 5. Дополнительная информация
Тенант всегда создаётся в режиме ТЕСТ и не может быть сразу + переведён в ПРОД без операции modify.
Удаление тенанта возможно только после его выключения с помощью операции suspend.
Срок тестового режима составляет 2 месяца с момента создания.
Операции + suspend и resume используются для временного управления доступностью сервиса без потери конфигурации.
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 202 + operation: create + kind: instance + action: create +- svcOperationId: 206 + operation: delete + kind: instance + action: delete +- svcOperationId: 203 + operation: modify + kind: instance + action: modify +- svcOperationId: 205 + operation: resume + kind: instance + action: resume +- svcOperationId: 204 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 655 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: valo.ngcloud.ru + isModifiable: false + valueList: + - valo.ngcloud.ru +- svcOperationCfsParamId: 656 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 657 + svcOperationCfsParam: valoOptions + dataType: map-fixed + isRequired: true + defaultValue: '{}' + isModifiable: true + dataDescriptor: + ffThemes: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffPublicLink: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffLogging: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + userCount: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + requestApproveMaxPeriod: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + ffOnlineEditor: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffWatermark: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffUserImport: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 658 + svcOperationCfsParam: s3Storage + dataType: integer > 0 + isRequired: true + defaultValue: '10' + isModifiable: true +- svcOperationCfsParamId: 659 + svcOperationCfsParam: valoOptions + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + ffWatermark: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffUserImport: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffThemes: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffPublicLink: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + ffLogging: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + userCount: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + requestApproveMaxPeriod: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + ffOnlineEditor: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 660 + svcOperationCfsParam: s3Storage + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 202: + - 655 + - 656 + - 657 + - 658 + 206: [] + 203: + - 659 + - 660 + 205: [] + 204: [] +stateParams: + resourceRealm: valo.ngcloud.ru + domain: '' + valoOptions: '{"ffThemes": true, "ffPublicLink": true, "ffLogging": true, "userCount": 10, "requestApproveMaxPeriod": 2, "ffOnlineEditor": true, "ffWatermark": true, "ffUserImport": true}' + s3Storage: '10' diff --git a/site/services/stand3/150_k8s_sthutrval_cluster.yaml b/site/services/stand3/150_k8s_sthutrval_cluster.yaml new file mode 100644 index 0000000..3222506 --- /dev/null +++ b/site/services/stand3/150_k8s_sthutrval_cluster.yaml @@ -0,0 +1,324 @@ +name: k8s_sthutrval_cluster +service_id: 150 +service_display_name: Kubernetes кластер Штурвал +service_short_name: k8sSthutrvalCluster +service_man: Перед разворачиванием убедиться, что в облаке есть 2 свободных невыделенных IP в пуле +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 108 + operation: create + kind: instance + action: create +- svcOperationId: 281 + operation: create_user + kind: subresource + action: create +- svcOperationId: 109 + operation: delete + kind: instance + action: delete +- svcOperationId: 282 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 110 + operation: modify + kind: instance + action: modify +- svcOperationId: 253 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 174 + operation: resume + kind: instance + action: resume +- svcOperationId: 173 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 750 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + vdcUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + nsxtUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + clusterName: + dataType: string + defaultValue: example-imhltbba + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 751 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '[]' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 752 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '50' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '2' + isRequired: true + isModifiable: false + groupName: + dataType: string + defaultValue: workers-0krz2kek + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 753 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 755 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + appVersion: + dataType: string + defaultValue: 2.13.1 + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 869 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 870 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 756 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + appVersion: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 2.13.1 + - 2.12.1 + - 2.11.0 +- svcOperationCfsParamId: 757 + svcOperationCfsParam: controlPlaneConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' +- svcOperationCfsParamId: 758 + svcOperationCfsParam: workerConfiguration + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + groupName: + dataType: string + defaultValue: workers-apak4rks + isRequired: true + isModifiable: false + sizingPolicy: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + sizingDisk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 759 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + needExternalAddressAPI: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListAPI: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + needExternalAddressIngress: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + accessIpListIngress: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +cfsParamsByOp: + 108: + - 750 + - 751 + - 752 + - 753 + - 755 + 281: + - 869 + 109: [] + 282: + - 870 + 110: + - 756 + - 757 + - 758 + - 759 + 253: [] + 174: [] + 173: [] +stateParams: + startupConfiguration: '{"vdcUid": "", "nsxtUid": "", "clusterName": "example-imhltbba"}' + controlPlaneConfiguration: '{"sizingPolicy": "[]", "sizingDisk": 50, "count": 1}' + workerConfiguration: '{"sizingPolicy": "", "sizingDisk": 50, "count": 2, "groupName": "workers-0krz2kek"}' + accessConfiguration: '{"needExternalAddressAPI": true, "accessIpListAPI": "[]", "needExternalAddressIngress": true, "accessIpListIngress": "[]"}' + clusterConfiguration: '{"appVersion": "2.13.1"}' diff --git a/site/services/stand3/151_k8s_openbao.yaml b/site/services/stand3/151_k8s_openbao.yaml new file mode 100644 index 0000000..7f48128 --- /dev/null +++ b/site/services/stand3/151_k8s_openbao.yaml @@ -0,0 +1,372 @@ +name: k8s_openbao +service_id: 151 +service_display_name: Vault +service_short_name: k8sOpenbao +service_man: '# Инструкция по развертыванию Хранилища секретов через платформу

## 1. Общая информация
Хранилище секретов — сервис централизованного и защищённого хранения чувствительных данных + (секретов, ключей, конфигураций). Предназначен для использования приложениями и сервисами в Kubernetes с управлением доступом на основе ролей.
В качестве приложения используется открытый проект OpenBao + с поддержкой кластерного режима RAFT.

### Доступные операции
**create** — Создание хранилища секретов и инициализация кластера.
**delete** — Удаление хранилища секретов с полной очисткой + всех связанных сущностей.
**modify** — Изменение параметров развернутого хранилища секретов.
**suspend** — Приостановка работы кластера без удаления Persistent Volume.
**resume** — Возобновление + работы кластера с автоматическим unseal всех нод.
**restart** — Поочередный перезапуск нод с последующим подключением в кластер.
**create_kv** — Создание Key/Value хранилища версии V2.
**delete_kv** + — Удаление Key/Value хранилища со всеми содержащимися секретами.
**create_secrets** — Создание секрета внутри Key/Value хранилища.
**delete_secrets** — Удаление секрета из Key/Value хранилища.
**update_secrets** + — Обновление значения секрета.
**recovery_secrets** — Откат секрета к указанной версии.
**create_role** — Создание роли для управления Key/Value хранилищем или секретами.
**update_role** — + Обновление параметров роли.
**delete_role** — Удаление роли доступа.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа + для развертывания
Описание: Кластер Kubernetes, в котором будет развернуто приложение.
Формат значения: имя Kubernetes-кластера.

### Имя домена
Описание: Доменное имя сервиса. При + указании полного FQDN выполняется проверка DNS A-записи или добавляется А-запись в техническую зону.
Формат значения: secrets.domain.com / mysecretdomain.

### Кол-во реплик
Описание: + Количество узлов в кластере.
Формат значения: целое число.

### Квота ядра пода
Описание: Лимит CPU для одного узла. Указывается в milicores (1000 milicores = 1 CPU).
Формат значения: + целое число.

### Квота памяти пода
Описание: Лимит оперативной памяти для одного узла. Указывается в megabytes.
Формат значения: целое число.

### Размер диска под хранение секретов
Описание: + Объем диска для хранения данных. Фактический объем равен значению, умноженному на количество реплик. Указывается в Gigabytes
Формат значения: целое число.

### Версия OpenBao
Описание: + Версия OpenBao для развертывания сервиса.
Формат значения: выбор из предоставленного списка версий.

---

## 3. Рекомендованные характеристики

### Тестовое окружение
Кол-во + реплик: 2.
Квота ядра пода: 200.
Квота памяти пода: 256.
Размер диска под хранение секретов: 1.
Версия OpenBao: актуальная стабильная версия.

### Промышленное окружение
Кол-во + реплик: от 3.
Квота ядра пода: от 1000.
Квота памяти пода: от 1024.
Размер диска под хранение секретов: от 10.
Версия OpenBao: актуальная стабильная версия.

---

## 4. + Выходные параметры
Настройки внутри хранилища (kv/secrets/roles) — конфигурации Key/Value, секретов и ролей, созданные соответствующими операциями.
Настройки самого хранилище (сайзинг, объемы) + — параметры ресурсов и хранилища данных, примененные к сервису.
Статус кластера (running / suspended) — текущее состояние работы кластера.
url для подключения к веб — адрес веб-интерфейса сервиса.

---

## + 5. Дополнительная информация
При удалении хранилища все данные и настройки безвозвратно удаляются.
При использовании доменного имени требуется корректная настройка DNS.
Операции управления + секретами и ролями выполняются только после успешного создания хранилища.
Удаление кластера производится через операцию `suspend`, а удаление становится доступно через 14 дней после остановки кластера
Правило + выше не относится к операции `delete_kv` / `delete_secrets` / `delete_role`' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 210 + operation: create + kind: instance + action: create +- svcOperationId: 212 + operation: create_kv + kind: subresource + action: create +- svcOperationId: 237 + operation: create_policy + kind: subresource + action: create +- svcOperationId: 214 + operation: create_secrets + kind: subresource + action: create +- svcOperationId: 231 + operation: delete + kind: instance + action: delete +- svcOperationId: 213 + operation: delete_kv + kind: subresource + action: delete +- svcOperationId: 239 + operation: delete_policy + kind: subresource + action: delete +- svcOperationId: 233 + operation: delete_secrets + kind: subresource + action: delete +- svcOperationId: 211 + operation: modify + kind: instance + action: modify +- svcOperationId: 236 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 232 + operation: recovery_secrets + kind: subresource + action: recovery +- svcOperationId: 234 + operation: restart + kind: action + action: restart +- svcOperationId: 216 + operation: resume + kind: instance + action: resume +- svcOperationId: 215 + operation: suspend + kind: instance + action: suspend +- svcOperationId: 238 + operation: update_policy + kind: subresource + action: update +- svcOperationId: 230 + operation: update_secrets + kind: subresource + action: update +stateOut: + kvs: {} + policies: {} + secrets: {} +cfsParams: +- svcOperationCfsParamId: 663 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 664 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 665 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '3' + isModifiable: true +- svcOperationCfsParamId: 666 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 667 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '10' + isModifiable: true +- svcOperationCfsParamId: 668 + svcOperationCfsParam: appVersion + dataType: string + isRequired: true + defaultValue: 2.5.2 + isModifiable: true + valueList: + - 2.5.2 +- svcOperationCfsParamId: 669 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: bao-onbcvsgk + isModifiable: false +- svcOperationCfsParamId: 675 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: kvname-9e9wvkt2 + isModifiable: false +- svcOperationCfsParamId: 728 + svcOperationCfsParam: policySettings + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + capabilities: + dataType: json + defaultValue: '["read", "list"]' + isRequired: true + isModifiable: false + path: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 729 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: policy-s0hfjfmn + isModifiable: false +- svcOperationCfsParamId: 677 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 678 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: path/to/mysecret + isModifiable: false +- svcOperationCfsParamId: 679 + svcOperationCfsParam: secretData + dataType: map + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 676 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 732 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 726 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 727 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 670 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 671 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 672 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 673 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 674 + svcOperationCfsParam: appVersion + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - 2.5.2 +- svcOperationCfsParamId: 723 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 724 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 725 + svcOperationCfsParam: secretVersion + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 730 + svcOperationCfsParam: policyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 731 + svcOperationCfsParam: policySettings + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + capabilities: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + path: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 719 + svcOperationCfsParam: kvName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 720 + svcOperationCfsParam: secretPath + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 721 + svcOperationCfsParam: needFullUpdateSecret + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 722 + svcOperationCfsParam: secretData + dataType: map + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 210: + - 663 + - 664 + - 665 + - 666 + - 667 + - 668 + - 669 + 212: + - 675 + 237: + - 728 + - 729 + 214: + - 677 + - 678 + - 679 + 231: [] + 213: + - 676 + 239: + - 732 + 233: + - 726 + - 727 + 211: + - 670 + - 671 + - 672 + - 673 + - 674 + 236: [] + 232: + - 723 + - 724 + - 725 + 234: [] + 216: [] + 215: [] + 238: + - 730 + - 731 + 230: + - 719 + - 720 + - 721 + - 722 +stateParams: + resourceRealm: '' + resourceCPU: '500' + resourceInstances: '3' + resourceMemory: '512' + resourceDisk: '10' + appVersion: 2.5.2 + domain: bao-onbcvsgk diff --git a/site/services/stand3/163_llm_ai.yaml b/site/services/stand3/163_llm_ai.yaml new file mode 100644 index 0000000..10e515c --- /dev/null +++ b/site/services/stand3/163_llm_ai.yaml @@ -0,0 +1,277 @@ +name: llm_ai +service_id: 163 +service_display_name: LLM +service_short_name: llmAi +service_man: '## 1. Общая информация

LLMaaS (Large Language Model as a Service) — это сервис для доступа к языковым моделям через OpenAI-совместимое API.
Платформа позволяет создавать организации + (тенанты), команды, выпускать и управлять API-ключами, устанавливать лимиты на использование.

---

## Доступные операции

- **create** — Создание организации в LLMaaS
- + **delete** — Удаление организации

- **create_team** — Создание команды внутри организации
- **modify_team** — Редактирование команды (модели, RPM, TPM)
- **delete_team** — + Удаление команды

- **create_secrets** — Создание API-ключа
- **update_secrets** — Обновление параметров API-ключа
- **delete_secrets** — Удаление API-ключа

---

## + 2. Параметры создания организации

Ниже перечислены параметры, которые необходимо указать при создании организации:

* **Платформа для развертывания**
Выбирается автоматически, изменять + не нужно.

* **Период бюджета**
Срок жизни организации в днях.
Пример: `30`


---

## 3. Параметры создания команды

* **Имя команды**
Уникальное + имя команды в рамках организации.
Пример: `production`

* **Модель**
Название модели, доступной для команды.
Пример: `gpt-oss-120b`

* **Лимит запросов в минуту (RPM)**
Максимальное + количество запросов к API в минуту.
Пример: `60`

* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + исходящих) в минуту.
Пример: `100000`

---

## + 4. Параметры редактирования команды

Для существующей команды можно изменить:

* **Модель**
Новая модель для команды.
Пример: `gpt-oss-20b`

* **Лимит запросов в минуту + (RPM)**
Новое значение RPM.
Пример: `120`

* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`

---

## 5. Параметры создания API-ключа

Ниже + перечислены параметры, которые необходимо указать при создании API-ключа:

* **Имя ключа**
Уникальное имя ключа в рамках организации.
Пример: `prod-key`

* **Команда**
Имя + команды для привязки ключа. Если не указано — ключ привязывается к команде `main`.
Пример: `production`

* **Модель**
Название модели, доступной для данного ключа.
Пример: `gpt-oss-120b`

* + **Лимит запросов в минуту (RPM)**
Максимальное количество запросов к API в минуту.
Пример: `60`

* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + + исходящих) в минуту.
Пример: `100000`

**Важно:** Лимиты API-ключа не могут превышать лимиты команды, к которой он привязан.
При превышении операция будет отклонена с ошибкой.
Перед + созданием ключа убедитесь, что `RPM <= team.RPM` и `TPM <= team.TPM`.


---

## 6. Параметры обновления API-ключа

Для уже существующего ключа можно изменить параметры. Все + параметры являются опциональными:

* **Имя ключа**
Имя обновляемого ключа.
Пример: `prod-key`

* **Модель**
Новое название модели.
Пример: `gpt-oss-20b`

* + **Лимит запросов в минуту (RPM)**
Новое значение RPM.
Пример: `120`

* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`

**Важно:** При обновлении + лимитов API-ключа новые значения не могут превышать лимиты команды.
Если указать значения выше командных, операция завершится ошибкой.
Указывайте `RPM <= team.RPM` и `TPM <= team.TPM`.

Команда + определяется автоматически по стейту услуги — изменить привязку к другой команде через эту операцию нельзя.

---

## 7. Параметры удаления API-ключа

* **Команда**
Имя команды, + к которой привязан ключ.
Пример: `production`

* **Имя ключа**
Имя удаляемого ключа.
Пример: `prod-key`

---

## 8. Параметры удаления команды

* **Имя + команды**
Имя удаляемой команды.
Пример: `production`

---

## 9. Параметры удаления организации

Удаление организации не требует дополнительных параметров — удаляется + вся организация со всеми командами и ключами.

---

## 10. Выходные параметры

После успешного создания организации платформа возвращает:

* **connectionUrl**
URL + для доступа к inference API (OpenAI-совместимый).
Пример: `https://api.aillm.ru`

---


## 12. Пример использования API

После получения API-ключа клиент может обращаться + к LLMaaS напрямую:

**Запрос к chat completions:**

```bash
curl https://api.aillm.ru/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" + \
-d ''{
"model": "gpt-oss-120b",
"messages": [
{"role": "user", "content": "Привет!"}
]
}''
```

**Получение списка доступных моделей:**

```bash
curl + https://api.aillm.ru/v1/models \
-H "Authorization: Bearer sk-..."
```
' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 271 + operation: create + kind: instance + action: create +- svcOperationId: 274 + operation: create_secrets + kind: subresource + action: create +- svcOperationId: 278 + operation: create_team + kind: subresource + action: create +- svcOperationId: 273 + operation: delete + kind: instance + action: delete +- svcOperationId: 275 + operation: delete_secrets + kind: subresource + action: delete +- svcOperationId: 280 + operation: delete_team + kind: subresource + action: delete +- svcOperationId: 279 + operation: modify_team + kind: subresource + action: modify +- svcOperationId: 277 + operation: update_secrets + kind: subresource + action: update +stateOut: + secrets: {} + teams: {} +cfsParams: +- svcOperationCfsParamId: 826 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: llmAi.aillm.ru + isModifiable: false + valueList: + - llmAi.aillm.ru +- svcOperationCfsParamId: 833 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 834 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: false +- svcOperationCfsParamId: 835 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: false +- svcOperationCfsParamId: 857 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 859 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 1083 + svcOperationCfsParam: variablesKeys + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + teamName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + keyName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + models: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '{}' + tpmLimit: + dataType: integer > 0 + defaultValue: '100000' + isRequired: true + isModifiable: false + rpmLimit: + dataType: integer > 0 + defaultValue: '60' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 858 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 860 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 861 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: false +- svcOperationCfsParamId: 862 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: false +- svcOperationCfsParamId: 836 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 876 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 868 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 864 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 865 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 873 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: true +- svcOperationCfsParamId: 874 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: true +- svcOperationCfsParamId: 852 + svcOperationCfsParam: keyName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 853 + svcOperationCfsParam: models + dataType: array + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 854 + svcOperationCfsParam: rpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '60' + isModifiable: true +- svcOperationCfsParamId: 855 + svcOperationCfsParam: tpmLimit + dataType: integer > 0 + isRequired: true + defaultValue: '100000' + isModifiable: true +- svcOperationCfsParamId: 875 + svcOperationCfsParam: teamName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 271: + - 826 + 274: + - 833 + - 834 + - 835 + - 857 + - 859 + - 1083 + 278: + - 858 + - 860 + - 861 + - 862 + 273: [] + 275: + - 836 + - 876 + 280: + - 868 + 279: + - 864 + - 865 + - 873 + - 874 + 277: + - 852 + - 853 + - 854 + - 855 + - 875 +stateParams: + resourceRealm: llmAi.aillm.ru diff --git a/site/services/stand3/19_vc_org.yaml b/site/services/stand3/19_vc_org.yaml new file mode 100644 index 0000000..95fea45 --- /dev/null +++ b/site/services/stand3/19_vc_org.yaml @@ -0,0 +1,133 @@ +name: vc_org +service_id: 19 +service_display_name: Организация в Cloud Director +service_short_name: vcOrg +service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу

## 1. Общая информация

Сервис **Организация в Cloud Director** предназначен для управления изолированными + организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль + уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.

### Доступные операции

**create** + — Создание новой организации с заданными характеристиками и типом доступа.
**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.
**modify** + — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).
**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.
**resume** + — Разморозка организации, восстановление функций управления.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: + платформа, на которой будет создана организация.
Пример значения: `ngcloud.ru`.

### Тип организации
Описание: тип создаваемой организации.
Варианты:
- `iaas` — организация с прямым + доступом к облаку и авторизацией через Keycloak.
- `saas` — организация под управлением Nubes, без прямого доступа к облаку.

---

## 3. Рекомендованные характеристики

### + Тестовое окружение
- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.

### Промышленное окружение
- Тип организации: `saas` (упрощённая + модель использования).

---

## 4. Выходные параметры

Услуга предоставляет следующие выходные параметры (формируются в процессе операций):

### Url организации
Для + быстрого доступа в тенант

### Статус организации
Отражает текущее состояние и параметры.

---

## 5. Дополнительная информация

- Для конфигурации внешних IP внутри + организации необходимо предварительно создать:
-- хотя бы один **Виртуальный датацентр (VDC)** привязанный к этой организации;
-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный + к vdc выше.
- Удаление организации возможно только через 14 дней после перевода в состояние suspend.
- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов + IP, сетей, ВМок и иных объектов.
- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.
- Для iaas-организаций доступ осуществляется + через Keycloak.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 136 + operation: create + kind: instance + action: create +- svcOperationId: 283 + operation: create_user + kind: subresource + action: create +- svcOperationId: 137 + operation: delete + kind: instance + action: delete +- svcOperationId: 284 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 207 + operation: modify + kind: instance + action: modify +- svcOperationId: 249 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 144 + operation: resume + kind: instance + action: resume +- svcOperationId: 143 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 418 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: sandbox.nubes.ru + isModifiable: false + valueList: + - sandbox.nubes.ru +- svcOperationCfsParamId: 556 + svcOperationCfsParam: organizationType + dataType: string + isRequired: true + defaultValue: iaas + isModifiable: false + valueList: + - iaas + - saas +- svcOperationCfsParamId: 871 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: false + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 872 + svcOperationCfsParam: admins + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + email: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 662 + svcOperationCfsParam: vIPConfigure + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + count: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 136: + - 418 + - 556 + 283: + - 871 + 137: [] + 284: + - 872 + 207: + - 662 + 249: [] + 144: [] + 143: [] +stateParams: + resourceRealm: sandbox.nubes.ru + organizationType: iaas diff --git a/site/services/stand3/1_dummy.yaml b/site/services/stand3/1_dummy.yaml new file mode 100644 index 0000000..ea33cc8 --- /dev/null +++ b/site/services/stand3/1_dummy.yaml @@ -0,0 +1,314 @@ +name: dummy +service_id: 1 +service_display_name: Болванка +service_short_name: dummy +service_man: '## Болванка для тестов.

А это просто много букв, чтобы посмотреть, как ведет себя текст при переполнении контейнера.


``` json
{
"iamServiceUrl": "https://auth-api-test.ngcloud.ru/api/v1/user",
"idpResponse": + {
"prefix": {
"charset": "",
"status_text": "Request Time-out",
"text": true,
"errordetail": "",
"filecontent": + "Connection Timeout",
"responseheader": {},
"header": "",
"statuscode": "408 Request Time-out",
"status_code": 408,
"mimetype": + "Unable to determine MIME type of file."
}
}
}
```' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 18 + operation: create + kind: instance + action: create +- svcOperationId: 71 + operation: delete + kind: instance + action: delete +- svcOperationId: 92 + operation: modify + kind: instance + action: modify +- svcOperationId: 257 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 240 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 94 + operation: resume + kind: instance + action: resume +- svcOperationId: 93 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 198 + svcOperationCfsParam: durationMs + dataType: integer >= 0 + isRequired: true + defaultValue: '0' + isModifiable: true +- svcOperationCfsParamId: 199 + svcOperationCfsParam: failAtStart + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 200 + svcOperationCfsParam: failInProgress + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 201 + svcOperationCfsParam: whereFail + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 242 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: dummy + isModifiable: false + valueList: + - dummy +- svcOperationCfsParamId: 286 + svcOperationCfsParam: bodymessage + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 321 + svcOperationCfsParam: mapExample + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + subparam2: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + subparam1: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + secret: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 322 + svcOperationCfsParam: jsonExample + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 396 + svcOperationCfsParam: nestedRefExample + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 647 + svcOperationCfsParam: mapFixed + dataType: map-fixed + isRequired: false + defaultValue: '' + isModifiable: false + dataDescriptor: + param1: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + param2: + dataType: string + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '["1"' + - '"2"' + - '"3"]' + param3: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + bol1: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + minStr1: + dataType: string + defaultValue: abracadabra + isRequired: true + isModifiable: false + valueList: + - abracadabra +- svcOperationCfsParamId: 654 + svcOperationCfsParam: arrayMapFixedExample + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: false + dataDescriptor: + bol1: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + minStr1: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - abracadabra + param1: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + param2: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '["1"' + - '"2"' + - '"3"]' + param3: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 863 + svcOperationCfsParam: arr + dataType: array + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - test + - '2' + - val1 +- svcOperationCfsParamId: 287 + svcOperationCfsParam: durationMs + dataType: integer >= 0 + isRequired: true + defaultValue: '0' + isModifiable: true +- svcOperationCfsParamId: 288 + svcOperationCfsParam: failAtStart + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 289 + svcOperationCfsParam: failInProgress + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 290 + svcOperationCfsParam: whereFail + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 291 + svcOperationCfsParam: bodymessage + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 373 + svcOperationCfsParam: mapExample + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true + dataDescriptor: + secret: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 374 + svcOperationCfsParam: jsonExample + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 18: + - 198 + - 199 + - 200 + - 201 + - 242 + - 286 + - 321 + - 322 + - 396 + - 647 + - 654 + - 863 + 71: [] + 92: + - 287 + - 288 + - 289 + - 290 + - 291 + - 373 + - 374 + 257: [] + 240: [] + 94: [] + 93: [] +stateParams: + durationMs: '0' + failAtStart: 'false' + failInProgress: 'false' + whereFail: '1' + resourceRealm: dummy + bodymessage: '' + mapExample: '{"subparam2": "", "subparam1": "", "secret": ""}' + jsonExample: '' + nestedRefExample: '' + mapFixed: '{"param1": 1, "param2": "1", "param3": 1, "bol1": false, "minStr1": "abracadabra"}' + arrayMapFixedExample: '{"bol1": false, "minStr1": "", "param1": 0, "param2": "", "param3": 1}' + arr: '' diff --git a/site/services/stand3/21_vc_vdc.yaml b/site/services/stand3/21_vc_vdc.yaml new file mode 100644 index 0000000..662531f --- /dev/null +++ b/site/services/stand3/21_vc_vdc.yaml @@ -0,0 +1,166 @@ +name: vc_vdc +service_id: 21 +service_display_name: Виртуальный датацентр (vDC) +service_short_name: vc_vdc +service_man: '# Инструкция по развертыванию Виртуальный датацентр (vDC) через платформу

## 1. Общая информация

**Виртуальный датацентр (vDC)** — это логическая изолированная среда в VMware + Cloud Director, предназначенная для размещения и управления виртуальными машинами, сетевой инфраструктурой и ресурсами хранения. Сервис обеспечивает выделение вычислительных ресурсов под конкретную организацию + и предоставляет гибкие параметры масштабирования, контроля потребления и разделения ресурсов.

### Доступные операции

**create** — Создание виртуального датацентра (vDC) с заданными параметрами + CPU, RAM, Storage и сетевой конфигурацией.
**delete** — Удаление vDC. Требуется предварительный перевод vDC в состояние *suspend*. Полное удаление возможно через 14 дней.
**modify** — Внесение + изменений в параметры ресурсов (CPU/RAM/Storage), выделенных для vDC.
**suspend** — Заморозка vDC. Новые ресурсы или изменения внутри vDC становятся невозможными, работа ВМ не останавливается.
**resume** + — Разморозка vDC. Восстановление возможности управления сущностями внутри vDC.

---

## 2. Параметры развертывания

Ниже перечислены входные параметры операции **create**.

### + UUID Организации
Уникальный идентификатор организации в Cloud Director. Перед созданием vDC требуется предварительное создание услугу `Организация в Cloud Director`.

### Provider VDC в Cloud + Director
Свойство ресурсной платформы, определяющее, какой пул физических ресурсов будет использоваться.

### Network Pool в Cloud Director
Определяет возможности сетевой конфигурации, + включая создание Edge Gateway и выход во внешние сети.

### Гарантированная доля ЯДЕР
Гарантированный процент вычислительных ресурсов (CPU), закрепленный за vDC. Значение устанавливается разово + при создании.

### Гарантированная доля ОЗУ
Гарантированный процент оперативной памяти, закрепленный за vDC. Также задаётся один раз при создании.

### Сколько аллоцировать на VDC + ЯДЕР
Количество виртуальных ядер, выделяемых в рамках vDC.

### Сколько аллоцировать на VDC ОЗУ
Количество оперативной памяти в GB, выделяемой для vDC.

### Конфигурация Storage
Набор + дисковых политик и их объёмов, выделяемых для vDC. Указывается имя политики и требуемый размер (GB).

---

## 3. Рекомендованные характеристики

### Тестовое окружение

- + Количество ядер CPU: 10–20
- Аллоцируемая RAM: 16–64 GB
- Гарантированная доля CPU: 20%
- Гарантированная доля RAM: 20%
- Storage:
- Политика `SATA`
- Объём: 100–300 GB

### + Промышленное окружение

- Количество ядер CPU: 16–128
- Аллоцируемая RAM: 64–512 GB
- Гарантированная доля CPU: 50%
- Гарантированная доля RAM: 50%
- Storage:
- Политики уровня + `SSD`
- Объём: 1–10 TB, выбор несколько политик под разные нагрузки

---

## 4. Выходные параметры

Выходные параметры формируются операцией **create** (и используются другими + операциями):

### Имя vDC
Уникальный идентификатор созданного виртуального датацентра. Используется в дальнейших операциях (modify, suspend, delete).

### Параметры выделенных ресурсов
Подтверждение + итогового объёма CPU/RAM/Storage, выделенных vDC. Используются для учёта и контроля потребления.

---

## 5. Дополнительная информация

- Перед созданием vDC необходимо обеспечить + наличие корректно созданной организации и доступных пула ресурсов ресурсной платформы.
- Гарантированная доля CPU и RAM задаётся **однократно при создании vDC**. После развертывания изменить эти значения + невозможно; для изменения необходимо пересоздать vDC.
- Удаление vDC возможно только через **14 дней после перевода в состояние *suspend***. Удаление очищает все связанные сущности (ВМ, сети, каталоги), + поэтому необходимо убедиться, что данные перенесены.
- Платформа Cloud Director использует концепцию изолированных организационных ресурсов, поэтому корректная настройка Provider VDC и Network Pool + является обязательной при создании vDC.
- При изменении параметров (modify) изменяются только показатели CPU, RAM и Storage. Сетевые параметры и гарантированные доли остаются неизменными.
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 9 + operation: create + kind: instance + action: create +- svcOperationId: 24 + operation: delete + kind: instance + action: delete +- svcOperationId: 112 + operation: modify + kind: instance + action: modify +- svcOperationId: 250 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 172 + operation: resume + kind: instance + action: resume +- svcOperationId: 171 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 30 + svcOperationCfsParam: organizationUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 335 + svcOperationCfsParam: providerVdc + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 361 + svcOperationCfsParam: storageConfig + dataType: array-map-fixed + isRequired: true + defaultValue: '[{}]' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + size: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 397 + svcOperationCfsParam: cpuGuaranteed + dataType: integer > 0 + isRequired: true + defaultValue: '20' + isModifiable: false + valueList: + - '20' + - '50' + - '80' +- svcOperationCfsParamId: 557 + svcOperationCfsParam: cpuAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '80' + isModifiable: true +- svcOperationCfsParamId: 558 + svcOperationCfsParam: memAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 746 + svcOperationCfsParam: networkProvider + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 560 + svcOperationCfsParam: cpuAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 561 + svcOperationCfsParam: memAllocated + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 562 + svcOperationCfsParam: storageConfig + dataType: array-map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + name: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + size: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 9: + - 30 + - 335 + - 361 + - 397 + - 557 + - 558 + - 746 + 24: [] + 112: + - 560 + - 561 + - 562 + 250: [] + 172: [] + 171: [] +stateParams: + organizationUid: '' + providerVdc: '' + storageConfig: '{"name": "", "size": 2000}' + cpuGuaranteed: '20' + cpuAllocated: '80' + memAllocated: '200' + networkProvider: '' diff --git a/site/services/stand3/22_vc_nsxt.yaml b/site/services/stand3/22_vc_nsxt.yaml new file mode 100644 index 0000000..9988cbc --- /dev/null +++ b/site/services/stand3/22_vc_nsxt.yaml @@ -0,0 +1,139 @@ +name: vc_nsxt +service_id: 22 +service_display_name: Сетевой шлюз периметра (Edge) +service_short_name: vc_nsxt +service_man: '# Инструкция по развертыванию Сетевой шлюз периметра (Edge) через платформу

## 1. Общая информация

Сервис **Сетевой шлюз периметра (Edge)** предназначен для создания периметрового + сетевого шлюза в рамках одного виртуального датацентра (vDC) или группы виртуальных датацентров (groupvDC).
При создании автоматически разворачивается routed-сеть с адресным пространством `10.10.102.0/24`.
Сервис + обеспечивает сетевую изоляцию, маршрутизацию, а также может включать функциональность балансировщика нагрузки AVI (ALB) для последующей интеграции, включая поддержку кластеров Штурвал.

### Доступные + операции

**create** — Создание нового Edge с привязкой к vDC или groupvDC и развёртыванием routed-сети.
**delete** — Удаление ранее созданного Edge. Недоступно при наличии зависимых услуг + (vApp, VM, Кластер Штурвал).
**modify** — Изменение параметров и сетевых настроек существующего Edge.

---

## 2. Параметры развертывания

Ниже приведены параметры операции + **create**.

### Тип родительской услуги
Определяет контекст размещения Edge.
Допустимые значения: `vdc`, `groupvdc`.
Использование:
- При выборе `vdc` обязателен параметр + **UUID VDC**.
- При выборе `groupvdc` обязателен параметр **UUID Группы VDC**.

### UUID VDC
Идентификатор виртуального датацентра.
Необходимо предварительно создать vDC через услугу + «Виртуальный датацентр (vDC)».
Указывается только при выборе родительского типа `vdc`.

### UUID Группы VDC
Идентификатор группы виртуальных датацентров.
Создаётся через услугу + «Группа виртуальных датацентров (groupvDC)».
Используется при выборе родительского типа `groupvdc`.

### Включить ALB
Флаг активации AVI Load Balancer в Cloud Director.
Пример + значения: `true`/`false`.
Нужен для развёртывания кластера Штурвал и возможности создания Virtual Services.

### Наименование segroup
Имя сервиса групп (segroup) на уровне ресурсной + платформы.
Обязательно при включённом ALB.
Определяет группу, в которой будут выделяться пулы AVI для Virtual Services.

### virtualServicesCount
Количество резервируемых виртуальных + сервисов (Virtual Services) на AVI.
Типичное значение: 1–10 в зависимости от нагрузки.

---

## 3. Рекомендованные характеристики

### Тестовое окружение (Test)

- + Тип родительской услуги: `vdc`
- virtualServicesCount: 1–2
- ALB: выключен по умолчанию (включать только при необходимости тестирования Штурвала)
- segroup: задаётся только при включённом + ALB
- VDC гарантии CPU/RAM: минимальные (поскольку изменить их после создания нельзя)

### Промышленное окружение (Production)

- Тип родительской услуги: `groupvdc` при работе с + распределёнными нагрузками или `vdc` для локализованных проектов
- virtualServicesCount: 3–10, исходя из предполагаемого количества публикаций
- ALB: включён, если требуется высокая доступность + сервисов или используется кластер Штурвал
- segroup: рекомендуется использовать выделенную группу под проект
- VDC гарантии CPU/RAM: повышенные, с учётом того, что изменить их после создания + невозможно без пересоздания vDC

---

## 4. Выходные параметры

### Имя Edge
Уникальное название созданного сетевого шлюза, используется для ссылок и дальнейших операций.

### + Имя routed-сети
Автоматически созданная routed-сеть с подсетью `10.10.102.0/24`, используется для подключения ресурсов.

### Параметры Edge
Набор параметров, указанных пользователем при + создании: тип услуги, ALB, segroup, virtualServicesCount и др.
Используются в операциях modify и для анализа состояния сервиса.

---

## 5. Дополнительная информация

- В + рамках сервиса **один раз при создании задаётся гарантированная доля CPU/RAM vDC**. Изменить её невозможно — требуется пересоздание vDC.
- Удаление Edge недоступно при наличии зависимых ресурсов + (vApp, VM, кластер Штурвал).
- При использовании ALB необходимо корректно указывать segroup, чтобы обеспечить корректное выделение пулов AVI.
- При выборе режима `groupvdc` следует учитывать + распределение нагрузки между несколькими vDC.
- SNAT для всех ресурсов внутри Edge можно активировать через операцию modify (параметры выделения VIP и ipSpace).

' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 10 + operation: create + kind: instance + action: create +- svcOperationId: 25 + operation: delete + kind: instance + action: delete +- svcOperationId: 111 + operation: modify + kind: instance + action: modify +- svcOperationId: 252 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 8 + svcOperationCfsParam: vdcUid + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 340 + svcOperationCfsParam: needEnableAVI + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 341 + svcOperationCfsParam: virtualServicesCount + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 621 + svcOperationCfsParam: vdcType + dataType: string + isRequired: true + defaultValue: vdc + isModifiable: false + valueList: + - vdc + - vdcGroup +- svcOperationCfsParamId: 622 + svcOperationCfsParam: vdcGroupUid + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 825 + svcOperationCfsParam: qosProfile + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 368 + svcOperationCfsParam: needEnableAVI + dataType: boolean + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 369 + svcOperationCfsParam: virtualServicesCount + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 372 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 856 + svcOperationCfsParam: qosProfile + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 10: + - 8 + - 340 + - 341 + - 621 + - 622 + - 825 + 25: [] + 111: + - 368 + - 369 + - 372 + - 856 + 252: [] +stateParams: + vdcUid: '' + needEnableAVI: 'false' + virtualServicesCount: '1' + vdcType: vdc + vdcGroupUid: '' + qosProfile: '' diff --git a/site/services/stand3/25_vcexternalip.yaml b/site/services/stand3/25_vcexternalip.yaml new file mode 100644 index 0000000..bbc2bde --- /dev/null +++ b/site/services/stand3/25_vcexternalip.yaml @@ -0,0 +1,186 @@ +name: vcexternalip +service_id: 25 +service_display_name: Публичные IP адреса +service_short_name: vcexternalip +service_man: '**Обычно эта услуга разворачивается автоматически при развёртывании более сложных услуг**
Вручную создавать можно, однако услуга требует много параметров, о которых можно просто не знать

Резервировать + публичные IP адреса можно только после создания NGcloud Organization, NGcloud Виртуальный датацентр, NGcloud Каталог, Сетевой шлюз периметра.
Вы можете назначить IP адрес для существующего экземпляра + сервиса.' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 56 + operation: create + kind: instance + action: create +- svcOperationId: 57 + operation: delete + kind: instance + action: delete +- svcOperationId: 197 + operation: modify + kind: instance + action: modify +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 140 + svcOperationCfsParam: serviceUid + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 141 + svcOperationCfsParam: dnatCreate + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true +- svcOperationCfsParamId: 142 + svcOperationCfsParam: internalPortAccess + dataType: string + isRequired: true + defaultValue: '5432' + isModifiable: true +- svcOperationCfsParamId: 143 + svcOperationCfsParam: snatCreate + dataType: boolean + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 144 + svcOperationCfsParam: internalAddrAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 324 + svcOperationCfsParam: fromServiceNamespace + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 325 + svcOperationCfsParam: fromServiceCloudEdgeName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 326 + svcOperationCfsParam: fromServiceCloudVdcName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 327 + svcOperationCfsParam: fromServiceCloudOrgName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 328 + svcOperationCfsParam: fromServiceCloudVmwareUrl + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 336 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 488 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: sandbox.nubes.ru + isModifiable: false + valueList: + - sandbox.nubes.ru +- svcOperationCfsParamId: 624 + svcOperationCfsParam: fromServiceCloudEdgeScope + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 626 + svcOperationCfsParam: fromServiceVdcGroupName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 627 + svcOperationCfsParam: serviceUid + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 628 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 629 + svcOperationCfsParam: dnatCreate + dataType: boolean + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 630 + svcOperationCfsParam: snatCreate + dataType: boolean + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 631 + svcOperationCfsParam: internalPortAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 632 + svcOperationCfsParam: internalAddrAccess + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 56: + - 140 + - 141 + - 142 + - 143 + - 144 + - 324 + - 325 + - 326 + - 327 + - 328 + - 336 + - 488 + - 624 + - 626 + 57: [] + 197: + - 627 + - 628 + - 629 + - 630 + - 631 + - 632 +stateParams: + serviceUid: '' + dnatCreate: 'true' + internalPortAccess: '5432' + snatCreate: '' + internalAddrAccess: '' + fromServiceNamespace: '' + fromServiceCloudEdgeName: '' + fromServiceCloudVdcName: '' + fromServiceCloudOrgName: '' + fromServiceCloudVmwareUrl: '' + ipSpaceName: '' + resourceRealm: sandbox.nubes.ru + fromServiceCloudEdgeScope: '' + fromServiceVdcGroupName: '' diff --git a/site/services/stand3/26_vapp.yaml b/site/services/stand3/26_vapp.yaml new file mode 100644 index 0000000..2eb0a76 --- /dev/null +++ b/site/services/stand3/26_vapp.yaml @@ -0,0 +1,75 @@ +name: vapp +service_id: 26 +service_display_name: Виртуальный каталог ВМ (vApp) +service_short_name: vapp +service_man: '# Инструкция по развертыванию Виртуальный каталог ВМ (vApp) через платформу

## 1. Общая информация

**Виртуальный каталог ВМ (vApp)** — это логическая каталог, объединённая + в единый управляемый объект. Сервис предназначен для совместного развертывания, управления жизненным циклом и сетевого взаимодействия набора связанных ВМ. Основные функции включают:
- централизованное + управление включением, выключением и приостановкой группы ВМ;
- унифицированный сетевой доступ через привязанный Edge-шлюз;

### Доступные операции

**create** — Создание нового vApp + с привязкой к заданным услугам VDC и Edge
**delete** — Удаление существующего vApp. Требуется предварительный перевод vApp в состояние *suspend*. Полное удаление возможно через 14 дней.
**suspend** + — Остановка vApp (выключение всех ВМ внутри каталога)
**resume** — Запуск vApp (включение всех ВМ внутри каталога)

---

## 2. Параметры развертывания

Параметры берутся из + операции **create**.

### UUID Услуги VDC
Уникальный идентификатор услуги «Виртуальный датацентр (vDC)».
Используется для определения вычислительной инфраструктуры, в которой будет развернут + vApp.

### UUID Услуги Edge
Уникальный идентификатор услуги «Сетевой шлюз периметра (Edge)».
Обеспечивает маршрутизацию и сетевое подключение. Может быть привязан к группе VDC, поэтому + выбирается отдельно.

### Имя vApp
Строгое имя, соответствующее маске формирования DNS-имени.
Используется как часть в DNS-имени при создании виртуальных машин.

---

## + 3. Рекомендованные характеристики
Так как является промежуточным этапом для создания ВМ, все характеристики описываются в услуге `Виртуальная машина`

---

## 4. Выходные параметры

### + Параметры vApp
Заданные при создании vApp

---

## 5. Дополнительная информация

- Привязка к VDC и Edge осуществляется раздельно, поскольку один Edge может обслуживать несколько + VDC (через услугу `Группа виртуальных датацентров (groupvDC)`). Это гарантирует возможность развернуть ВМ в единой сети, но в разных виртуальных датацентрах.
- Перед удалением vApp необходимо вручную + перевести его в состояние **suspend**. Удаление возможно только спустя 14 дней после этого шага.
- Операция delete удаляет весь vApp полностью, включая все виртуальные машины, связанные с ним.
- + Рекомендуется заранее планировать сетевые связи и назначения DNS-имён для обеспечения корректной работы сервисов, развернутых внутри vApp.
- При проектировании инфраструктуры следует учитывать зависимости + между Edge-шлюзом, VDC и размещаемыми ВМ, чтобы избежать ограничений при масштабировании и интеграции.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 69 + operation: create + kind: instance + action: create +- svcOperationId: 70 + operation: delete + kind: instance + action: delete +- svcOperationId: 285 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 209 + operation: resume + kind: instance + action: resume +- svcOperationId: 208 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 190 + svcOperationCfsParam: nsxtUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 191 + svcOperationCfsParam: vappName + dataType: string + isRequired: true + defaultValue: fgpdul5a + isModifiable: false +- svcOperationCfsParamId: 623 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +cfsParamsByOp: + 69: + - 190 + - 191 + - 623 + 70: [] + 285: [] + 209: [] + 208: [] +stateParams: + nsxtUid: '' + vappName: fgpdul5a + vdcUid: '' diff --git a/site/services/stand3/27_vc_vm_v2.yaml b/site/services/stand3/27_vc_vm_v2.yaml new file mode 100644 index 0000000..7ae978e --- /dev/null +++ b/site/services/stand3/27_vc_vm_v2.yaml @@ -0,0 +1,52 @@ +name: vc_vm_v2 +service_id: 27 +service_display_name: VM в Cloud Director (vc_vmV2) +service_short_name: vc_vm_v2 +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 100 + operation: create + kind: instance + action: create +- svcOperationId: 101 + operation: delete + kind: instance + action: delete +- svcOperationId: 104 + operation: modify + kind: instance + action: modify +- svcOperationId: 102 + operation: resume + kind: instance + action: resume +- svcOperationId: 103 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 301 + svcOperationCfsParam: serverListJson + dataType: json + isRequired: true + defaultValue: '[{}]' + isModifiable: true +- svcOperationCfsParamId: 302 + svcOperationCfsParam: serverListJson + dataType: json + isRequired: true + defaultValue: '[{}]' + isModifiable: true +cfsParamsByOp: + 100: + - 301 + 101: [] + 104: + - 302 + 102: [] + 103: [] +stateParams: + serverListJson: '[{}]' diff --git a/site/services/stand3/28_vc_vm_v3.yaml b/site/services/stand3/28_vc_vm_v3.yaml new file mode 100644 index 0000000..a790017 --- /dev/null +++ b/site/services/stand3/28_vc_vm_v3.yaml @@ -0,0 +1,298 @@ +name: vc_vm_v3 +service_id: 28 +service_display_name: Виртуальная машина +service_short_name: vc_vm_v3 +service_man: '# Документация по разворачиванию ВМ в Личном кабинете

Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).

## Доступные + операции
- **create** — Создание виртуальной машины
- **delete** — Удаление виртуальной машины
- **resume** — Запуск виртуальной машины
- **suspend** — Остановка виртуальной машины

---

## + Параметры для развёртывания ВМ

### Обязательные параметры:

**vappUid**
UUID vApp, в которой будет создаваться виртуальная машина.
*Пример: WZ00400*

**vmName**
Уникальное + имя виртуальной машины.
*Пример: test-vm*

**vmCpu**
Количество ядер процессора. Должно быть больше 0.
*Пример: 1*

**vmRam**
Объем оперативной памяти в гигабайтах. Должно + быть больше 0.
*Пример: 1*


**accessPortList**
Белый список портов для доступа к виртуальной машине извне в формате JSON.
*Пример: ["22","10050]*

**imageVm**
Образ + операционной системы для развёртывания.
*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*

**userLogin**
Логин пользователя для SSH-доступа.
*По умолчанию: + myuser*

**userPublicKey**
Публичный SSH-ключ пользователя в формате OpenSSH.
*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*

**needAddZabbixTemplate**
Значение истина\ложь, + определяющее будет ли добавлен хост в zabbix.
*Пример: true*

### Опциональные параметры:

**accessIpList**
Белый список IP-адресов для доступа к виртуальной машине в формате JSON. + Если оставить пустым, вм будет доступена со всех адресов.
*Пример: ["192.168.1.1", "10.0.0.5"]*

**vmDisk**
Размер дополнительного диска в гигабайтах. Должно быть больше 0.
*Пример: + 50*

**ipSpaceName**
Внешний IP-адрес. Если не требуется — укажите значение "no-needed" (В нем не будет работать сбор метрик zabbix).

**cloudInit**
YAML-скрипт для кастомизации + системы через cloud-init.

---

## Доступные образы операционных систем

### RockyLinux_9-16G-cloudinit
Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для + серверных задач.
- Размер системного диска: 16 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

### Ubuntu_22-20G
Образ на основе Ubuntu Server 22.04 LTS для + облачного окружения.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

### Debian_13-20G
Образ на основе Debian 13 (Trixie) для + стабильной серверной работы.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM

---

## Пример использования Cloud-init

```yaml
users:
- + name: myuser
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...

packages:
- + nginx

runcmd:
- systemctl enable --now nginx
- systemctl restart nginx
```

---

## Результат выполнения

После успешного развёртывания в Личном кабинете + появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.

---

## Важные примечания

### + Особенности работы:
- Для отключения внешнего IP укажите значение "no-needed" в параметре ipSpaceName
- Параметр cloudInit является опциональным

### Ограничения:
- Не рекомендуется + использовать продолжительные инструкции в cloud-init (таймаут 5 минут)
- Не поддерживается запись файлов через cloud-init
- Не реализовано создание резервных копий ВМ

---

## + Диагностика проблем с cloud-init

### Основной лог-файл:
```bash
/var/log/cloud-init.log
```

### Пакет не устанавливается:
- Проверьте доступность пакета в репозитории
- + Убедитесь в правильности написания имени пакета
- Попробуйте установить вручную: `apt install <имя_пакета>` (Debian/Ubuntu) или `dnf install <имя_пакета>` (Rocky Linux)

### Команда не выполняется:
- + Проверьте наличие требуемой утилиты в системе
- Убедитесь в правильности синтаксиса команды
- Попробуйте выполнить команду вручную для диагностики' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 132 + operation: create + kind: instance + action: create +- svcOperationId: 133 + operation: delete + kind: instance + action: delete +- svcOperationId: 159 + operation: modify + kind: instance + action: modify +- svcOperationId: 286 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 164 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 135 + operation: resume + kind: instance + action: resume +- svcOperationId: 134 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 407 + svcOperationCfsParam: vappUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 408 + svcOperationCfsParam: vmName + dataType: string + isRequired: true + defaultValue: web01 + isModifiable: false +- svcOperationCfsParamId: 409 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 410 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 411 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 412 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 413 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 414 + svcOperationCfsParam: imageVm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 415 + svcOperationCfsParam: cloudInit + dataType: yaml + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 416 + svcOperationCfsParam: userLogin + dataType: string + isRequired: true + defaultValue: myuser + isModifiable: false +- svcOperationCfsParamId: 417 + svcOperationCfsParam: userPublicKey + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 448 + svcOperationCfsParam: accessPortList + dataType: string + isRequired: true + defaultValue: '["22"]' + isModifiable: true +- svcOperationCfsParamId: 493 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 494 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 495 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 496 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - no-needed + - internet-antiddos-v1 + - internet-no-antiddos-v1 + - internet-ipv4-v1 +- svcOperationCfsParamId: 497 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 498 + svcOperationCfsParam: accessPortList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 509 + svcOperationCfsParam: vmName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 510 + svcOperationCfsParam: vmCpu + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 511 + svcOperationCfsParam: vmRam + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 512 + svcOperationCfsParam: vmDisk + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 513 + svcOperationCfsParam: ipSpaceName + dataType: string + isRequired: false + defaultValue: '' + isModifiable: true + valueList: + - no-needed + - internet-antiddos-v1 + - internet-no-antiddos-v1 + - internet-ipv4-v1 +- svcOperationCfsParamId: 514 + svcOperationCfsParam: accessIpList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 515 + svcOperationCfsParam: imageVm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - RockyLinux_9-16G-cloudinit + - Ubuntu_22-20G + - Debian_13-20G +- svcOperationCfsParamId: 516 + svcOperationCfsParam: userLogin + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 517 + svcOperationCfsParam: userPublicKey + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 518 + svcOperationCfsParam: cloudInit + dataType: yaml + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 520 + svcOperationCfsParam: accessPortList + dataType: json + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 132: + - 407 + - 408 + - 409 + - 410 + - 411 + - 412 + - 413 + - 414 + - 415 + - 416 + - 417 + - 448 + 133: [] + 159: + - 493 + - 494 + - 495 + - 496 + - 497 + - 498 + 286: [] + 164: + - 509 + - 510 + - 511 + - 512 + - 513 + - 514 + - 515 + - 516 + - 517 + - 518 + - 520 + 135: [] + 134: [] +stateParams: + vappUid: '' + vmName: web01 + vmCpu: '1' + vmRam: '1' + vmDisk: '' + ipSpaceName: '' + accessIpList: '' + imageVm: '' + cloudInit: '' + userLogin: myuser + userPublicKey: '' + accessPortList: '["22"]' diff --git a/site/services/stand3/29_vc_vdc_group.yaml b/site/services/stand3/29_vc_vdc_group.yaml new file mode 100644 index 0000000..a2bb7c8 --- /dev/null +++ b/site/services/stand3/29_vc_vdc_group.yaml @@ -0,0 +1,71 @@ +name: vc_vdc_group +service_id: 29 +service_display_name: Группа датацентров +service_short_name: vcVdcGroup +service_man: '# Инструкция по развертыванию Группа виртуальных датацентров (groupvDC) через платформу

## 1. Общая информация

Сервис **Группа виртуальных датацентров (groupvDC)** предназначен + для логического объединения нескольких виртуальных датацентров (vDC) в единую группу. Это позволяет растягивать SDN между разными vDC и централизованно управлять сетевой связностью. Управление инфраструктурой + осуществляется через Cloud Director.
Сервис применяется в случаях, когда требуется обеспечить единое сетевое пространство для распределенных виртуальных датацентров.

### Доступные операции

**create** + — Создание новой группы виртуальных датацентров.
**delete** — Удаление существующей группы vDC.
**add_vdc** — Добавление дополнительного виртуального датацентра в группу.
**remove_vdc** — + Удаление ранее добавленного виртуального датацентра из группы.

---

## 2. Параметры развертывания

Параметры операции **create**:

### UUID VDC
Идентификатор виртуального + датацентра, который будет являться первичным в группе.
Описание: требуется предварительно создать виртуальный датацентр с помощью услуги `Виртуальный датацентр (vDC)`.

---

## 3. + Рекомендованные характеристики

### Тестовое окружение
- Для тестового окружения создавать группу VDC нет необходимости, так как это создаёт дополнительный слой абстракции в Cloud Director

### + Промышленное окружение
- Для промышленного окружения, если в тенанте существуют разные VDC, создание groupvdc позволит снизить сетевые издержки (за счёт общей сети)

---

## 4. Выходные + параметры

### Параметры groupvdc
Набор параметров, указанных пользователем при создании

---

## 5. Дополнительная информация
- Группа vDC используется для растягивания + SDN между несколькими виртуальными датацентрами. Управление всеми сетевыми элементами внутри группы выполняется Cloud Director.
- Удалить первичный vDC (тот, что был указан при операции **create**) + невозможно. Для его удаления необходимо удалить всю группу и создать новую.
- Перед добавлением любого vDC в группу он должен быть предварительно развернут через сервис `Виртуальный датацентр (vDC)`.
- + Сети создаются не в этой услуге, а в услуге `Сетевой шлюз периметра (Edge)`. В ней необходимо будет выбрать тип `groupvdc`' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 192 + operation: add_vdc + kind: subresource + action: add +- svcOperationId: 191 + operation: create + kind: instance + action: create +- svcOperationId: 195 + operation: delete + kind: instance + action: delete +- svcOperationId: 251 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 193 + operation: remove_vdc + kind: subresource + action: remove +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 619 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 618 + svcOperationCfsParam: vdcUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 620 + svcOperationCfsParam: vdcName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 192: + - 619 + 191: + - 618 + 195: [] + 251: [] + 193: + - 620 +stateParams: + vdcUid: '' diff --git a/site/services/stand3/2_template.yaml b/site/services/stand3/2_template.yaml new file mode 100644 index 0000000..1045c98 --- /dev/null +++ b/site/services/stand3/2_template.yaml @@ -0,0 +1,199 @@ +name: template +service_id: 2 +service_display_name: Темплейт k8s +service_short_name: template +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 74 + operation: create + kind: instance + action: create +- svcOperationId: 75 + operation: delete + kind: instance + action: delete +- svcOperationId: 76 + operation: modify + kind: instance + action: modify +- svcOperationId: 298 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 98 + operation: resume + kind: instance + action: resume +- svcOperationId: 97 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 813 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '128' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 814 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 815 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + type: + dataType: string + defaultValue: ingress + isRequired: true + isModifiable: false + valueList: + - ingress + - service + domain: + dataType: string + defaultValue: abracadabra-l9gtqv1m + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 816 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + disk: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 817 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + type: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - ingress + - service + domain: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 74: + - 813 + - 814 + - 815 + 75: [] + 76: + - 816 + - 817 + 298: [] + 98: [] + 97: [] +stateParams: + clusterConfiguration: '{"memory": 128, "replicas": 1, "cpu": 100, "disk": 5}' + startupConfiguration: '{"resourceRealm": ""}' + accessConfiguration: '{"type": "ingress", "domain": "abracadabra-l9gtqv1m", "masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' diff --git a/site/services/stand3/50_nextcloud.yaml b/site/services/stand3/50_nextcloud.yaml new file mode 100644 index 0000000..a6f58ee --- /dev/null +++ b/site/services/stand3/50_nextcloud.yaml @@ -0,0 +1,424 @@ +name: nextcloud +service_id: 50 +service_display_name: Nextcloud +service_short_name: nextcloud +service_man: 'Ресурсная платформа: k8s. Автоматизация: helm chart' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 16 + operation: create + kind: instance + action: create +- svcOperationId: 404 + operation: create_backup + kind: subresource + action: create +- svcOperationId: 17 + operation: delete + kind: instance + action: delete +- svcOperationId: 67 + operation: modify + kind: instance + action: modify +- svcOperationId: 390 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 406 + operation: recovery + kind: action + action: recovery +- svcOperationId: 66 + operation: restart + kind: action + action: restart +- svcOperationId: 129 + operation: resume + kind: instance + action: resume +- svcOperationId: 128 + operation: suspend + kind: instance + action: suspend +stateOut: + backups: {} +cfsParams: +- svcOperationCfsParamId: 1055 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + redisEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + psqlUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + redisUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + psqlEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' +- svcOperationCfsParamId: 1056 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1057 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: nextcloud-vbxjicr2 + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1058 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: 33.0.4 + isRequired: true + isModifiable: false + valueList: + - 33.0.4 + documentServer: + dataType: string + defaultValue: collabora + isRequired: true + isModifiable: false + valueList: + - collabora + logLevel: + dataType: string + defaultValue: INFO + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE +- svcOperationCfsParamId: 1077 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + veleroUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1059 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' +- svcOperationCfsParamId: 1060 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 33.0.4 + documentServer: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - collabora + logLevel: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE +- svcOperationCfsParamId: 1078 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + veleroUid: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + recoveryPoint: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + psqlEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + redisEnabled: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'true' + psqlUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + redisUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1079 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: 1,2 + isRequired: true + isModifiable: false + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1000' + - '2000' + - '3000' + - '4000' + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1024' + - '2048' + - '3072' + - '4096' + - '5120' + - '6144' + - '7168' + - '8192' +- svcOperationCfsParamId: 1080 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + domain: + dataType: string + defaultValue: nextcloud-bcdguda1 + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1081 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + logLevel: + dataType: string + defaultValue: NONE + isRequired: true + isModifiable: false + valueList: + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - NONE + version: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + documentServer: + dataType: string + defaultValue: collabora + isRequired: true + isModifiable: false + valueList: + - collabora +cfsParamsByOp: + 16: + - 1055 + - 1056 + - 1057 + - 1058 + 404: + - 1077 + 17: [] + 67: + - 1059 + - 1060 + 390: [] + 406: + - 1078 + - 1079 + - 1080 + - 1081 + 66: [] + 129: [] + 128: [] +stateParams: + startupConfiguration: '{"redisEnabled": true, "psqlUid": "", "redisUid": "", "resourceRealm": "", "psqlEnabled": true}' + clusterConfiguration: '{"cpu": 1000, "memory": 1024, "replicas": 1, "disk": 10}' + accessConfiguration: '{"domain": "nextcloud-vbxjicr2"}' + appConfiguration: '{"version": "33.0.4", "documentServer": "collabora", "logLevel": "INFO"}' diff --git a/site/services/stand3/81_superset.yaml b/site/services/stand3/81_superset.yaml new file mode 100644 index 0000000..3b025e3 --- /dev/null +++ b/site/services/stand3/81_superset.yaml @@ -0,0 +1,82 @@ +name: superset +service_id: 81 +service_display_name: Apache Superset +service_short_name: superset +service_man: 'Apache Superset как сервис.
Ресурсная платформа: k8s.
Автоматизация: k8s operator.
Авторизация: 2FA keycloak (для доменного логина @mgmt.nubes.ru)' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 12 + operation: create + kind: instance + action: create +- svcOperationId: 13 + operation: delete + kind: instance + action: delete +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 14 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: superset-1 + isModifiable: false +- svcOperationCfsParamId: 20 + svcOperationCfsParam: emails + dataType: string + isRequired: true + defaultValue: testuser1 + isModifiable: false +- svcOperationCfsParamId: 96 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: false +- svcOperationCfsParamId: 97 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: false +- svcOperationCfsParamId: 98 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +- svcOperationCfsParamId: 109 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 227 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: false +cfsParamsByOp: + 12: + - 14 + - 20 + - 96 + - 97 + - 98 + - 109 + - 227 + 13: [] +stateParams: + domain: superset-1 + emails: testuser1 + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceRealm: '' + resourceInstances: '1' diff --git a/site/services/stand3/82_harbor.yaml b/site/services/stand3/82_harbor.yaml new file mode 100644 index 0000000..4ecbde7 --- /dev/null +++ b/site/services/stand3/82_harbor.yaml @@ -0,0 +1,108 @@ +name: harbor +service_id: 82 +service_display_name: Container Registry +service_short_name: harbor +service_man: 'Расширенный реестр для управления Docker-образами с enterprise-функциями безопасности, репликации и контроля доступа.
Container Registry позволяет хранить, развертывать и управлять Docker-образами + контейнеров в инфраструктуре NGcloud.
Сервис можно использовать в процессе разработки контейнеров. Например, вы можете настроить систему автоматизации на работу с реестром в Container Registry в рамках + процесса непрерывной интеграции. Контейнеры идеально подходят для запуска небольших, независимых и легко изменяемых сервисов.
Чтобы начать работу, создайте реестр и загрузите в него Docker-образ
Авторизация: + keycloak' +lifecycle: + suspendOnDestroyDefault: false + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 14 + operation: create + kind: instance + action: create +- svcOperationId: 15 + operation: delete + kind: instance + action: delete +- svcOperationId: 270 + operation: modify + kind: instance + action: modify +- svcOperationId: 405 + operation: reconcile + kind: action + action: reconcile +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 16 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: harbor-1 + isModifiable: false +- svcOperationCfsParamId: 110 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 228 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '1000' + isModifiable: true +- svcOperationCfsParamId: 229 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '1024' + isModifiable: true +- svcOperationCfsParamId: 230 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 231 + svcOperationCfsParam: s3Uid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 822 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 823 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 824 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 14: + - 16 + - 110 + - 228 + - 229 + - 230 + - 231 + 15: [] + 270: + - 822 + - 823 + - 824 + 405: [] +stateParams: + domain: harbor-1 + resourceRealm: '' + resourceCPU: '1000' + resourceMemory: '1024' + resourceInstances: '1' + s3Uid: '' diff --git a/site/services/stand3/86_k8s_velero.yaml b/site/services/stand3/86_k8s_velero.yaml new file mode 100644 index 0000000..589298c --- /dev/null +++ b/site/services/stand3/86_k8s_velero.yaml @@ -0,0 +1,175 @@ +name: k8s_velero +service_id: 86 +service_display_name: Velero +service_short_name: k8sVelero +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 332 + operation: create + kind: instance + action: create +- svcOperationId: 331 + operation: delete + kind: instance + action: delete +- svcOperationId: 334 + operation: modify + kind: instance + action: modify +- svcOperationId: 336 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 335 + operation: resume + kind: instance + action: resume +- svcOperationId: 333 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 962 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' +- svcOperationCfsParamId: 963 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 964 + svcOperationCfsParam: nodeAgentConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '2000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '2048' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1076 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + s3BucketUid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1082 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 965 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '2' + - '3' + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 966 + svcOperationCfsParam: nodeAgentConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 332: + - 962 + - 963 + - 964 + - 1076 + 331: + - 1082 + 334: + - 965 + - 966 + 336: [] + 335: [] + 333: [] +stateParams: + clusterConfiguration: '{"cpu": 1000, "memory": 2048, "replicas": 1}' + startupConfiguration: '{"resourceRealm": ""}' + nodeAgentConfiguration: '{"cpu": 2000, "memory": 2048}' + backupConfiguration: '{"s3BucketUid": ""}' diff --git a/site/services/stand3/89_flask.yaml b/site/services/stand3/89_flask.yaml new file mode 100644 index 0000000..d7dbe59 --- /dev/null +++ b/site/services/stand3/89_flask.yaml @@ -0,0 +1,234 @@ +name: flask +service_id: 89 +service_display_name: Web-сервер с фреймворком Flask +service_short_name: flask +service_man: '# Инструкция по развертыванию Web-сервер с фреймворком Flask через платформу

## 1. Общая информация

Сервис **Web-сервер с фреймворком Flask** предназначен для развертывания + веб-приложений на базе Flask.

### Доступные операции

create — включить сервис, развернуть веб-приложение с указанными параметрами.
delete — удалить сервис, только после suspend.
modify + — изменить настройки сервиса и переразвернуть.
suspend — выключить веб-приложение, остановить обслуживание.
resume — включить веб-приложение после suspend.

---

## 2. Параметры + развертывания

Параметры входных данных операции **create**:

### Имя домена
Описание: доменное имя для доступа к веб-приложению. Если указан FQDN, происходит проверка DNS на валидность + А-записи. А-запись должна указывать на балансировщик ресурсной платформы. Если указано имя в рамках одного октета, оно будет добавлено в публичную DNS-зону.
Пример значения: строка, допустимые FQDN + или имя в одном октете. Пример: example.com или myapp.

### Платформа для развертывания
Описание: кластер Kubernetes, в котором будет развернуто приложение.
Пример значения: идентификатор + кластера Kubernetes.

### Квота ядра пода
Описание: количество CPU, выделяемое на под, в Milicores.
Пример значения: целое число, например 500 для 0.5 ядра.

### Квота памяти пода
Описание: + количество памяти, выделяемое на под, в Megabytes.
Пример значения: целое число, например 512 для 512 MB.

### Кол-во реплик пода
Описание: количество инстансов пода для масштабирования.
Пример + значения: целое число, шт, например 2.

### URL Проекта (gitpath)
Описание: полный HTTPS путь до проекта в Git-репозитории.
Пример значения: URL в формате https://github.com/myuser/myproject.git. + Доступ к репозиторию должен быть публичным.

### URL HealthCheck
Описание: путь для проверки здоровья приложения внутри пода.
Пример значения: строка, путь, например /api/v1/health.

### + Переменные окружения пода
Описание: структура данных, которая будет передана как переменные окружения в под.
Пример значения: ключ-значение, например {"ENV": "production"}.

---

## + 3. Рекомендованные характеристики

### Тестовое окружение
- Квота ядра пода: 300m (0.3 ядра)
- Квота памяти пода: 256 MB
- Кол-во реплик пода: 1

### Промышленное окружение
- + Квота ядра пода: от 1000m (1 ядро) в зависимости от нагрузки
- Квота памяти пода: от 1024 MB (1 GB) с учетом потребностей приложения
- Кол-во реплик пода: от 2 для обеспечения отказоустойчивости

---

## + 4. Выходные параметры
Операция create не возвращает явных выходных параметров. Успешное выполнение операции приводит к развертыванию сервиса, доступного по указанному домену.

---

## + 5. Дополнительная информация
- В корне проекта должен находиться файл requirements.txt со списком зависимостей Python.
- Исходный код веб-приложения должен располагаться в директории site.
- + Запуск веб-сервера осуществляется командой python app.py.
- Используется версия Python: python:3.12-slim.
- Git-репозиторий должен быть публично доступен для платформы.
- Операция delete возможна + только после suspend.
- Операция modify приводит к переразвертыванию с новыми параметрами.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 376 + operation: create + kind: instance + action: create +- svcOperationId: 379 + operation: delete + kind: instance + action: delete +- svcOperationId: 375 + operation: modify + kind: instance + action: modify +- svcOperationId: 381 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 380 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 378 + operation: resume + kind: instance + action: resume +- svcOperationId: 377 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1037 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1038 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1039 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: flask-4brtjmwm + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1040 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '3.12' + isRequired: true + isModifiable: false + valueList: + - '3.12' + gitPath: + dataType: string + defaultValue: https://github.com/Foxyhhd/Baldurs-Gate-test.git + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1041 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1042 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1043 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '3.12' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1044 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1045 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 376: + - 1037 + - 1038 + - 1039 + - 1040 + - 1041 + 379: [] + 375: + - 1042 + - 1043 + - 1044 + 381: [] + 380: + - 1045 + 378: [] + 377: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "flask-4brtjmwm"}' + appConfiguration: '{"healthPath": "", "version": "3.12", "gitPath": "https://github.com/Foxyhhd/Baldurs-Gate-test.git"}' + jsonEnv: '{}' diff --git a/site/services/stand3/90_postgres.yaml b/site/services/stand3/90_postgres.yaml new file mode 100644 index 0000000..c85f935 --- /dev/null +++ b/site/services/stand3/90_postgres.yaml @@ -0,0 +1,855 @@ +name: postgres +service_id: 90 +service_display_name: PostgreSQL +service_short_name: postgres +service_man: '# Инструкция по развертыванию PostgreSQL через платформу

---
## 1. Общая информация

PostgreSQL — это надёжная объектно-реляционная СУБД с открытым исходным кодом, поддерживающая + расширенный набор функций, транзакции и хранение сложных типов данных. Развёртывание полностью автоматизировано платформой на базе Zalando Postgres Operator с использованием Kubernetes.

## Доступные + операции

- **create** — Создание кластера
- **delete** — Удаление кластера
- **modify** — Модификация кластера
- **suspend** — Остановка кластера
- **resume** — + Запуск кластера
- **restart** — Перезапуск кластера
- **recovery** — Восстановление из резервной копии

- **create_user** — Создание пользователя
- **delete_user** — Удаление + пользователя

- **create_database** — Создание базы данных
- **delete_database** — Удаление базы данных


---
## 2. Параметры развертывания кластера

Ниже перечислены + параметры, которые необходимо указать при создании ресурса PostgreSQL:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в которой будет развернут кластер). Пример: + `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество инстансов (реплик) в кластере PostgreSQL. Пример: `2` (master + slave).

* **Квота (megabyte) памяти пода:**
Квота + памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска для базы + данных:**
Размер диска для хранения данных в гигабайтах. Пример: `20`

* **Выделяет внешний IP для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для доступа + к master. Пример: `true` или `false`

* **Имя ipSpace для публикации внешнего IP master:**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`

* + **Выделяет внешний IP для доступа к slave:**
Флаг для выделения внешнего IP для slave (реплики чтения). Работает, если slave присутствует в кластере.

* **Имя ipSpace для публикации внешнего + IP slave:**
Если включен параметр для slave, то поле необходимо заполнить.

* **UUID экземпляра услуги S3:**
UUID экземпляра S3 для хранения резервных копий.

* **Версия PostgreSQL:**
Версия + PostgreSQL для развертывания. Пример: `16`

* **Расписание бэкапов (ext_BACKUP_SCHEDULE):**
Необязательный. Cron-выражение для времени запуска бэкапов. По умолчанию: `0 0 * * *` (ежедневно + в полночь).

* **Количество сохраняемых бэкапов (ext_BACKUP_NUM_TO_RETAIN):**
Необязательный. Количество сохраняемых бэкапов. По умолчанию: `7`

* **PgPooler (master / slave):**
Флаги + включения PgBouncer для подключений на запись и чтение. При включении создаётся отдельный под.

* **Разрешить подключение без SSL (allowNoSSL):**
По умолчанию подключение с sslmode=require. + При `true` разрешается подключение без SSL.

* **Автоскейлинг PV (autoScale):**
Включает автоскейлинг тома. Требует настройки autoScalePercentage, autoScaleTechWindow, autoScaleQuotaGb.

* + **Дополнительные параметры PostgreSQL (jsonParameters):**
JSON с переменными конфигурации PostgreSQL. Документация: https://www.postgresql.org/docs/current/runtime-config.html

---
## + 3. Выходные параметры

После успешного развертывания ресурса PostgreSQL платформа возвращает ряд параметров.

#### externalConnect

Внешние эндпоинты для подключения к кластеру:
- + **master** — для операций записи (host: `write.${namespace}`, port: 5432)
- **slave** — для операций чтения (host: `read.${namespace}`, port: 5432)

Пример ответа платформы:

```json
{
"slave": + {
"ip": "",
"fqdn": "",
"uuid": "",
"isExternal": false
},
"master": {
"ip": "",
"fqdn": "write..",
"uuid": + "",
"isExternal": false
}
}
```

Поля: `ip` — внешний IP; `fqdn` — полное имя хоста; `uuid` — идентификатор; `isExternal` — признак внешнего доступа.

#### + internalConnect

Внутренние эндпоинты (FQDN) для подключения из других сервисов внутри той же сети Kubernetes.

Пример ответа платформы:

```json
{
"slave": "",
"master": + {
"slave": "",
"master": {
"slave": "",
"master": "postgresqlk8s-master..svc.cluster.local"
}
}
}
```

Для подключения используйте + значение `master.master.master` (host для записи) или соответствующее значение slave (host для чтения).

Для подключения используется порт **5432**.

---
## 4. Управление пользователями

### + create_user — Создание пользователя

* **Имя пользователя (username):**
Имя создаваемого пользователя. Используется для подключения к базе и настройки прав.
Пример: `myapp_user`

* + **Роль (role):**
Тип роли пользователя. Допустимые значения:
- `app_user` — базовые права для DML-операций (SELECT, INSERT, UPDATE, DELETE)
- `ddl_user` — расширенные права: createdb, + createrole (управление базами и ролями)

Защищённые имена, которые нельзя использовать: `admin`, `postgres`, `standby`.

### delete_user — Удаление пользователя

* **Имя пользователя + (username):**
Имя удаляемого пользователя. Пример: `myapp_user`

Пользователя нельзя удалить, если он является владельцем базы данных. Сначала удалите или передайте владение базами данных + другому пользователю.

---
## 5. Управление базами данных

### create_database — Создание базы данных

* **Имя базы данных (dbName):**
Название создаваемой базы данных. + Пример: `myapp_db`

* **Владелец базы данных (dbOwner):**
Имя пользователя-владельца базы. Должен существовать в кластере (создан через create_user). Пример: `myapp_user`

### delete_database + — Удаление базы данных

* **Имя базы данных (dbName):**
Название удаляемой базы данных. Пример: `myapp_db`
' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 19 + operation: create + kind: instance + action: create +- svcOperationId: 264 + operation: create_backup + kind: subresource + action: create +- svcOperationId: 245 + operation: create_database + kind: subresource + action: create +- svcOperationId: 241 + operation: create_user + kind: subresource + action: create +- svcOperationId: 20 + operation: delete + kind: instance + action: delete +- svcOperationId: 246 + operation: delete_database + kind: subresource + action: delete +- svcOperationId: 244 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 48 + operation: modify + kind: instance + action: modify +- svcOperationId: 263 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 47 + operation: recovery + kind: action + action: recovery +- svcOperationId: 54 + operation: restart + kind: action + action: restart +- svcOperationId: 114 + operation: resume + kind: instance + action: resume +- svcOperationId: 115 + operation: suspend + kind: instance + action: suspend +stateOut: + backups: {} + databases: {} + users: {} +cfsParams: +- svcOperationCfsParamId: 788 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 789 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 790 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 791 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '17' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerMaster: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 792 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 793 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 794 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 1094 + svcOperationCfsParam: mtlsConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '{}' + isModifiable: true + dataDescriptor: + type: + dataType: string + defaultValue: 'off' + isRequired: true + isModifiable: false + valueList: + - 'off' + - manual + - auto + durationCA: + dataType: integer > 0 + defaultValue: '175200' + isRequired: true + isModifiable: false + durationServer: + dataType: integer > 0 + defaultValue: '87600' + isRequired: true + isModifiable: false + certCA: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + certServer: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 741 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 742 + svcOperationCfsParam: dbOwner + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 733 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 740 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - app_user + - ddl_user +- svcOperationCfsParamId: 1096 + svcOperationCfsParam: mtlsAccess + dataType: boolean + isRequired: true + defaultValue: 'false' + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 457 + svcOperationCfsParam: deleteS3Bucket + dataType: boolean + isRequired: true + defaultValue: 'true' + isModifiable: true + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 743 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 739 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 795 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 796 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 797 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: false,true + isRequired: true + isModifiable: false + poolerMaster: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 798 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 799 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 800 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + enabled: + dataType: boolean + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + schedule: + dataType: integer >= 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' +- svcOperationCfsParamId: 1095 + svcOperationCfsParam: mtlsConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + certCA: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + certServer: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + refreshCert: + dataType: boolean + defaultValue: 'false' + isRequired: false + isModifiable: false + valueList: + - 'false' + - 'true' + type: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - 'off' + - manual + - auto + durationCA: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + durationServer: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 801 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru + recoveryPoint: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 802 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 803 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 804 + svcOperationCfsParam: postgresConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '17' + isRequired: true + isModifiable: false + valueList: + - '17' + - '16' + sslRequired: + dataType: boolean + defaultValue: 'true' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerMaster: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' + poolerSlave: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +- svcOperationCfsParamId: 805 + svcOperationCfsParam: postgresConf + dataType: array-map-fixed + isRequired: false + defaultValue: '' + isModifiable: true + dataDescriptor: + paramName: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - log_connections + - log_disconnections + paramValue: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 806 + svcOperationCfsParam: backupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + s3Uid: + dataType: uuid + defaultValue: '' + isRequired: true + isModifiable: false + retain: + dataType: integer > 0 + defaultValue: '7' + isRequired: true + isModifiable: false + schedule: + dataType: string + defaultValue: 0 0 * * * + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 807 + svcOperationCfsParam: autoscaleConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + schedule: + dataType: integer >= 0 + defaultValue: '0' + isRequired: true + isModifiable: false + valueList: + - '0' + - '5' + - '12' + - '23' + quota: + dataType: integer > 0 + defaultValue: '100' + isRequired: true + isModifiable: false + percent: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + valueList: + - '10' + - '15' + - '20' + enabled: + dataType: boolean + defaultValue: 'false' + isRequired: true + isModifiable: false + valueList: + - 'false' + - 'true' +cfsParamsByOp: + 19: + - 788 + - 789 + - 790 + - 791 + - 792 + - 793 + - 794 + - 1094 + 264: [] + 245: + - 741 + - 742 + 241: + - 733 + - 740 + - 1096 + 20: + - 457 + 246: + - 743 + 244: + - 739 + 48: + - 795 + - 796 + - 797 + - 798 + - 799 + - 800 + - 1095 + 263: [] + 47: + - 801 + - 802 + - 803 + - 804 + - 805 + - 806 + - 807 + 54: [] + 114: [] + 115: [] +stateParams: + clusterConfiguration: '{"replicas": 1, "disk": 10, "cpu": 500, "memory": 512}' + startupConfiguration: '{"resourceRealm": ""}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' + postgresConfiguration: '{"version": "17", "sslRequired": true, "poolerMaster": false, "poolerSlave": false}' + postgresConf: '{"paramName": "", "paramValue": ""}' + backupConfiguration: '{"s3Uid": "", "retain": 7, "schedule": "0 0 * * *"}' + autoscaleConfiguration: '{"enabled": false, "schedule": 0, "quota": 100, "percent": 10}' + mtlsConfiguration: '{"type": "off", "durationCA": 175200, "durationServer": 87600, "certCA": "", "certServer": ""}' diff --git a/site/services/stand3/91_redis.yaml b/site/services/stand3/91_redis.yaml new file mode 100644 index 0000000..799a3cf --- /dev/null +++ b/site/services/stand3/91_redis.yaml @@ -0,0 +1,184 @@ +name: redis +service_id: 91 +service_display_name: Redis +service_short_name: redis +service_man: 'Redis кластер. Под кеши.
Ресурсная платформа: k8s.
Автоматизация: k8s operator
port 6379' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 21 + operation: create + kind: instance + action: create +- svcOperationId: 22 + operation: delete + kind: instance + action: delete +- svcOperationId: 394 + operation: modify + kind: instance + action: modify +- svcOperationId: 391 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 393 + operation: resume + kind: instance + action: resume +- svcOperationId: 392 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1061 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1062 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + memory: + dataType: integer > 0 + defaultValue: '512' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '10' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '500' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1063 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1064 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1065 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + slaveIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + slaveAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 21: + - 1061 + - 1062 + - 1063 + 22: [] + 394: + - 1064 + - 1065 + 391: [] + 393: [] + 392: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"memory": 512, "replicas": 1, "disk": 10, "cpu": 500}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}' diff --git a/site/services/stand3/92_mongodb.yaml b/site/services/stand3/92_mongodb.yaml new file mode 100644 index 0000000..fd05d67 --- /dev/null +++ b/site/services/stand3/92_mongodb.yaml @@ -0,0 +1,265 @@ +name: mongodb +service_id: 92 +service_display_name: MongoDB +service_short_name: mongodb +service_man: '# Инструкция по развертыванию MongoDB через платформу

## 1. Общая информация

MongoDB — документоориентированная распределённая база данных, обеспечивающая высокую доступность, + горизонтальное масштабирование и гибкую модель хранения.

### Доступные операции с кластером

* **create** — создание базы
* **delete** — удаление базы данных
* **suspend** — + остановка базы данных
* **resume** — запуск базы данных
* **modify** — изменение базы данных

### Доступные операции с пользователями

* **create_user** — создание пользователя
* + **modify_user** — модификация пользователя
* **delete_user** — удаление пользователя

---

## 2. Параметры развертывания базы данных

Эти параметры необходимо указать при создании + базы данных.

### Платформа для развертывания

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

### Количество узлов

Количество реплик в + кластере MongoDB.
Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> + **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### + Квота CPU пода (mCPU)

CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных в гигабайтах.
Пример: + `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: + `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: + `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры модификации базы данных

Все параметры, которые вы указываете при модификации, являются необязательными — система автоматически + подставит ранее сохранённые значения, и при необходимости вы можете изменить их на нужные.

### Количество узлов

Количество реплик в кластере MongoDB.
Оптимально выбирать нечётное + значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> **Примечание:** уменьшение количества узлов + после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### Квота CPU пода (mCPU)

CPU-квота + для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных указывается в гигабайтах. Его можно увеличить при + необходимости, однако уменьшить уже выделенный размер невозможно.
Пример: `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для + доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, + с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры создания пользователя

### + Имя пользователя

Указывается имя пользователя (любой регистр).
Пример: `readApp`

### Имя базы данных

Название базы, в которой будет создан пользователь.
Если база отсутствует, + она будет создана автоматически.
Пример: `Apps_9392`

### Имя роли

* **read** — доступ только на чтение
* **readWrite** — чтение и изменение данных
* **dbOwner** — полный + контроль над базой данных

---

## 4. Параметры модификации пользователя

### Имя пользователя

Необходимо выбрать существующего пользователя.
Если список пуст, требуется + предварительно создать пользователя.

### Имя базы данных

База данных, к которой относится пользователь.
Если база отсутствует, она будет создана автоматически.
Пример: `Apps_9392`

### + Имя роли

* **read**
* **readWrite**
* **dbOwner**

---

## 5. Параметры удаления пользователя

### Имя пользователя

Выберите пользователя из списка для + удаления.

---

## 6. Выходные параметры

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

### internalConnect

Внутренний эндпоинт + для подключения к кластеру из сервисов, работающих в той же сети.
Используется для внутренних интеграций и системных сервисов.

### externalConnect

Внешний FQDN для подключения к + кластеру извне.
Порт подключения — **27017**.

---

## 7. Пример подключения

Перед подключением необходимо установить **mongosh**.

Команда подключения к базе данных:

```
mongosh + "mongodb://:@:27017/"
```

Где:

* `` — имя пользователя
* `` — пароль
* `` — internalConnect или + externalConnect
* `` — имя базы данных

## 8. Дополнительная информация

Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину + и паролю.' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 37 + operation: create + kind: instance + action: create +- svcOperationId: 198 + operation: create_user + kind: subresource + action: create +- svcOperationId: 190 + operation: delete + kind: instance + action: delete +- svcOperationId: 199 + operation: delete_user + kind: subresource + action: delete +- svcOperationId: 201 + operation: modify + kind: instance + action: modify +- svcOperationId: 200 + operation: modify_user + kind: subresource + action: modify +- svcOperationId: 409 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 196 + operation: resume + kind: instance + action: resume +- svcOperationId: 194 + operation: suspend + kind: instance + action: suspend +stateOut: + users: {} +cfsParams: +- svcOperationCfsParamId: 1089 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1090 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1091 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 635 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 636 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 643 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - dbOwner + - read + - readWrite +- svcOperationCfsParamId: 644 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1092 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1093 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 640 + svcOperationCfsParam: username + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 641 + svcOperationCfsParam: dbName + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 642 + svcOperationCfsParam: role + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - dbOwner + - read + - readWrite +cfsParamsByOp: + 37: + - 1089 + - 1090 + - 1091 + 198: + - 635 + - 636 + - 643 + 190: [] + 199: + - 644 + 201: + - 1092 + - 1093 + 200: + - 640 + - 641 + - 642 + 409: [] + 196: [] + 194: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"replicas": 1, "disk": 5, "cpu": 1000, "memory": 1024}' + accessConfiguration: '{"masterAccessList": "[]", "masterIpSpace": ""}' diff --git a/site/services/stand3/93_rabbitmq.yaml b/site/services/stand3/93_rabbitmq.yaml new file mode 100644 index 0000000..915b166 --- /dev/null +++ b/site/services/stand3/93_rabbitmq.yaml @@ -0,0 +1,194 @@ +name: rabbitmq +service_id: 93 +service_display_name: RabbitMQ +service_short_name: rabbitmq +service_man: '# Инструкция по развертыванию RabbitMQ через платформу

---
## 1. Общая информация
RabbitMQ — это брокер сообщений с открытым исходным кодом, который обеспечивает надёжную + доставку сообщений между приложениями.
Позволяет надёжно передавать сообщения между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. + Развёртывание полностью автоматизировано платформой.

## Доступные операции
- **create** — Создание кластера
- **modify** — Изменение параметров кластера
- **delete** — Удаление + кластера
- **suspend** — Остановка кластера
- **resume** — Запуск кластера


---
## 2. Параметры развертывания кластера
Ниже перечислены параметры, которые необходимо + указать при создании ресурса RabbitMQ:

* **Платформа для развертывания:**
Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.

* + **Количество узлов в сети:**
Количество реплик в кластере RabbitMQ. При значении больше 1 создаётся кластер с репликацией для обеспечения высокой доступности.
Пример: `1` (single node) или + `3` (кластер с репликацией)

* **Квота (megabyte) памяти пода:**
Квота памяти пода в мегабайтах. Пример: `2048`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах + (1000 mCPU = 1 vCPU). Пример: `1000`

* **Размер (gigabyte) диска для базы данных:**
Размер диска для хранения данных RabbitMQ в гигабайтах. Пример: `50`

* **Выделяет внешний IP + для доступа к master:**
Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-узлу. При включении создаётся Service типа LoadBalancer и настраивается VIP на порту 5672.
Пример: + `true` или `false`

* **Имя ipSpace для публикации внешнего IP master:**
Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`


---
## + 3. Модификация кластера
Операция **modify** позволяет изменить параметры существующего кластера RabbitMQ.

**Изменяемые параметры:**
* **Квота (megabyte) памяти пода** — можно увеличить + или уменьшить
* **Квота (millicore) ядра пода** — можно увеличить или уменьшить
* **Размер (gigabyte) диска для базы данных** — можно только увеличить (уменьшение не поддерживается)
* **Количество + узлов в сети** — можно только увеличить (уменьшение не поддерживается)
* **Выделяет внешний IP для доступа к master** — можно включить или выключить
* **Имя ipSpace для публикации внешнего IP + master** — можно изменить при включенном внешнем IP

**Ограничения:**
* Уменьшение размера диска не поддерживается
* Уменьшение количества реплик не поддерживается

---
## + 4. Выходные параметры
После успешного развертывания ресурса RabbitMQ платформа возвращает ряд параметров в разделе "Поля состояния (сгенерированные значения)":

**clusterDomain**
Домен + кластера Kubernetes, в котором развернут RabbitMQ.
Пример: `cluster.local`

**inernalConnect**
Внутренние эндпоинты для подключения к кластеру RabbitMQ из других сервисов, развернутых + внутри той же сети.
Содержит:
* **master** — FQDN для подключения к кластеру. Пример: `rabbitmqk8s.{namespace}.svc.{clusterDomain}`

**externalConnect**
Внешние эндпоинты для подключения + к кластеру RabbitMQ извне.
Содержит объекты с полями:
* **admin** — доступ к веб-интерфейсу управления:
* `fqdn` — полное доменное имя для веб-интерфейса. Пример: `admin.{namespace}.{domain}`
* + `ip` — IP-адрес
* **master** — доступ к AMQP протоколу (если включен внешний IP):
* `fqdn` — полное доменное имя для AMQP. Пример: `write.{namespace}.{domain}`
* `ip` — IP-адрес

**monitoring**
Информация + о дашбордах мониторинга:
* **allDashboards** — URL для доступа ко всем дашбордам Grafana

Для подключения используются следующие порты:

* **5672** — AMQP протокол (внутренний и внешний + доступ, если включен внешний IP)
* **15672** — веб-интерфейс управления (доступен через Ingress по HTTPS)

**Учётные данные**
Данные для подключения к RabbitMQ доступны в разделе "Учётные + данные":
* **adminUser** — имя пользователя администратора
* **adminPass** — пароль администратора


---
## 5. Примеры подключения через консоль (rabbitmqadmin)

### Работа + с очередями через rabbitmqadmin

Для работы с RabbitMQ через консоль используется утилита `rabbitmqadmin`. Установите её или используйте образ с предустановленной утилитой.

Задайте переменные + окружения с учётными данными:

```bash
export RABBITMQ_USERNAME=
export RABBITMQ_PASSWORD=
export RABBIT_HOST=
```

Где:
* `` + и `` — учётные данные из раздела "Учётные данные"
* `` — адрес для подключения:
* Для внешнего подключения: `externalConnect.admin.fqdn` или `externalConnect.master.fqdn`

**Создание + очереди:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
declare queue name=healthcheck durable=false
```

**Листинг + очередей:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
list queues
```

**Отправка сообщения:**

```bash
rabbitmqadmin + \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
publish exchange=amq.default routing_key=healthcheck payload="ping-$(date +%s)"
```

**Чтение + сообщения:**

```bash
rabbitmqadmin \
-H "$RABBIT_HOST" -P 15672 \
-u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
get queue=healthcheck ackmode=ack_requeue_false
```

---
## + 6. Дополнительная информация
Для подключения к кластеру RabbitMQ используйте полученные эндпоинты из раздела "Поля состояния (сгенерированные значения)" и учётные данные из раздела "Учётные данные".

Веб-интерфейс + управления доступен по адресу, указанному в параметре `externalConnect.admin.fqdn` через HTTPS.

Для внутреннего подключения используйте адрес из `inernalConnect.master` на порту 5672.

---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 38 + operation: create + kind: instance + action: create +- svcOperationId: 39 + operation: delete + kind: instance + action: delete +- svcOperationId: 106 + operation: modify + kind: instance + action: modify +- svcOperationId: 410 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 117 + operation: resume + kind: instance + action: resume +- svcOperationId: 116 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1097 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1098 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '1000' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '1024' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' + disk: + dataType: integer > 0 + defaultValue: '5' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1099 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '[]' + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1100 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + disk: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1101 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + masterIpSpace: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + masterAccessList: + dataType: json + defaultValue: '' + isRequired: true + isModifiable: false +cfsParamsByOp: + 38: + - 1097 + - 1098 + - 1099 + 39: [] + 106: + - 1100 + - 1101 + 410: [] + 117: [] + 116: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 1000, "memory": 1024, "replicas": 1, "disk": 5}' + accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}' diff --git a/site/services/stand3/94_lucee.yaml b/site/services/stand3/94_lucee.yaml new file mode 100644 index 0000000..db6768a --- /dev/null +++ b/site/services/stand3/94_lucee.yaml @@ -0,0 +1,224 @@ +name: lucee +service_id: 94 +service_display_name: Lucee +service_short_name: lucee +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 49 + operation: create + kind: instance + action: create +- svcOperationId: 50 + operation: delete + kind: instance + action: delete +- svcOperationId: 55 + operation: modify + kind: instance + action: modify +- svcOperationId: 373 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 53 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 163 + operation: restart + kind: action + action: restart +- svcOperationId: 95 + operation: resume + kind: instance + action: resume +- svcOperationId: 96 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1019 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1020 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1021 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: lucee-pzpvwkuk + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1022 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '6.0' + isRequired: true + isModifiable: false + valueList: + - '5.4' + - '6.0' + gitPath: + dataType: string + defaultValue: https://github.com/xahys/testlucee + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1023 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1024 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1025 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '6.0' + - '5.4' +- svcOperationCfsParamId: 1026 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1027 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 49: + - 1019 + - 1020 + - 1021 + - 1022 + - 1023 + 50: [] + 55: + - 1024 + - 1025 + - 1026 + 373: [] + 53: + - 1027 + 163: [] + 95: [] + 96: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "lucee-pzpvwkuk"}' + appConfiguration: '{"healthPath": "", "version": "6.0", "gitPath": "https://github.com/xahys/testlucee"}' + jsonEnv: '{}' diff --git a/site/services/stand3/95_nodejs.yaml b/site/services/stand3/95_nodejs.yaml new file mode 100644 index 0000000..a351726 --- /dev/null +++ b/site/services/stand3/95_nodejs.yaml @@ -0,0 +1,225 @@ +name: nodejs +service_id: 95 +service_display_name: NodeJS +service_short_name: nodejs +service_man: Развертывает контейнер в k8s кластере с node, который можно использовать для запуска своих приложений.
Приложение должно быть доступно по ссылки в git репозитории, которая является входным + параметром. +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 58 + operation: create + kind: instance + action: create +- svcOperationId: 61 + operation: delete + kind: instance + action: delete +- svcOperationId: 59 + operation: modify + kind: instance + action: modify +- svcOperationId: 374 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 60 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 121 + operation: resume + kind: instance + action: resume +- svcOperationId: 120 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 1028 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 1029 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '200' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '256' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '1' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1030 + svcOperationCfsParam: accessConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: false + dataDescriptor: + domain: + dataType: string + defaultValue: node-ctkmt4iw + isRequired: true + isModifiable: false +- svcOperationCfsParamId: 1031 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '23' + isRequired: true + isModifiable: false + valueList: + - '18' + - '20' + - '22' + - '23' + gitPath: + dataType: string + defaultValue: https://github.com/xahys/testnode.git + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '1' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1032 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: true +- svcOperationCfsParamId: 1033 + svcOperationCfsParam: clusterConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + cpu: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + memory: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + replicas: + dataType: integer > 0 + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '1' + - '3' + - '5' + - '7' +- svcOperationCfsParamId: 1034 + svcOperationCfsParam: appConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + version: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - '18' + - '20' + - '22' + - '23' + gitPath: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + healthPath: + dataType: string + defaultValue: '' + isRequired: false + isModifiable: false +- svcOperationCfsParamId: 1035 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 1036 + svcOperationCfsParam: startupConfiguration + dataType: map-fixed + isRequired: true + defaultValue: '' + isModifiable: true + dataDescriptor: + resourceRealm: + dataType: string + defaultValue: '' + isRequired: true + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 58: + - 1028 + - 1029 + - 1030 + - 1031 + - 1032 + 61: [] + 59: + - 1033 + - 1034 + - 1035 + 374: [] + 60: + - 1036 + 121: [] + 120: [] +stateParams: + startupConfiguration: '{"resourceRealm": ""}' + clusterConfiguration: '{"cpu": 200, "memory": 256, "replicas": 1}' + accessConfiguration: '{"domain": "node-ctkmt4iw"}' + appConfiguration: '{"version": "23", "gitPath": "https://github.com/xahys/testnode.git", "healthPath": "1"}' + jsonEnv: '{}' diff --git a/site/services/stand3/96_pgadmin.yaml b/site/services/stand3/96_pgadmin.yaml new file mode 100644 index 0000000..7c09014 --- /dev/null +++ b/site/services/stand3/96_pgadmin.yaml @@ -0,0 +1,133 @@ +name: pgadmin +service_id: 96 +service_display_name: pgAdmin +service_short_name: pgadmin +service_man: Инструмент с графическим интерфейсом для управления базами данных PostgreSQL +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 62 + operation: create + kind: instance + action: create +- svcOperationId: 63 + operation: delete + kind: instance + action: delete +- svcOperationId: 64 + operation: modify + kind: instance + action: modify +- svcOperationId: 65 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 123 + operation: resume + kind: instance + action: resume +- svcOperationId: 122 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 164 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: pgadmin-1 + isModifiable: false +- svcOperationCfsParamId: 165 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 166 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 167 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 169 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 170 + svcOperationCfsParam: login + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 171 + svcOperationCfsParam: password + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 172 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 173 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 174 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: false + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 277 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 62: + - 164 + - 165 + - 166 + - 167 + - 169 + - 170 + - 171 + 63: [] + 64: + - 172 + - 173 + - 174 + 65: + - 277 + 123: [] + 122: [] +stateParams: + domain: pgadmin-1 + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceRealm: '' + login: '' + password: '' diff --git a/site/services/stand3/98_http.yaml b/site/services/stand3/98_http.yaml new file mode 100644 index 0000000..fa6348b --- /dev/null +++ b/site/services/stand3/98_http.yaml @@ -0,0 +1,145 @@ +name: http +service_id: 98 +service_display_name: Простой HTTP контейнер +service_short_name: http +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 77 + operation: create + kind: instance + action: create +- svcOperationId: 78 + operation: delete + kind: instance + action: delete +- svcOperationId: 81 + operation: modify + kind: instance + action: modify +- svcOperationId: 403 + operation: reconcile + kind: action + action: reconcile +- svcOperationId: 79 + operation: redeploy + kind: action + action: redeploy +- svcOperationId: 130 + operation: resume + kind: instance + action: resume +- svcOperationId: 131 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 212 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: http-1 + isModifiable: false +- svcOperationCfsParamId: 213 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '100' + isModifiable: true +- svcOperationCfsParamId: 214 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '200' + isModifiable: true +- svcOperationCfsParamId: 215 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 216 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: false + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +- svcOperationCfsParamId: 217 + svcOperationCfsParam: registryPath + dataType: string + isRequired: true + defaultValue: nexus-sa.tst.nubes.ru/docker-nubes/jolt + isModifiable: false +- svcOperationCfsParamId: 241 + svcOperationCfsParam: jsonEnv + dataType: map + isRequired: false + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 782 + svcOperationCfsParam: ingressAnnotations + dataType: map + isRequired: false + defaultValue: '{}' + isModifiable: false +- svcOperationCfsParamId: 218 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 219 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 220 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 272 + svcOperationCfsParam: resourceRealm + dataType: string + isRequired: true + defaultValue: '' + isModifiable: true + valueList: + - k8s-3-sandbox-nubes-ru + - k8s-4-sandbox-nubes-ru +cfsParamsByOp: + 77: + - 212 + - 213 + - 214 + - 215 + - 216 + - 217 + - 241 + - 782 + 78: [] + 81: + - 218 + - 219 + - 220 + 403: [] + 79: + - 272 + 130: [] + 131: [] +stateParams: + domain: http-1 + resourceCPU: '100' + resourceMemory: '200' + resourceInstances: '1' + resourceRealm: '' + registryPath: nexus-sa.tst.nubes.ru/docker-nubes/jolt + jsonEnv: '' + ingressAnnotations: '{}' diff --git a/site/services/stand3/99_gitea.yaml b/site/services/stand3/99_gitea.yaml new file mode 100644 index 0000000..82f15db --- /dev/null +++ b/site/services/stand3/99_gitea.yaml @@ -0,0 +1,164 @@ +name: gitea +service_id: 99 +service_display_name: Gitea +service_short_name: gitea +service_man: '# Инструкция по развертыванию Gitea через платформу

---
## 1. Общая информация
Gitea — это лёгкий, быстрый и самодостаточный сервис хостинга Git-репозиториев с веб-интерфейсом.
Позволяет + создавать и управлять репозиториями, организациями, командами, а также настраивать CI/CD через интеграции.
Развёртывание полностью автоматизировано платформой.

## Доступные операции
- + **create** — Создание сервиса Gitea
- **delete** — Удаление сервиса Gitea
- **modify** — Модификация сервиса Gitea
- **suspend** — Остановка сервиса Gitea
- **resume** — + Запуск сервиса Gitea

---
## 2. Параметры развертывания
Ниже перечислены параметры, которые необходимо указать при создании ресурса Gitea:

* **Платформа для развертывания:**
Платформа + для развертывания (среда, в которой будет развёрнут сервис). Пример: `k8s-3.ext.nubes.ru`.

* **Количество узлов в сети:**
Количество реплик подов Gitea. Пример: `1`

* **Квота (megabyte) + памяти пода:**
Квота памяти пода в мегабайтах. Пример: `1024`

* **Квота (millicore) ядра пода:**
Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`

* **Размер + (gigabyte) диска для базы данных:**
Размер PVC для хранения репозиториев и данных Gitea в гигабайтах. Пример: `10`

* **FQDN / Домен:**
Доменное имя, по которому будет доступен сервис. + Пример: `git.example.com`

* **Инстанс услуги PostgreSQL:**
UUID услуги k8sPgsql, в которой будет создана база данных `gitea` и пользователь `techgitea`.

* **Дополнительные параметры + сервера (iniServerParams):**
JSON-объект с дополнительными параметрами секции `[server]` в `app.ini`. Пример:
```json
{"MAX_CONTENT_LENGTH": "524288000"}
```

* **Дополнительные + annotations для Ingress (ingressExtraAnnotations):**
JSON-объект с дополнительными annotations для Ingress-контроллера. Пример:
```json
{"nginx.ingress.kubernetes.io/proxy-body-size": + "500m"}
```

---
## 3. Особенности подключения и работы с репозиториями

### 3.1. Доступ только по HTTPS
Сервис развёртывается с **rootless-образом** Gitea. SSH-сервер внутри + и он **доступен только внутри кластера Kubernetes**.

**Внешний доступ к репозиториям осуществляется исключительно по HTTPS через Ingress.**

```bash
# Пример клонирования
https://<домен>/<пользователь>/<репозиторий>.git
```

### + 3.2. Настройка git для передачи логина и пароля
Для работы с приватными репозиториями через HTTPS необходимо передать учётные данные. Рекомендуется использовать один из следующих способов:

**Встроить + креды в URL remote**
```bash
git remote set-url origin https://<логин>:<пароль>@<домен>/<пользователь>/<репозиторий>.git
```
> **Важно:** Логин и пароль администратора создаются автоматически + при развертывании и хранятся в Vault.

### 3.3. Работа с большими файлами
По умолчанию `MAX_CONTENT_LENGTH` установлен в **500 МБ**, а Ingress пропускает pack-файлы до **500 МБ**.

Если + необходимо запушить файлы близкие к лимиту, увеличьте HTTP-буфер git на стороне клиента:
```bash
git config http.postBuffer 524288000
```

Для файлов **более 500 МБ** рекомендуется + использовать **Git LFS**.

---
## 4. Выходные параметры
После успешного развертывания ресурса Gitea платформа возвращает ряд параметров.

Ключевым из них является:

**connectionUrl**
Это + внешний URL для доступа к веб-интерфейсу и Git-репозиториям по HTTPS. Пример:
```
https://git.example.com
```

**internalConnect**
Внутренний эндпоинт для подключения к PostgreSQL + из других сервисов внутри кластера.

---
## 5. Дополнительная информация
- База данных `gitea` и пользователь `techgitea` создаются автоматически в указанной услуге PostgreSQL.
- DNS-запись + и TLS-сертификат (Let''s Encrypt) настраиваются автоматически на основе указанного домена.
- Для изменения параметров сервера Gitea (`app.ini`) используйте операцию **modify** с полем `iniServerParams`.
- + Для добавления дополнительных Ingress-annotations используйте операцию **modify** с полем `ingressExtraAnnotations`.
---' +lifecycle: + suspendOnDestroyDefault: true + adoptExistingOnCreateDefault: false +operations: +- svcOperationId: 82 + operation: create + kind: instance + action: create +- svcOperationId: 83 + operation: delete + kind: instance + action: delete +- svcOperationId: 91 + operation: modify + kind: instance + action: modify +- svcOperationId: 127 + operation: resume + kind: instance + action: resume +- svcOperationId: 126 + operation: suspend + kind: instance + action: suspend +stateOut: {} +cfsParams: +- svcOperationCfsParamId: 232 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '500' + isModifiable: true +- svcOperationCfsParamId: 233 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '512' + isModifiable: true +- svcOperationCfsParamId: 234 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 235 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '1' + isModifiable: true +- svcOperationCfsParamId: 237 + svcOperationCfsParam: domain + dataType: string + isRequired: true + defaultValue: gitea-1 + isModifiable: false +- svcOperationCfsParamId: 238 + svcOperationCfsParam: psqlUid + dataType: uuid + isRequired: true + defaultValue: '' + isModifiable: false +- svcOperationCfsParamId: 818 + svcOperationCfsParam: ingressExtraAnnotations + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 821 + svcOperationCfsParam: iniServerParams + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 259 + svcOperationCfsParam: resourceCPU + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 260 + svcOperationCfsParam: resourceMemory + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 261 + svcOperationCfsParam: resourceDisk + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 262 + svcOperationCfsParam: resourceInstances + dataType: integer > 0 + isRequired: true + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 819 + svcOperationCfsParam: ingressExtraAnnotations + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +- svcOperationCfsParamId: 820 + svcOperationCfsParam: iniServerParams + dataType: map + isRequired: false + defaultValue: '' + isModifiable: true +cfsParamsByOp: + 82: + - 232 + - 233 + - 234 + - 235 + - 237 + - 238 + - 818 + - 821 + 83: [] + 91: + - 259 + - 260 + - 261 + - 262 + - 819 + - 820 + 127: [] + 126: [] +stateParams: + resourceCPU: '500' + resourceMemory: '512' + resourceDisk: '1' + resourceInstances: '1' + domain: gitea-1 + psqlUid: '' + ingressExtraAnnotations: '' + iniServerParams: '' diff --git a/tests/test_api.py b/tests/test_api.py index 2ae6020..c9d3bc4 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -340,6 +340,67 @@ def test_delay_negative(): t("POST /_mock/delay/-1 → 400", test_delay_negative) +# ═══════════════════════════════════════ +# 8. MULTI-STAND (v0.5.0+) +# ═══════════════════════════════════════ +print("\n── 8. Multi-Stand (stand1/stand2/stand3) ──") + +STANDS = ["stand1", "stand2", "stand3"] +stand_instances = {} + +def test_stands_services(): + for sid in STANDS: + r = requests.get(f"{BASE}/{sid}/api/v1/svc/services") + st(r, 200, f"{sid} services") +t("GET /{stand}/api/v1/svc/services → 200 для всех стендов", test_stands_services) + +def test_stands_isolated(): + """Каждый стенд — свои инстансы.""" + for sid in STANDS: + requests.post(f"{BASE}/{sid}/api/v1/svc/_mock/reset", headers=MH) + # Создаём по 1 инстансу на стенд + for i, sid in enumerate(STANDS): + r = requests.post(f"{BASE}/{sid}/api/v1/svc/instances", + json={"serviceId": 1, "displayName": f"inst-on-{sid}"}, headers=H) + st(r, 201) + stand_instances[sid] = js(r)["instanceUid"] + # Проверяем что на каждом стенде ровно 1 инстанс + for sid in STANDS: + d = js(requests.get(f"{BASE}/{sid}/api/v1/svc/instances")) + assert d["total"] == 1, f"{sid} has {d['total']} instances, expected 1" +t("Изоляция: каждый стенд — свои инстансы", test_stands_isolated) + +def test_stands_openapi(): + r = requests.get(f"{BASE}/api/v1/svc/openapi.json") + spec = js(r) + servers = [s["url"] for s in spec["servers"]] + assert len(servers) == 3, f"expected 3 servers, got {len(servers)}" + for sid in STANDS: + assert any(f"/{sid}" in u for u in servers), f"{sid} not in servers" +t("GET /openapi.json → 3 servers (по одному на стенд)", test_stands_openapi) + +def test_stands_fail_next_isolated(): + """fail-next на одном стенде не влияет на другой.""" + requests.post(f"{BASE}/stand1/api/v1/svc/_mock/reset", headers=MH) + requests.post(f"{BASE}/stand2/api/v1/svc/_mock/reset", headers=MH) + # fail-next только на stand1 + requests.post(f"{BASE}/stand1/api/v1/svc/_mock/fail-next", headers=MH) + # Создаём операции на обоих стендах + for sid, label in [("stand1", "fail"), ("stand2", "ok")]: + r = requests.post(f"{BASE}/{sid}/api/v1/svc/instances", + json={"serviceId": 1, "displayName": label}, headers=H) + inst_uid = js(r)["instanceUid"] + r = requests.post(f"{BASE}/{sid}/api/v1/svc/instanceOperations", + json={"instanceUid": inst_uid, "operation": "create", "svcOperationId": 18}, headers=H) + op_uid = js(r)["instanceOperationUid"] + d = js(requests.post(f"{BASE}/{sid}/api/v1/svc/instanceOperations/{op_uid}/run", headers=H)) + if sid == "stand1": + assert d["ok"] is False, f"stand1 should fail, got ok={d['ok']}" + else: + assert d["ok"] is True, f"stand2 should succeed, got ok={d['ok']}" +t("Изоляция fail-next: stand1 падает, stand2 работает", test_stands_fail_next_isolated) + + # ═══════════════════════════════════════ # ИТОГ # ═══════════════════════════════════════