diff --git a/History/2026-08-21-container-build.md b/History/2026-08-21-container-build.md new file mode 100644 index 0000000..a18e0b6 --- /dev/null +++ b/History/2026-08-21-container-build.md @@ -0,0 +1,42 @@ +# 2026-08-21 — LoadTest: сборка Docker-образа для «Простой HTTP контейнер» + +_Дата: 2026-08-21. Ветка: master. Состояние Flask сохранено в ветке `flask-state` (запушена)._ + +## Задача +Перевести loadtest с managed-Flask (gitPath, без аннотаций) на «Простой HTTP контейнер»: +образ + переменные пода + аннотации к Ingress (раньше правили кубером на своём кластере). + +## Что сделано +1. Ветка `flask-state` — сохранение состояния Flask (запушена в origin). +2. `Dockerfile` в loadtest (master): + - `python:3.12-slim`, WORKDIR /app, requirements.txt, COPY site/, EXPOSE 5000 + - CMD gunicorn `--timeout 300 --workers 1 site.app:app` + - Один EXPOSE (5000) — требование платформы (порт берётся из EXPOSE). +3. Сборка на ВМ (SSH remote-dev, docker 29.1.3): `docker build -t naeel/loadtest:v2.0.0` + - Контекст: `/home/naeel/loadtest-build` (rsync из локального loadtest). + - Логин Docker Hub на ВМ уже есть (`naeel`). +4. Push: `naeel/loadtest:v2.0.0` — digest `sha256:432a8742...`, linux/amd64, ~50MB, публичный. + +## Данные для формы «Простой HTTP контейнер» +- **Путь до образа:** `naeel/loadtest:v2.0.0` +- **Переменные пода:** `{}` (секретов/окружения нет) +- **Дополнительные аннотации к Ingress** (JSON): +```json +{ + "nginx.ingress.kubernetes.io/proxy-body-size": "1024m", + "nginx.ingress.kubernetes.io/proxy-connect-timeout": "120", + "nginx.ingress.kubernetes.io/proxy-read-timeout": "600", + "nginx.ingress.kubernetes.io/proxy-send-timeout": "600", + "nginx.ingress.kubernetes.io/proxy-request-buffering": "false" +} +``` + +## Почему эти аннотации +Взяты из правок, которые раньше делали кубером на iot-naeel (см. History drhider): +- `proxy-body-size 1024m` — лимит тела (на общем кластере >64КБ обрывало: HTTP 000 ~10с). +- `connect/read/send-timeout 120/600/600` — таймауты (drhider ingress те же значения). +- `proxy-request-buffering false` — отключение буферизации тела (план, не выполненный на iot-naeel). + +## Обновление образа +Только пересоздание контейнера с новым тегом (`latest` кэшируется зеркалом платформы). +В своём кластере — `kubectl -n set image deployment/containerk8s app=naeel/loadtest:`.