Files
tf_provider/generated/dev/resources_yaml/89_flask.yaml
T
“Naeel” dd56bcda83 refactor: restructure project — separate tools, config, generated, provider
TOOLS/        — generators + scripts + config + ARCHITECTURE.md
  ├── yaml-generator/    (code)
  ├── resource-generator/ (code)
  ├── docs-generator/    (code)
  ├── scripts/           (← devops/*.sh)
  ├── config/            (← devops/profiles/ + devops/config/)
  │   ├── test/          profile.env, services_list.txt, operation_timeouts.json
  │   ├── prod/
  │   └── dev/
  └── ARCHITECTURE.md    (← devops/ARCHITECTURE.md)

generated/    — pipeline output only (gitignored)
  ├── test/resources_yaml/, go/, docs/, provider_build/
  ├── prod/
  └── dev/

provider/     — code only, no generated files
  resources_yaml/        — DELETED (generated)
  internal/resources_gen/ — DELETED (generated)

devops/       — removed (replaced by TOOLS/scripts + TOOLS/config + generated/)

Generators now fail if NUBES_*_DIR not set (no defaults to provider/).
Provider requires pipeline to populate resources_gen/ before build.
2026-07-06 09:06:09 +04:00

166 lines
11 KiB
YAML

name: flask
service_id: 89
service_display_name: Web-сервер с фреймворком Flask
service_short_name: flask
service_man: '# Инструкция по развертыванию Web-сервер с фреймворком Flask через платформу<br/><br/>## 1. Общая информация<br/><br/>Сервис **Web-сервер с фреймворком Flask** предназначен для развертывания веб-приложений на базе Flask.<br/><br/>### Доступные операции<br/><br/>create — включить сервис, развернуть веб-приложение с указанными параметрами.<br/>delete — удалить сервис, только после suspend.<br/>modify — изменить настройки сервиса и переразвернуть.<br/>suspend — выключить веб-приложение, остановить обслуживание.<br/>resume — включить веб-приложение после suspend.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры входных данных операции **create**:<br/><br/>### Имя домена<br/>Описание: доменное имя для доступа к веб-приложению. Если указан FQDN, происходит проверка DNS на валидность А-записи. А-запись должна указывать на балансировщик ресурсной платформы. Если указано имя в рамках одного октета, оно будет добавлено в публичную DNS-зону.<br/>Пример значения: строка, допустимые FQDN или имя в одном октете. Пример: example.com или myapp.<br/><br/>### Платформа для развертывания<br/>Описание: кластер Kubernetes, в котором будет развернуто приложение.<br/>Пример значения: идентификатор кластера Kubernetes.<br/><br/>### Квота ядра пода<br/>Описание: количество CPU, выделяемое на под, в Milicores.<br/>Пример значения: целое число, например 500 для 0.5 ядра.<br/><br/>### Квота памяти пода<br/>Описание: количество памяти, выделяемое на под, в Megabytes.<br/>Пример значения: целое число, например 512 для 512 MB.<br/><br/>### Кол-во реплик пода<br/>Описание: количество инстансов пода для масштабирования.<br/>Пример значения: целое число, шт, например 2.<br/><br/>### URL Проекта (gitpath)<br/>Описание: полный HTTPS путь до проекта в Git-репозитории.<br/>Пример значения: URL в формате https://github.com/myuser/myproject.git. Доступ к репозиторию должен быть публичным.<br/><br/>### URL HealthCheck<br/>Описание: путь для проверки здоровья приложения внутри пода.<br/>Пример значения: строка, путь, например /api/v1/health.<br/><br/>### Переменные окружения пода<br/>Описание: структура данных, которая будет передана как переменные окружения в под.<br/>Пример значения: ключ-значение, например {&quot;ENV&quot;: &quot;production&quot;}.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/>- Квота ядра пода: 300m (0.3 ядра)<br/>- Квота памяти пода: 256 MB<br/>- Кол-во реплик пода: 1<br/><br/>### Промышленное окружение<br/>- Квота ядра пода: от 1000m (1 ядро) в зависимости от нагрузки<br/>- Квота памяти пода: от 1024 MB (1 GB) с учетом потребностей приложения<br/>- Кол-во реплик пода: от 2 для обеспечения отказоустойчивости<br/><br/>---<br/><br/>## 4. Выходные параметры<br/>Операция create не возвращает явных выходных параметров. Успешное выполнение операции приводит к развертыванию сервиса, доступного по указанному домену.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/>- В корне проекта должен находиться файл requirements.txt со списком зависимостей Python.<br/>- Исходный код веб-приложения должен располагаться в директории site.<br/>- Запуск веб-сервера осуществляется командой python app.py.<br/>- Используется версия Python: python:3.12-slim.<br/>- Git-репозиторий должен быть публично доступен для платформы.<br/>- Операция delete возможна только после suspend.<br/>- Операция modify приводит к переразвертыванию с новыми параметрами.'
lifecycle:
suspend_on_destroy_default: true
adopt_existing_on_create_default: false
outputs:
params:
- code: state_params
type: map
- code: state_out
type: map
- code: state_params_flat
type: map
- code: state_out_flat
type: map
- code: vault_secrets
type: map
sensitive: true
- code: vault_url
type: string
- code: vault_user_path
type: string
- code: vault_fields
type: list
operations:
- name: create
id: 88
kind: instance
action: create
params:
- id: 248
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
man: Если будет указан `FQDN`, то происходят проверки DNS на валидность А-записи. А-запись **обязана смотреть на балансировщик** ресурсной платформы.<br/>Если указано имя `в рамках одного октета`, будет добавлено **в публичную днс-зону**
sort: 10
- id: 249
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Кластер Kubernetes в котором будет развёрнуто приложение
man: Выбрать платформу из списка<br/><br/>**Если список не отображается**<br/>обратитесь к сервис менеджеру с вопросом предоставления ресурсной платформы
sort: 20
- id: 250
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "300"
maxvalue: 8000
minvalue: 100
descr: 'Пример: `1000`'
man: Указывается в Milicores<br/>`1000` Mili == `1` Ядро
sort: 30
is_modifiable: true
- id: 251
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "256"
maxvalue: 8192
minvalue: 128
descr: 'Пример: `2048`'
man: Указывается в Megabytes
sort: 40
is_modifiable: true
- id: 252
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: 'Пример: `3`'
man: Балансировка производится между всеми репликами
sort: 50
is_modifiable: true
- id: 253
code: gitPath
data_type: string
required: true
default: https://github.com/Foxyhhd/Baldurs-Gate-test.git
descr: 'Пример: `https://github.com/myuser/myproject.git`'
man: Проект должен быть публичным
sort: 60
is_modifiable: true
- id: 254
code: jsonEnv
data_type: map
required: false
man: Структура, которая будет передана как переменные окружения
sort: 80
is_modifiable: true
- id: 255
code: healthPath
data_type: string
required: false
descr: 'Пример: `/api/v1/health`'
man: Может быть пустым. Если ничего не передано, проверяется `tcpsocket`<br/>Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код
sort: 70
- name: delete
id: 89
kind: instance
action: delete
man: Удаление возможно только после остановки сервиса через операцию `suspend`<br/>После выполнения операции необходимо выждать определенное кол-во времени
params: []
- name: modify
id: 146
kind: instance
action: modify
params:
- id: 451
code: resourceCPU
data_type: integer &gt; 0
required: true
maxvalue: 8000
minvalue: 100
descr: 'Пример: `1000`'
man: Указывается в Milicores<br/>`1000` Mili == `1` Ядро
sort: 10
- id: 452
code: resourceMemory
data_type: integer &gt; 0
required: true
maxvalue: 8192
minvalue: 128
descr: 'Пример: `2048`'
man: Указывается в Megabytes
sort: 20
- id: 453
code: resourceInstances
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: 'Пример: `3`'
man: Балансировка производится между всеми репликами
sort: 30
- id: 454
code: gitPath
required: true
descr: 'Пример: `https://github.com/myuser/myproject.git`'
man: Проект должен быть публичным
sort: 40
- id: 455
code: jsonEnv
data_type: map
required: true
man: Структура, которая будет передана как переменные окружения
sort: 50
- name: resume
id: 145
kind: instance
action: resume
params: []
- name: suspend
id: 125
kind: instance
action: suspend
params: []