Что такое Kubernetes Ingress?

«Что такое Kubernetes Ingress?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 для десятков доменов.