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

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"

Что делать дальше

  1. Срочно: перезапустить ingress чтобы пользователь мог работать сейчас:

    kubectl rollout restart deploy -n ingress shturval-ingress-controller-controller
    
  2. Навсегда: externalTrafficPolicy: Local — обсудить с DevOps

  3. Докупить: обновить PROBLEM-AND-SOLUTION.md после применения Local