Тема TLS выглядит простой, но здесь тоже есть нюансы, которые проявляются только после переключения трафика на Gateway API.
Ingress-NGINX работает в двух принципиально разных режимах с TLS.
_Первый_ — терминирование на уровне контроллера: сертификат прикреплён к Ingress через секрет, контроллер расшифровывает трафик и передаёт бэкенду по HTTP. В Gateway API это настраивается через
listeners[].tls.mode: Terminate с указанием certificateRefs в ресурсе Gateway._Второй_ — SSL passthrough через аннотацию
nginx.ingress.kubernetes.io/ssl-passthrough: "true". Контроллер проксирует зашифрованный поток напрямую к поду, не расшифровывая его. В Gateway API для этого существует отдельный тип ресурса — TLSRoute. И здесь важный момент: при passthrough контроллер не видит HTTP-заголовки. Маршрутизация по пути или заголовкам недоступна — только по SNI.Если в текущей конфигурации для одного хоста одновременно используются passthrough и HTTP-маршрутизация — это признак того, что архитектуру придётся пересматривать, а не просто переписывать манифесты.
Зафиксируйте для каждого хоста, какой режим TLS используется. Это определит не только синтаксис Gateway API, но и выбор реализации — не все из них поддерживают
TLSRoute в полном объёме.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера