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 становится центральной точкой входа, позволяя централизованно применять политики безопасности, мониторинг и логирование.