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: '{}'