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:
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: 376
kind: instance
action: create
params:
- id: 1037
code: startupConfiguration
data_type: map-fixed
required: true
sort: 10
sub_params:
- id: 460
code: resourceRealm
data_type: string
required: true
default: ""
value_list:
- k8s-3-sandbox-nubes-ru
- k8s-4-sandbox-nubes-ru
man: Кластер Kubernetes, на котором будет развернут экземпляр
is_modifiable: false
- id: 1038
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 20
is_modifiable: true
sub_params:
- id: 461
code: cpu
data_type: integer > 0
required: true
default: "200"
man: Указывается в Milicores
`1000` Mili == `1` Ядро
is_modifiable: false
- id: 462
code: memory
data_type: integer > 0
required: true
default: "256"
man: Указывается в Megabytes
is_modifiable: false
- id: 463
code: replicas
data_type: integer > 0
required: true
default: "1"
value_list:
- "1"
- "3"
- "5"
- "7"
is_modifiable: false
- id: 1039
code: accessConfiguration
data_type: map-fixed
required: true
sort: 30
sub_params:
- id: 464
code: domain
data_type: string
required: true
default: flask-4brtjmwm
man: 'Если указан FQDN в формате: `myapp.example.com`, предварительно будет проверяться DNS-запись (А-запись **должна смотреть на IP Ingress кластера ресурсной платформы**)
Если указан в формате `myapp`, DNS-запись будет автоматически создана в служебной DNS-зоне'
is_modifiable: false
- id: 1040
code: appConfiguration
data_type: map-fixed
required: true
sort: 40
is_modifiable: true
sub_params:
- id: 466
code: healthPath
data_type: string
required: false
default: ""
man: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код
Пустое значение означает, что будет проверяться исключительно доступность приложения по порту
is_modifiable: false
- id: 467
code: version
data_type: string
required: true
default: "3.12"
value_list:
- "3.12"
is_modifiable: false
- id: 465
code: gitPath
data_type: string
required: true
default: https://github.com/Foxyhhd/Baldurs-Gate-test.git
man: 'Путь до репозитория приложения
Обязательно должен быть передан как URL: `https://....`
Должен быть сетевой доступ до URL для скачивания исходников'
is_modifiable: false
- id: 1041
code: jsonEnv
data_type: map
required: false
default: '{}'
sort: 50
is_modifiable: true
- name: delete
id: 379
kind: instance
action: delete
params: []
- name: modify
id: 375
kind: instance
action: modify
params:
- id: 1042
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 10
sub_params:
- id: 468
code: cpu
data_type: integer > 0
required: true
default: ""
man: Указывается в Milicores
`1000` Mili == `1` Ядро
is_modifiable: false
- id: 469
code: memory
data_type: integer > 0
required: true
default: ""
man: Указывается в Megabytes
is_modifiable: false
- id: 470
code: replicas
data_type: integer > 0
required: true
default: ""
value_list:
- "1"
- "3"
- "5"
- "7"
is_modifiable: false
- id: 1043
code: appConfiguration
data_type: map-fixed
required: true
sort: 20
sub_params:
- id: 473
code: version
data_type: string
required: true
default: ""
value_list:
- "3.12"
is_modifiable: false
- id: 471
code: gitPath
data_type: string
required: true
default: ""
man: 'Путь до репозитория приложения
Обязательно должен быть передан как URL: `https://....`
Должен быть сетевой доступ до URL для скачивания исходников'
is_modifiable: false
- id: 472
code: healthPath
data_type: string
required: false
default: ""
man: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код
Пустое значение означает, что будет проверяться исключительно доступность приложения по порту
is_modifiable: false
- id: 1044
code: jsonEnv
data_type: map
required: false
sort: 30
- name: reconcile
id: 381
kind: action
action: reconcile
params: []
- name: redeploy
id: 380
kind: action
action: redeploy
params:
- id: 1045
code: startupConfiguration
data_type: map-fixed
required: true
sort: 10
sub_params:
- id: 474
code: resourceRealm
data_type: string
required: true
default: ""
value_list:
- k8s-3-sandbox-nubes-ru
- k8s-4-sandbox-nubes-ru
man: Кластер Kubernetes, на котором будет развернут экземпляр
is_modifiable: false
- name: resume
id: 378
kind: instance
action: resume
params: []
- name: suspend
id: 377
kind: instance
action: suspend
params: []