Ответ
Ingress в Kubernetes — это API-объект, который управляет внешним доступом к сервисам (обычно HTTP/HTTPS) внутри кластера. Он действует как интеллектуальный маршрутизатор, определяя правила, по которым внешний трафик попадает к нужным Pod'ам.
Основные функции Ingress:
- Маршрутизация на основе хоста или пути: Направление запросов
api.example.comилиexample.com/adminк разным сервисам. - Терминация TLS/SSL: Централизованное управление SSL-сертификатами для безопасного соединения (HTTPS).
- Балансировка нагрузки: Распределение трафика между Pod'ами сервиса.
- Единая точка входа: Позволяет не создавать отдельный Service типа LoadBalancer для каждого внутреннего сервиса, что экономит ресурсы и упрощает конфигурацию.
Пример манифеста Ingress, который направляет трафик на два разных сервиса:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- myapp.example.com
secretName: myapp-tls-secret
rules:
- host: myapp.example.com
http:
paths:
- path: /web
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 8080
Для работы Ingress'а в кластере должен быть развернут Ingress Controller (например, ingress-nginx, Traefik, HAProxy), который и реализует эти правила.