Учебное пособие. Реализация фабрики шлюза Nginx в качестве альтернативы Ingress

Экосистема Kubernetes претерпевает фундаментальные изменения в том, как она управляет внешним трафиком. 12 ноября 2025 года Kubernetes объявила о прекращении использования Ingress Nginx, одного из наиболее широко используемых компонентов в собственной облачной инфраструктуре. Максимальное техническое обслуживание продолжится до марта 2026 года, после чего репозиторий перейдет в статус «только для чтения» без каких-либо дальнейших исправлений безопасности, исправлений ошибок или выпусков функций.

Это знаменует собой критический переломный момент для организаций, использующих кластеры Kubernetes. Традиционный API Ingress, хотя и проверенный в боях и знакомый поколениям инженеров, достиг пределов своей конструкции. Ему не хватает поддержки расширенных шаблонов управления трафиком, вынуждает команды бороться с аннотациями, специфичными для конкретного поставщика, и он не может выражать сложные правила маршрутизации, необходимые для современных приложений.

Kubernetes Gateway API является преемником и представляет собой стандартизированную расширяемую структуру, устраняющую эти фундаментальные ограничения. Вместо того, чтобы полагаться на фрагментированные реализации и собственные аннотации, Gateway API представляет унифицированную модель, которая поддерживает многопротокольную маршрутизацию (L4 и L7), детальное управление трафиком, сопоставление шаблонов на основе заголовков, зеркалирование запросов и собственные метрики трафика.

Gateway API, который станет общедоступным в 2023 году, представляет собой ответ сообщества Kubernetes на проблему входящего доступа. Подробное сравнение контроллера Ingress и шлюза можно найти в моей предыдущей статье, опубликованной в The New Stack.

Одной из первых реализаций Gateway API является Nginx Gateway Fabric, которая представляет собой совместимую реализацию API Kubernetes Gateway с открытым исходным кодом, которая использует Nginx в качестве высокопроизводительной плоскости данных. Он разделяет проблемы плоскости управления и плоскости данных, динамически предоставляя экземпляры Nginx для каждого ресурса шлюза и одновременно преобразуя ресурсы API шлюза в конфигурации Nginx. В отличие от традиционных контроллеров Ingress, Nginx Gateway Fabric предоставляет расширенные возможности «из коробки», включая сине-зеленое и канареечное развертывание, A/B-тестирование, манипулирование запросами/ответами и мультитенантное управление на основе ролей.

Это руководство поможет вам реализовать API шлюза на основе Nginx Gateway Fabric, помогая подготовить вашу инфраструктуру к эпохе пост-Ingress. Мы начнем со знакомого развертывания Kubernetes с двумя сервисами: один для Интернета и один для API. Мы будем использовать API шлюза для маршрутизации HTTP-трафика к этим двум внутренним службам ClusterIP.

В этом уроке я использую кластер K3s, работающий внутри виртуальной машины Multipass. Но вы можете использовать любую среду Kubernetes для выполнения шагов, описанных в этом руководстве.

Шаг 1. Определите и разверните пример приложения

Мы определим два развертывания и службы, чтобы предоставить конечные точки Интернета и API как службы ClusterIP в демонстрационном пространстве имен.

Примените YAML и проверьте, запущены ли модули и службы.

kubectl get pods,svc -n demo 1 kubectl get pods,svc -n demo

Наша цель — направить трафик к конечным точкам demo-API и demo-app через Gateway API.

Шаг 2. Развертывание структуры шлюза Nginx

Сначала мы установим CRD, необходимые шлюзу.

kubectl kustomize » \ | kubectl apply -f — 12 kubectl kustomize » \ | kubectl применить -f —

kubectl получить crd | grep шлюз.networking.k8s.io 1 kubectl get crd | grep шлюз.networking.k8s.io

Затем мы развернем Nginx Gateway Fabric через диаграмму Helm.

helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric \ —create-namespace \ -n nginx-gateway \ —set nginx.service.type=NodePort 1234 helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric \ —create-namespace \ -n nginx-gateway \ —set nginx.service.type=Порт узла

Обратите внимание, что мы указываем тип службы как NodePort. Если вы используете управляемую среду Kubernetes, измените это значение на LoadBalancer.

Проверьте установку, проверив nginx-шлюз.

kubectl get pods,svc -n nginx-gateway 1 kubectl get pods,svc -n nginx-gateway

Следующим шагом является развертывание шлюза, который разработчики приложений будут использовать для определения маршрута к своим службам, работающим в их пространствах имен.

Примените файл YAML и убедитесь, что шлюз создан правильно.

kubectl apply -f шлюз.yaml 1 kubectl apply -f шлюз.yaml

kubectl get pods,svc -n nginx-gateway 1 kubectl get pods,svc -n nginx-gateway

Мы видим, что шлюз создан и доступен через NodePort 31678.

Шаг 3. Определите маршрут к примеру приложения

Когда шлюз готов, пришло время создать маршрут. Обычно это делают разработчики, развертывающие свое приложение в Kubernetes. Маршрут работает в том же пространстве имен, что и приложение.

Определите маршрут и разверните его.

kubectl apply -froute.yaml 1 kubectl apply -froute.yaml

Это создало HTTPRoute для конечных точек, предоставляемых примером приложения.

Шаг 4. Доступ к конечным точкам HTTP, предоставляемым шлюзом

Мы готовы протестировать маршруты, определенные шлюзом.

Учитывая, что IP-адрес моей виртуальной машины — 192.168.2.5, а NodePort — 31678, я могу сделать запрос cURL для проверки конечных точек.

Мы успешно внедрили API шлюза, чтобы предоставить внутренние конечные точки внешним пользователям. В следующих руководствах я расскажу, как реализовать маршрутизацию на основе TLS. Следите за обновлениями!

ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Джанакирам MSV — главный аналитик Janakiram & Associates и внештатный преподаватель Международного института информационных технологий. Он также является сертифицированным облачным разработчиком Google, сертифицированным архитектором решений Amazon, сертифицированным разработчиком Amazon,… Читать далее от Джанакирама MSV

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *