Kubernetes Ingress: маршрутизація HTTP-трафіку в кластер
Коротко: Набір правил, що визначає, які веб-адреси ззовні ведуть до яких сервісів у кластері Kubernetes.
Докладніше: Поди в Kubernetes недоступні напряму ззовні. Сервіс (service) робить їх виявлюваними всередині кластера. Щоб вебзапит з інтернету дійшов, додатково потрібен ingress: він описує правила на кшталт «shop.example.com іде до сервісу shop». Ingress-контролер (наприклад, nginx або Traefik) реалізує ці правила.
Подробиці
Приклад
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: shop
spec:
tls:
- hosts: [shop.example.com]
secretName: shop-tls
rules:
- host: shop.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: shop, port: { number: 80 } }Тут хост shop.example.com із сертифікатом TLS спрямовується до сервісу shop.
Завдання контролера
Контролер працює як под у кластері та читає ресурси ingress. Він діє як зворотний проксі: приймає з’єднання, термінує TLS, обирає сервіс за хостом і шляхом та розподіляє за його подами. Додаткові функції, такі як перенаправлення HTTP на HTTPS, тайм-аути чи обмеження частоти, керуються через анотації.
Автоматичні сертифікати
З cert-manager сертифікати (наприклад, від Let’s Encrypt) можна запитувати й продовжувати автоматично. Ingress тоді лише посилається на назву секрету.
Gateway API
Gateway API вважається наступником. Він точніше розділяє ролі (оператор інфраструктури надає шлюз, команди застосунків створюють маршрути) і підтримує більше, ніж HTTP. Класичний ingress, проте, усе ще широко поширений.
Див. також: Основи Kubernetes, nginx і зворотний проксі, Let’s Encrypt і сертифікати TLS, Балансувальник навантаження