diff --git a/History/plan-2026-08-18-ingress-fix.md b/History/plan-2026-08-18-ingress-fix.md new file mode 100644 index 0000000..0a1b1c2 --- /dev/null +++ b/History/plan-2026-08-18-ingress-fix.md @@ -0,0 +1,40 @@ +# План (НЕ ВЫПОЛНЕН, отложен): правка ingless-аннотаций на iot-naeel для устранения задержки ~51с + +_Дата: 2026-08-18. Статус: только документ, НИЧЕГО не правилось._ + +## Контекст +- Инстанс loadtest сейчас НЕ на iot-naeel (передеплоен на общий кластер `k8s-4-sandbox-nubes-ru`). +- Правку аннотаций на iot-naeel по команде пользователя ПОКА НЕ делать. + +## Факты, выясненные на iot-naeel (до передеплоя) +1. Ingress loadtest в ns `bb9ed30b-...` уже содержит аннотации: + - `nginx.ingress.kubernetes.io/proxy-body-size: 1024m` + - `proxy-connect-timeout: 120`, `proxy-read-timeout: 600`, `proxy-send-timeout: 600` +2. Ingress-class = `nginx`, controller = **`shturval-ingress-controller`** (брендированный + ingress-nginx), namespace `ingress` (НЕ `ingress-nginx`). +3. Глобальный configmap `ingress/shturval-ingress-controller-controller`: + - `client-body-buffer-size: 2m` + - **`client-body-timeout: "60"`** ← вероятная причина ~51.5 с + - `client-header-timeout: "30"` + - `proxy-body-size: 1024m` +4. Права: `kubectl auth can-i patch/update ingress` = **yes** (можем править свой ingress). + Глобальный configmap в ns `ingress` — НЕ наш, его не трогаем. + +## Почему ~51.5 с (гипотеза) +- `client-body-timeout: 60` глобально → при буферизации тела больше ~2МБ (или при + притормаживании потока) nginx ждёт чтения до таймаута ~60 с; наблюдаем ~51.5 с. +- Аннотации read/send-timeout 600 не виноваты (они выше). + +## План (если решат выполнить — на iot-naeel) +1. На ingress `loadtest` добавить аннотацию + `nginx.ingress.kubernetes.io/proxy-request-buffering: "false"` — отключить буферизацию + тела на этом ингрессе (обратимо). +2. Прогнать тест: 100 КБ / 1 МБ → проверить, ушла ли задержка ~51 с. +3. Если не помогла — вернуть, рассмотреть `client_body_timeout` (глобально нельзя, наш ns не тот) + или вариант с чанкованной отправкой на клиенте. +4. ВАЖНО: это правка боевого ingress → только после явной команды "делай". + +## Замечание +- На общем кластере (`k8s-4-sandbox`) доступа к ingress/ns нет (нужен параметр аннотации в ЛК, + задачу разработчик платформы уже завёл). +- Это два разных мира: iot-naeel — правим сами; общий кластер — только через платформу.