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