Термин · Глоссарий B2B-ПО

Ingress (Ingress)

Ingress в Kubernetes – объект API, управляющий внешним доступом к сервисам кластера по протоколам HTTP/HTTPS. Определяет правила маршрутизации трафика на основе имён хостов и URL-путей, а также обеспечивает терминацию TLS.

Буква «I» В категориях: 3 Платформ: 5+

Введение

Ingress – объект API Kubernetes, определяющий правила маршрутизации внешнего HTTP/HTTPS-трафика к сервисам внутри кластера. В отличие от типов Service NodePort и LoadBalancer, которые работают на уровне TCP/UDP, Ingress работает на уровне Layer 7 (HTTP/HTTPS), позволяя строить гибкую маршрутизацию на основе доменных имён и URL-путей.

Ingress решает проблему экономичного предоставления внешнего доступа к множеству сервисов: вместо создания отдельного LoadBalancer для каждого сервиса (что дорого и неудобно в облаке) используется один Ingress Controller, обслуживающий все входящие HTTP-запросы.

История и контекст

Первые версии Kubernetes не имели встроенного механизма для Layer 7 маршрутизации. В ранних версиях разработчики использовали NodePort или создавали кастомные reverse-proxy решения. Ресурс Ingress появился в Kubernetes 1.1 (2015) в статусе beta, а стабильным (networking.k8s.io/v1) стал в Kubernetes 1.19 (2020).

Параллельно развивалась экосистема Ingress Controller'ов: nginx-ingress (первый популярный контроллер), Traefik, HAProxy, Contour, Ambassador. В 2023 году Kubernetes SIG-Network представил новый API – Gateway API – как более мощную замену Ingress с поддержкой TCP/UDP маршрутизации, traffic splitting и расширяемой моделью ролей.

Как это работает

Ingress работает как двухкомпонентная система:

  • Ingress Resource – декларативный объект Kubernetes, описывающий правила маршрутизации: какой хост (host) и путь (path) соответствует какому Service и порту.
  • Ingress Controller – процесс (обычно Pod в кластере), реализующий правила из Ingress Resource. Без установленного Ingress Controller объект Ingress не имеет эффекта.

Пример логики работы:

  1. Пользователь создаёт Ingress-ресурс: запросы на api.example.com/v1 → Service api-service:8080, запросы на app.example.com → Service frontend:80.
  2. Ingress Controller (например, nginx-ingress) читает этот ресурс и обновляет конфигурацию nginx.
  3. Входящие HTTP-запросы поступают на IP-адрес Ingress Controller'а (обычно через LoadBalancer или NodePort).
  4. nginx проверяет заголовок Host и путь URL, маршрутизирует запрос на соответствующий Service.

TLS-терминация: Ingress поддерживает HTTPS через секреты Kubernetes типа kubernetes.io/tls. TLS-соединение терминируется на Ingress Controller'е, внутри кластера трафик идёт по HTTP. Автоматическое получение сертификатов обеспечивает cert-manager (интеграция с Let's Encrypt, внутренними CA).

Аннотации: поведение Ingress тонко настраивается через аннотации, специфичные для каждого контроллера (например, nginx.ingress.kubernetes.io/rewrite-target).

Популярные Ingress Controller'ы

  • ingress-nginx – официально поддерживаемый Kubernetes сообществом, основан на nginx. Наиболее распространённый вариант.
  • Traefik – современный контроллер с автоматическим обнаружением сервисов, нативной интеграцией с Let's Encrypt и удобным dashboard.
  • HAProxy Ingress – высокопроизводительный вариант на основе HAProxy.
  • Contour – использует Envoy в качестве data plane, поддерживает HTTPProxy (расширение Ingress API).
  • NGINX Ingress (F5 NGINX) – коммерческая версия от F5, поддерживает JWT-аутентификацию, rate limiting, WAF.

Где применяется

Ingress применяется практически во всех production-окружениях Kubernetes:

  • Микросервисная архитектура: единая точка входа для десятков/сотен микросервисов с разными поддоменами.
  • Canary-деплойменты: маршрутизация части трафика на новую версию приложения (Canary Ingress с nginx-ingress или Traefik).
  • A/B тестирование: разделение трафика между версиями приложения по cookie или заголовку.
  • API Gateway паттерн: Ingress как упрощённый API gateway для маршрутизации и базовой аутентификации.
  • Мультитенантность: разные namespace'ы используют разные Ingress Class для изоляции.

Связь с другими понятиями

  • Service Mesh (Istio) – Ingress работает на уровне входящего трафика (north-south), а Service Mesh управляет трафиком между сервисами (east-west). Istio предоставляет Istio Gateway как альтернативу Ingress.
  • CNI – сетевой плагин Kubernetes, обеспечивающий связность Pod'ов, необходимую для работы Ingress Controller'а.
  • Kubernetes Operator – многие Ingress Controller'ы управляются через операторы (например, NGINX Ingress Operator).
  • Gateway API – новый стандарт Kubernetes (GA в K8s 1.28), заменяющий Ingress с более богатой моделью маршрутизации.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «Ingress».

Платформы класса «Ingress»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

Платформа для создания отказоустойчивой инфраструктуры клиентских приложений
Цена по запросу
Подробнее →
ПБ

Платформа боцман

Kubernetes и контейнерная оркестрация
Российская гибридная Kubernetes-платформа для централизованного управления мультикластерами контейнеров в корп...
Цена по запросу
★ 4.3
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «Ingress».

Где применяется

Отрасли, в которых «Ingress» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про Ingress

В чём разница между Service LoadBalancer и Ingress?

LoadBalancer работает на уровне TCP (L4) и создаёт отдельный IP для каждого сервиса. Ingress работает на HTTP (L7) и позволяет одному IP обслуживать множество сервисов через маршрутизацию по хосту и пути.

Нужно ли устанавливать Ingress Controller отдельно?

Да. Kubernetes не поставляется со встроенным Ingress Controller'ом. Необходимо установить один из контроллеров: ingress-nginx, Traefik, Contour или другой.

Как Ingress обрабатывает HTTPS?

Ingress поддерживает TLS-терминацию через секреты Kubernetes с сертификатами. Автоматическое получение сертификатов Let's Encrypt обеспечивает cert-manager.

Что такое Ingress Class?

IngressClass – ресурс Kubernetes, указывающий какой Ingress Controller должен обработать данный Ingress. Позволяет иметь несколько контроллеров в одном кластере.

Что такое Gateway API и чем он лучше Ingress?

Gateway API – новый стандарт для маршрутизации в Kubernetes. Он более выразителен, поддерживает TCP/UDP, traffic splitting и имеет чёткое разделение ролей. Стал GA в Kubernetes 1.28.

Как настроить Canary-деплоймент через Ingress?

В nginx-ingress используются аннотации nginx.ingress.kubernetes.io/canary и canary-weight, позволяющие направить, например, 10% трафика на новую версию приложения.