// личный канал‑лог
gavrilovlog
← все записи

Как там шутка: Буква «П» в слове кубернетис, означает «Простота»

👁 6362💬 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 #DevOps
322

Комментарии · 5

  • @shaurgon
    Нафига ж ты в ингрессе корсы прописываешь, он же просто прокси между лоад балансером и приложением. Решай на уровне приложения
    • @gavrilovlog
      Дак в приложении проблем с корсом нет. А как в ингрессе корсы убрать?
      • @shaurgon
        Это же аннотации. Ты просто даёшь инструкции делать так. Удали эту порнографию и будет работать все
        • @gavrilovlog
          Не будет, проверял. Блокируются все запросы
  • @gavrilovlog
    Хотя я все равно не буду ничего менять, потому что это конфиг сделан в едином стиле по всем сервисам компании и я хз вообще как настроены корс в приложениях других команд. А в вопросах безопасности надо идти от полного запрета к конкретным разрешениям.