Как там шутка: Буква «П» в слове кубернетис, означает «Простота»
👁 636↗ 2💬 5
В целом k8s* очень мощная и очень гибкая штука. Но с другой стороны с этой гибкостью обретается и огромная сложность настройки.
Куча параметров, которые нужно знать, чтобы настроить элементарный Nginx Ingress.
А случай был следующий, выкатили новый релиз на бэкенде.
На Dev стенде все работает круто, а на Prod ни в какую не получается выполнить новые запросы.
Но на Dev у нас просто docker-compose, а на Prod уже k8s.
И дело в том, что в этом релизе были добавлены новые методы PATCH, а их не было в анотациях:
ingress:
svcPort: 3000
enabled: true
ingressClass: nginx
annotations:
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "600"
nginx.ingress.kubernetes.io/session-cookie-max-age: "600"
nginx.ingress.kubernetes.io/proxy-hide-headers: X-Powered-By
Просто добавил в cors-allow-methods метод PATCH.
Хорошо, что как-то сразу вспомнил и добавил. Но только вот в чем беда, запросы все равно падали с ошибкой CORS. Начинаем копать дальше, и это уже заняло приличные полтора часа.
И наконец-то нашли. Все в том же ингрессе. А дело вот в чем, что в этих новых запросах мы используем кастомный заголовок «x-code», и его тоже нужно добавить в cors-allow. Поэтому дописали следующую строку и все заработало:
nginx.ingress.kubernetes.io/cors-allow-headers: "x-code"
Со вхождением меня 👍
А вообще конечно нифига не прикольно дебажить кубер, но почему-то испытываешь такое наслаждение от результата, что снова и снова втягиваешься в процесс 🙂
@knowyourbackend
@kyb_chat
#DevOps322
Комментарии · 5
- @shaurgonНафига ж ты в ингрессе корсы прописываешь, он же просто прокси между лоад балансером и приложением. Решай на уровне приложения
- Дак в приложении проблем с корсом нет. А как в ингрессе корсы убрать?
- @shaurgonЭто же аннотации. Ты просто даёшь инструкции делать так. Удали эту порнографию и будет работать все
- Не будет, проверял. Блокируются все запросы
- Хотя я все равно не буду ничего менять, потому что это конфиг сделан в едином стиле по всем сервисам компании и я хз вообще как настроены корс в приложениях других команд. А в вопросах безопасности надо идти от полного запрета к конкретным разрешениям.