getpgdata: Flask-приложение для доступа к PostgreSQL (Nubes структура)
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# getpgdata
|
||||
|
||||
Flask-приложение для доступа к PostgreSQL (managed k8s, internal-only).
|
||||
|
||||
Развёртывается на платформе Nubes как Python managed service (структура `site/app.py`).
|
||||
|
||||
## Возможности
|
||||
|
||||
- Главная — состояние подключения и список таблиц (не системные схемы)
|
||||
- `GET /table?schema=public&name=<table>` — просмотр содержимого таблицы с пагинацией
|
||||
- `POST /query` — SQL-консоль (read-only, только `SELECT`)
|
||||
- `GET /healthz` — liveness-проба для k8s
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
getpgdata/
|
||||
├── requirements.txt
|
||||
└── site/
|
||||
├── app.py
|
||||
├── static/
|
||||
│ └── style.css
|
||||
└── templates/
|
||||
├── index.html
|
||||
├── table.html
|
||||
├── query.html
|
||||
└── error.html
|
||||
```
|
||||
|
||||
## Переменные окружения (jsonEnv)
|
||||
|
||||
```json
|
||||
{
|
||||
"DB_HOST": "postgresqlk8s-master.60bdf3e3-5087-41ff-b760-fe6ea544a80e.svc.cluster.local",
|
||||
"DB_PORT": "5432",
|
||||
"DB_NAME": "postgres",
|
||||
"DB_USER": "super",
|
||||
"DB_PASS": "<secret>",
|
||||
"DB_SSLMODE": "disable",
|
||||
"DB_CONNECT_TIMEOUT": "5",
|
||||
"QUERY_MAX_ROWS": "200",
|
||||
"APP_ENV": "production",
|
||||
"FLASK_DEBUG": "false"
|
||||
}
|
||||
```
|
||||
|
||||
БД доступна только изнутри k8s (internal `.svc.cluster.local`), поэтому приложение
|
||||
должно работать внутри кластера Nubes.
|
||||
|
||||
## Локальный запуск
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
DB_HOST=<host> DB_USER=<user> DB_PASS=<pass> python site/app.py
|
||||
```
|
||||
|
||||
Если БД недоступна — приложение стартует и показывает ошибку на странице,
|
||||
а не падает (важно для k8s health-проб и диагностики).
|
||||
Reference in New Issue
Block a user