This commit is contained in:
@@ -0,0 +1,107 @@
|
|||||||
|
# DrHider — состояние на 2026-07-15
|
||||||
|
|
||||||
|
## Текущая версия: v0.0.29 (задеплоена)
|
||||||
|
|
||||||
|
## Что работает
|
||||||
|
|
||||||
|
- Загрузка файлов (.docx, .pdf, .txt, .zip)
|
||||||
|
- Обфускация через LLM (два прохода: regex + LLM NER)
|
||||||
|
- SSE-прогресс обработки
|
||||||
|
- Скачивание ZIP + CSV (имена из Content-Disposition, не хардкод)
|
||||||
|
- Выбор файлов добавляет (не стирает), с дедупликацией
|
||||||
|
- При F5/закрытии — XHR и EventSource обрываются
|
||||||
|
|
||||||
|
## Что НЕ работает (баг вернулся)
|
||||||
|
|
||||||
|
**ERR_CONNECTION_RESET / Таймаут 30с при загрузке из браузера.**
|
||||||
|
|
||||||
|
Причина: kube-vip ARP flapping + `externalTrafficPolicy: Cluster` + 4 ingress пода.
|
||||||
|
Браузерное keep-alive соединение попадает на ноду без conntrack → RST.
|
||||||
|
|
||||||
|
### Что пробовали
|
||||||
|
|
||||||
|
| Фикс | Результат |
|
||||||
|
|------|-----------|
|
||||||
|
| `keep-alive: 10 → 75` | Помогло, но временно |
|
||||||
|
| JS: `fetch('/health')` при загрузке (warmup) | Помогло, но временно |
|
||||||
|
| `upstream-keepalive-connections: 0` | Не помогло |
|
||||||
|
| Перезапуск ingress | Помогает на 5-10 мин, потом снова |
|
||||||
|
|
||||||
|
### Что НЕ пробовали (главный кандидат)
|
||||||
|
|
||||||
|
**`externalTrafficPolicy: Local`** — убирает лишний хоп kube-proxy, conntrack создаётся на той же ноде где ingress под. Это должно добить проблему навсегда.
|
||||||
|
|
||||||
|
Но затрагивает ВСЕ сервисы на этом ingress, не только drhider.
|
||||||
|
|
||||||
|
## Текущая конфигурация кластера
|
||||||
|
|
||||||
|
### Ingress ConfigMap
|
||||||
|
|
||||||
|
```
|
||||||
|
keep-alive: "75" # было 10 — Штурвал
|
||||||
|
client-body-timeout: "10" # было 10 — надо 60
|
||||||
|
client-header-timeout: "10" # было 10 — надо 30
|
||||||
|
use-http2: "false" # можно вернуть true
|
||||||
|
proxy-body-size: "1024m"
|
||||||
|
upstream-keepalive-connections: "0"
|
||||||
|
error-log-level: "debug" # вернуть info
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cilium
|
||||||
|
|
||||||
|
```
|
||||||
|
mtu: 1400 # было 1500 — Geneve overhead
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ingress поды (4 шт — что-то изменило кол-во)
|
||||||
|
|
||||||
|
```
|
||||||
|
control-plane: 172.16.0.73 (3h13m)
|
||||||
|
v8zq4: 172.16.3.149 (3h13m)
|
||||||
|
bhbvs: 172.16.2.115 (29m) ← новые
|
||||||
|
6f74n: 172.16.1.227 (29m) ← новые
|
||||||
|
```
|
||||||
|
|
||||||
|
### Drhider под
|
||||||
|
|
||||||
|
```
|
||||||
|
Неймспейс: 20a75175-a58c-49cb-b8fa-e86367b1a8dc
|
||||||
|
Deployment: pythonk8s (1 реплика)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ключевые файлы
|
||||||
|
|
||||||
|
| Файл | Что |
|
||||||
|
|------|-----|
|
||||||
|
| `site/templates/index.html` | Весь фронтенд (HTML/CSS/JS) |
|
||||||
|
| `site/routes/api_bp.py` | API: upload, process_stream (SSE), download, csv |
|
||||||
|
| `site/routes/health_bp.py` | `/health` — liveness probe |
|
||||||
|
| `site/app.py` | Точка входа Flask, VERSION, MAX_CONTENT_LENGTH, no_cache |
|
||||||
|
| `site/session.py` | In-memory сессии |
|
||||||
|
| `drhider/*.py` | Бизнес-логика обфускации |
|
||||||
|
| `docs/ARCHITECTURE.md` | Архитектура, требования Flask, имена файлов |
|
||||||
|
| `docs/MIGRATION-GUIDE.md` | Инструкция миграции UI на Flask |
|
||||||
|
| `PROBLEM-AND-SOLUTION.md` | MTU fix, конфигурация для DevOps |
|
||||||
|
| `History/2026-07-14-browser-rst-debug.md` | Полная история диагностики RST |
|
||||||
|
|
||||||
|
## Как деплоить
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# После правок кода:
|
||||||
|
cd /home/naeel/nubes/drhider
|
||||||
|
# Bump VERSION в site/app.py
|
||||||
|
# Bump версию в index.html (два места: заголовок .ver и в JS если есть)
|
||||||
|
git add -A && git commit -m "..." && git push
|
||||||
|
ssh ... naeel@5.172.178.213 "kubectl rollout restart deploy -n 20a75175... pythonk8s"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Что делать дальше
|
||||||
|
|
||||||
|
1. **Срочно:** перезапустить ingress чтобы пользователь мог работать сейчас:
|
||||||
|
```bash
|
||||||
|
kubectl rollout restart deploy -n ingress shturval-ingress-controller-controller
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Навсегда:** `externalTrafficPolicy: Local` — обсудить с DevOps
|
||||||
|
|
||||||
|
3. **Докупить:** обновить PROBLEM-AND-SOLUTION.md после применения Local
|
||||||
Reference in New Issue
Block a user