4.3 KiB
4.3 KiB
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 |
Как деплоить
# После правок кода:
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"
Что делать дальше
-
Срочно: перезапустить ingress чтобы пользователь мог работать сейчас:
kubectl rollout restart deploy -n ingress shturval-ingress-controller-controller -
Навсегда:
externalTrafficPolicy: Local— обсудить с DevOps -
Докупить: обновить PROBLEM-AND-SOLUTION.md после применения Local