Kubernetes Ingress что это?

Kubernetes Ingress что это? - коротко

Ingress в Kubernetes — это объект, который управляет внешним доступом к сервисам кластера, предоставляя маршрутизацию HTTP/HTTPS и возможности балансировки нагрузки. Для его работы требуется контроллер Ingress, реализующий указанные правила маршрутизации.

Kubernetes Ingress что это? - развернуто

Ingress – это объект Kubernetes, который отвечает за маршрутизацию входящего HTTP/HTTPS-трафика к сервисам внутри кластера. Он позволяет определить, какие запросы должны попадать в какие сервисы, используя правила, основанные на хосте, пути или заголовках. В отличие от Service типа LoadBalancer, который предоставляет один внешний IP‑адрес, Ingress концентрирует доступ к множеству сервисов через единый входной пункт.

Для работы Ingress требуется контроллер – отдельный компонент, который наблюдает за объектами Ingress и программирует реальное сетевое оборудование (например, Nginx, HAProxy, Envoy) или облачные балансировщики. Контроллер переводит декларативные правила Ingress в конфигурацию реального прокси, обеспечивая балансировку нагрузки, TLS‑терминацию и другие функции.

Основные возможности Ingress:

  • Маршрутизация по хосту – разные доменные имена могут направляться к различным сервисам.
  • Маршрутизация по пути – запросы с различными URL‑путями могут обслуживаться разными бэкендами.
  • TLS‑терминация – контроллер может принимать HTTPS‑соединения, расшифровывать их и передавать трафик в кластер уже в виде HTTP.
  • Перенаправления и переписывание URL – позволяют изменять запросы перед их доставкой в сервис.
  • Аутентификация и авторизация – некоторые контроллеры поддерживают интеграцию с внешними системами безопасности.
  • Балансировка нагрузки – распределяет запросы между репликами сервисов по выбранному алгоритму.

Пример простого правила Ingress выглядит так:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: example-ingress
spec:
 tls:
 - hosts:
 - example.com
 secretName: example-tls
 rules:
 - host: example.com
 http:
 paths:
 - path: /api
 pathType: Prefix
 backend:
 service:
 name: api-service
 port:
 number: 80
 - path: /
 pathType: Prefix
 backend:
 service:
 name: web-service
 port:
 number: 80

В этом фрагменте объявляются два пути: запросы к example.com/api перенаправляются в сервис api-service, а всё остальное – в web-service. TLS‑секрет example-tls обеспечивает безопасный доступ по HTTPS.

Ingress упрощает управление публичным доступом к микросервисам, устраняя необходимость создания отдельного LoadBalancer для каждого сервиса. Вместо этого один контроллер распределяет трафик, экономя ресурсы и упрощая конфигурацию. При правильной настройке Ingress становится центральной точкой входа, позволяя централизованно применять политики безопасности, мониторинг и логирование.