docs: add references for 64kb investigation
This commit is contained in:
@@ -236,4 +236,53 @@
|
||||
|
||||
## Короткий финальный вывод одним абзацем
|
||||
|
||||
Проблема 64KB+ payload у shared-sqs оказалась не багом Go-сервиса и не проблемой Redis/persistence, а ограничением ingress path в кластере штурвала: объект ingress у приложения настроен корректно, часть аннотаций применяется, но именно `proxy-request-buffering` platform controller в итоговый nginx.conf не прокидывает, при этом upstream ingress-nginx такую аннотацию поддерживает. Поэтому вводить hard-limit 32KB в коде я считаю неправильным; правильное практическое решение на текущий момент — оставить сервис без искусственного code-level ограничения, а 32KB считать безопасным эксплуатационным размером и документировать это как известную особенность инфраструктуры.
|
||||
Проблема 64KB+ payload у shared-sqs оказалась не багом Go-сервиса и не проблемой Redis/persistence, а ограничением ingress path в кластере штурвала: объект ingress у приложения настроен корректно, часть аннотаций применяется, но именно `proxy-request-buffering` platform controller в итоговый nginx.conf не прокидывает, при этом upstream ingress-nginx такую аннотацию поддерживает. Поэтому вводить hard-limit 32KB в коде я считаю неправильным; правильное практическое решение на текущий момент — оставить сервис без искусственного code-level ограничения, а 32KB считать безопасным эксплуатационным размером и документировать это как известную особенность инфраструктуры.
|
||||
|
||||
---
|
||||
|
||||
## Внешние ссылки для возврата к теме 64KB+
|
||||
|
||||
Если к проблеме придётся вернуться через недели или месяцы, начинать смотреть отсюда.
|
||||
|
||||
### Платформа Штурвал
|
||||
|
||||
- Архитектура платформы Штурвал Community Edition:
|
||||
https://docs.k8s.ngcloud.ru/2.12/docs/common/structure/
|
||||
|
||||
Зачем это важно:
|
||||
- страница подтверждает, что Nginx Ingress Controller входит в состав платформы;
|
||||
- это усиливает вывод, что ingress controller для `qu.kube5s.ru` является platform-managed компонентом, а не частью shared-sqs.
|
||||
|
||||
### Официальная документация ingress-nginx
|
||||
|
||||
- Аннотации ingress-nginx:
|
||||
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
|
||||
|
||||
- ConfigMap ingress-nginx:
|
||||
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
|
||||
|
||||
Ключевые места в этих документах:
|
||||
- `nginx.ingress.kubernetes.io/proxy-request-buffering` официально поддерживается;
|
||||
- `allow-snippet-annotations` по умолчанию имеет значение `false`;
|
||||
- `server-snippet` и `configuration-snippet` нельзя считать доступным workaround без platform-level разрешения.
|
||||
|
||||
### Upstream исходники ingress-nginx
|
||||
|
||||
- parser аннотации `proxy-request-buffering`:
|
||||
https://github.com/kubernetes/ingress-nginx/blob/main/internal/ingress/annotations/proxy/main.go
|
||||
|
||||
- e2e-тест на `should turn off proxy-request-buffering`:
|
||||
https://github.com/kubernetes/ingress-nginx/blob/main/test/e2e/annotations/proxy.go
|
||||
|
||||
Зачем это важно:
|
||||
- это прямое подтверждение, что в upstream поведение поддерживается и ожидается;
|
||||
- если проблема повторится, не надо заново спорить, существует ли такая аннотация вообще.
|
||||
|
||||
### Что проверить первым делом при новом раунде расследования
|
||||
|
||||
1. Существует ли по-прежнему только один ingress для `qu.kube5s.ru`.
|
||||
2. Осталась ли аннотация `proxy-request-buffering: "off"` на объекте ingress.
|
||||
3. Что реально сгенерировано в `/etc/nginx/nginx.conf` у ingress controller.
|
||||
4. Не изменились ли версия штурвала и версия ingress-nginx controller.
|
||||
5. Не включили ли на platform уровне `allow-snippet-annotations`.
|
||||
6. Не появился ли доступ к source-of-truth конфигурации платформенного ingress controller.
|
||||
Reference in New Issue
Block a user