From 4af247938fab150670d5dd45954696278093bebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 15 Jul 2026 15:14:20 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D0=BD=D0=B0=202026-07-1?= =?UTF-8?q?5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- STATE-2026-07-15.md | 107 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 STATE-2026-07-15.md diff --git a/STATE-2026-07-15.md b/STATE-2026-07-15.md new file mode 100644 index 0000000..6585681 --- /dev/null +++ b/STATE-2026-07-15.md @@ -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