EMZETT.
Увійти

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, Балансувальник навантаження