Продолжаем цикл о подводных камнях перед отставкой Ingress-NGINX. Сегодня — перезапись путей. Это одна из самых используемых функций контроллера и одна из самых болезненных при переносе на Gateway API.
В Ingress-NGINX перезапись настраивается через аннотацию
nginx.ingress.kubernetes.io/rewrite-target. Например, паттерн /api/(.*) с rewrite-target /$1 отрежет префикс /api и передаст бэкенду оставшуюся часть пути.Проблема в том, что Ingress-NGINX _переписывает весь путь целиком_, а не только совпавшую часть. Это отличается от поведения большинства других прокси. Если бэкенд ожидает определённую структуру пути — поведение после миграции может измениться даже при формально правильном переводе.
В Gateway API перезапись реализована через фильтр
URLRewrite. Логика другая: можно заменить префикс или весь путь. Прямого аналога подстановки через $1, $2 нет. Конфигурации с несколькими группами захвата придётся переосмыслить.Ещё одна деталь — приоритет пересекающихся маршрутов. В Gateway API он определяется специфичностью совпадения. В Ingress-NGINX логика другая. Если у вас несколько маршрутов с похожими путями, порядок их срабатывания может поменяться после миграции.
Каждый маршрут с
rewrite-target нужно разобрать вручную и убедиться, что бэкенд получит именно тот путь, который ожидает.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера