From 835949931ecc48b5ba8d0d9cceb762781e0bbd7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 21 Aug 2026 07:44:56 +0300 Subject: [PATCH] =?UTF-8?q?History:=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0=20naeel/loadtest:v2.0.0?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20Simple=20HTTP=20container?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-08-21-container-build.md | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 History/2026-08-21-container-build.md 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:`.