Ingress: маршрутизация HTTP
Когда сервисов много, не публиковать же каждый отдельным балансировщиком — Ingress собирает HTTP-трафик в одну точку.
Ingress — объект, который описывает правила маршрутизации внешнего HTTP/HTTPS-трафика на сервисы кластера по хостам и путям.
Тип LoadBalancer даёт по внешнему IP на каждый сервис — для десятка сервисов это дорого и неудобно. Ingress работает как «умный роутер» (reverse proxy): один внешний вход, а внутри правила «такой хост и путь → такой сервис».
Нужен Ingress-контроллер
Важный нюанс: сам объект Ingress — лишь набор правил. Чтобы они заработали, в кластере должен крутиться Ingress-контроллер (например, ingress-nginx) — он читает эти правила и реально направляет трафик. Без контроллера Ingress ничего не делает. В minikube его включают аддоном:
minikube addons enable ingressМаршрутизация по путям
Отправим /api на бэкенд, всё остальное — на фронтенд:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
spec:
rules:
- host: myapp.local
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: backend
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: frontend
port:
number: 80Теперь запрос http://myapp.local/api/users уйдёт в сервис backend, а http://myapp.local/ — в frontend. Всё через один внешний IP контроллера.
Маршрутизация по хостам
Можно разводить трафик и по доменам: shop.example.com → один сервис, blog.example.com → другой. Один Ingress-контроллер обслуживает много приложений. Здесь же обычно настраивают TLS (HTTPS) — сертификат хранится в Secret и подключается к Ingress.
| Уровень | Объект | Что делает |
| L4 (TCP/порт) | Service (LoadBalancer/NodePort) | публикует один сервис |
| L7 (HTTP) | Ingress + контроллер | роутинг по хостам и путям для многих сервисов |
Итог
- Ingress — единая HTTP-точка входа с маршрутизацией по хостам и путям.
- Правила Ingress исполняет Ingress-контроллер; без него они бездействуют.
- Один контроллер заменяет десятки отдельных LoadBalancer-ов и умеет TLS.