Урок 9: Публикация приложений — LoadBalancer, Ingress и DNS
На прошлом уроке мы познакомились с Service типа ClusterIP — стабильным адресом и DNS-именем, которые связывают с Pod'ами, но только изнутри кластера. Теперь вопрос в том, как посетитель снаружи (из интернета) добирается до приложения. Мы разберём три уровня публикации. ClusterIP остаётся только вну
ClusterIP — это внутренний офисный телефон; LoadBalancer — внешний номер, на который может позвонить кто угодно; а Ingress — это лобби здания, которое направляет каждого посетителя в нужный офис по имени на двери.
- Ingress
- Объект, который маршрутизирует внешний HTTP/HTTPS-трафик к внутренним Service по имени хоста (host) и пути (path). Он предоставляет единую точку входа для многих приложений. Для применения правил ему нужен Ingress Controller, работающий в кластере.
- LoadBalancer
- Тип Service, который запрашивает у облачного провайдера настоящий внешний IP и балансирует трафик на сетевом уровне (L4) к Pod'ам этого Service. Это делает приложение доступным снаружи кластера.
- DNS кластера
- Внутренний DNS-сервис, который разрешает имена Service в IP-адреса внутри кластера. Полное имя выглядит так: <service>.<namespace>.svc.cluster.local, например web.default.svc.cluster.local.
- ClusterIP
- Тип Service по умолчанию: стабильный виртуальный IP, доступный только изнутри кластера. Отлично подходит для связи между внутренними компонентами, но недоступен снаружи.
- NodePort
- Тип Service, который открывает фиксированный порт на каждом node в кластере, так что Service доступен по адресу node и этому порту. Простой, но грубый способ внешней публикации.