5.5 KiB
5.5 KiB
Деплой, ВМ и переменные окружения
Платформа
Штурвал — Managed Flask на pythonk8s (Kubernetes).
- Запускает Flask сам — без Dockerfile, без gunicorn
- Точка входа:
site/app.py→ глобальная переменнаяapp - Деплой:
git push origin master→ авто-деплой через UI Штурвала
Деплой
cd /home/naeel/nubes/drhider
git add -A
git commit -m "описание изменений"
git push origin master
После пуша — зайти в UI Штурвала и нажать ** Redeploy** для drhider.
Переменные окружения (настраиваются в UI Штурвала)
| Переменная | Значение | Для чего |
|---|---|---|
LLM_API_KEY |
sk-ucI5YvOticoOQ9Kuj5K9mQ |
Ключ доступа к LLM API |
LLM_URL |
https://api.aillm.ru/v1/chat/completions |
URL LLM API |
LLM_MODEL |
gpt-oss-120b |
Модель для NER |
Без LLM_API_KEY LLM-сканирование не работает (только regex).
ВМ contracts (legacy)
Старый сервер contracts.kube5s.ru. DrHider там — standalone HTTP-сервер на порту 8767.
SSH
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213
Где лежит старый drhider
/home/naeel/contracts/drhider/
├── drhider.py # Ядро обфускации (отсюда скопировано в этот проект)
├── drhider_server.py # HTTP-сервер :8767 (НЕ ИСПОЛЬЗУЕТСЯ в новом проекте)
└── __init__.py
Сервисы на ВМ
| Сервис | Порт | systemd unit |
|---|---|---|
| drhider | 8767 | contracts-drhider |
| convert_server | 8766 | contracts |
| Flask UI | 5001 | — (start.sh) |
| nginx | 443 | nginx |
| PostgreSQL | 5432 | — |
Управление drhider на ВМ
# Статус
systemctl status contracts-drhider
# Логи
journalctl -u contracts-drhider -f
# Перезапуск
sudo systemctl restart contracts-drhider
Kubernetes-кластер (iot-naeel)
DrHider работает в кластере iot-naeel на платформе Штурвал.
Доступ к kubectl
kubectl настроен на ВМ 5.172.178.213. Все команды выполняются через SSH:
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 kubectl ...
DrHider
# Найти под drhider (namespace — UUID Штурвала)
kubectl get pods --all-namespaces | grep pythonk8s
# Логи
kubectl logs -n <namespace> <pod>
# Перезапуск — через UI Штурвала (Redeploy)
Ingress
# Реплики
kubectl get deploy -n ingress shturval-ingress-controller-controller
# externalTrafficPolicy
kubectl get svc -n ingress shturval-ingress-controller-controller \
-o jsonpath='{.spec.externalTrafficPolicy}'
# Масштабирование (если сбросилось)
kubectl scale deploy -n ingress shturval-ingress-controller-controller --replicas=4
Cilium / MTU
# Текущий MTU
kubectl get configmap -n kube-system cilium-config -o jsonpath='{.data.mtu}'
# Статус Cilium
kubectl -n kube-system exec ds/cilium -- cilium-dbg status | grep -i mtu
VIP (kube-vip)
VIP кластера: 185.247.187.151. Раздаётся через kube-vip (ARP) на все 4 ноды.
Локальная разработка
cd /home/naeel/nubes/drhider
# Установка зависимостей
pip install -r requirements.txt
# Запуск Flask (dev-сервер)
cd site && python3 app.py
# Проверка синтаксиса ВСЕХ файлов
python3 -c "
import py_compile, os
for root, dirs, files in os.walk('.'):
for f in files:
if f.endswith('.py'):
path = os.path.join(root, f)
py_compile.compile(path, doraise=True)
print(f'OK: {path}')
"
# Проверка импорта
python3 -c "from drhider import obfuscate_files, LLMClient; print('OK')"
Как править код
- Понять что меняем → описать план
- Получить «делай»
- Внести изменения
python3 -c "import py_compile; py_compile.compile('файл.py', doraise=True)"— КАЖДЫЙ изменённый .pypython3 -c "from drhider import obfuscate_files, LLMClient"— проверка импортаgit add -A && git commit -m "подробно что и зачем" && git push- Записать в
History/что сделано - Зайти в UI Штурвала → Redeploy
Как добавить новый генератор
- Создать
drhider/generators/новый_тип.pyс функциейgenerate_xxx(original: str) -> str - Добавить regex-паттерн в
drhider/config.py→ENTITY_PATTERNS - Добавить импорт и маппинг в
drhider/generators/__init__.py→ENTITY_GENERATORS - Проверить синтаксис → commit → push → Redeploy
История версий
| Версия | Дата | Что |
|---|---|---|
| 2.0.0 | 2026-07-12 | Модульный рефакторинг (22 модуля вместо монолита) |
| 1.0.0 | 2026-07-11 | Начальная версия (monolith drhider.py + Flask) |