Gateway API

Модель маршрутизации трафика вместо Ingress.

В релизе 2.15 входящий трафик кластера управления переведён на Gateway API, что продолжает миграцию с NGINX Ingress Controller. В клиентских кластерах по-прежнему сохраняется возможность выбора: можно использовать как NGINX Ingress Controller, так и Gateway API. Такой подход упрощает настройку маршрутизации для разных реализаций Service Mesh (Istio, Cilium и др.).

Gateway API и ролевая модель:

ОбъектУровеньКто настраиваетНазначение
GatewayClassКластерПоставщик инфраструктурыТип контроллера и параметры реализации
GatewayКластерОператор кластераТочка входа: адреса, обработчики (listeners), TLS
Маршруты (HTTPRoute, GRPCRoute)НеймспейсРазработчик / владелец приложенияПрикладная маршрутизация к backend-сервисам

Где настраивать в GUI:

  • Gateway Classes и Gateways: кластер → раздел Сети;
  • Маршруты: кластер → неймспейс → раздел Сети → Маршруты.
  • Через кастомные ресурсы: кластер → раздел Администрирование → Кастомные ресурсы → API-группа gateway.networking.k8s.io.

Подробнее о преимуществах Gateway API и стратегии миграции с Ingress см. Ingress NGINX умер, да здравствует Gateway API.


Поставка Gateway API в кластер

Для работы с ресурсами Gateway API в кластере должны быть установлены CRDs Gateway API. В платформе «Штурвал» их ставит сервис CRD модуля Gateway API (shturval-gateway-api-crds) в неймспейс gateway-system. Сервис является критически важным для работы платформы и устанавливается по умолчанию в кластер управления и в клиентские кластеры, в GUI доступны соответствующие разделы интерфейса.

Проверить установленный CRD: кластер → Сервисы и репозитории → Установленные сервисы → найдите CRD модуля Gateway API (shturval-gateway-api-crds) → Управлять.

Установить в GUI развернутого кластера: если сервис отсутствует в установленных, откройте Сервисы и репозитории → Доступные чарты → чарт shturval-gateway-api-crds → Установить. Создайте и выберите неймспейс gateway-system. Подробнее — CRD модуля Gateway API и Как развернуть новый сервис.

После успешного развертывания CRD модуля Gateway API в GUI будут доступны соответствующие разделы интерфейса.


Контроллер Gateway API

CRDs, поставляемые в кластер, не обрабатывают трафик — для маршрутизации нужен контроллер, связанный с GatewayClass.

Перед включением контроллера Gateway API в кластере убедитесь в совместимости его версии с CRD в кластере. В платформе «Штурвал» 2.15 чарт shturval-gateway-api-crds поставляет CRD Gateway API версии 1.6.1. Контроллер должен поддерживать эту версию спецификации.

Если кластер принимает входящий трафик через Gateway API, контроллер Cilium уже включён. Если в клиентском кластере установлен NGINX Ingress Controller, контроллер Cilium по умолчанию выключен: как включить его — Контроллер Gateway API в Cilium. Для выделения адресов Gateway создайте пул IP-адресов CiliumLoadBalancerIPPool.

Влияние Cilium Network Policies на работу Gateway

Gateway API и Cilium Network Policies — взаимосвязанные механизмы. Изменение политик напрямую влияет на доступность Gateway-маршрутов. Подробнее о совместной настройке Gateway API и сетевых политик см. статью Gateway API и Cilium Network Policies.

Если в кластере планируется использовать или уже настроены Cilium Network Policies, необходимо учесть:

  • Для работы Gateway в кластере необходимо разрешить трафик в двух точках: доступ к самому Gateway (внешний трафик) и доступ от Gateway к бэкенду.
  • Трафик от Gateway с контроллером Cilium приходит с идентичностью reserved:ingress. Чтобы разрешить доступ к бэкенду, используйте CiliumNetworkPolicy с правилом fromEntities: [ingress].
  • Стандартный Kubernetes NetworkPolicy для контроля трафика от Gateway с контроллером Cilium не подходит — он не умеет выбирать идентичность ingress.