Files
drhider/STATE-2026-07-15.md
T
2026-07-15 15:14:20 +04:00

108 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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