Wiki
DevOps

Kubernetes Ingress — что это простыми словами

Ingress — правила L7-роутинга внешнего HTTP-трафика в кластер k8s. IngressController (nginx-ingress, Traefik) реализует правила. Один LB на кластер.

Ingress — Kubernetes-ресурс, описывающий L7-роутинг внешнего трафика: `example.com/api → api-service`, `example.com → frontend-service`, `admin.example.com → admin-service`. Сам по себе не работает — нужен Ingress Controller, который его реализует.

Ingress Controllers: (1) ingress-nginx — де-факто стандарт, nginx под капотом. (2) Traefik — Go-based, автоматический TLS через Let's Encrypt, dashboard. (3) HAProxy Ingress — HAProxy под капотом. (4) Istio Ingress Gateway / Envoy — для service-mesh. (5) Kong — API-gateway на nginx. Все читают Ingress-ресурсы и рендерят конфиг.

Пример: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: myapp annotations: cert-manager.io/cluster-issuer: letsencrypt spec: tls: - hosts: [app.example.com] secretName: myapp-tls rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: {name: myapp, port: {number: 80}} ```

Gateway API (2023) — новый стандарт CNCF, планируется как замена Ingress: разделяет ответственность (Cluster Operator создаёт Gateway, разработчик — HTTPRoute). Пока сосуществуют.

Частые вопросы

Ingress vs Service type=LoadBalancer?
Один Ingress + один LB = сотни доменов. N LoadBalancer Service = N cloud LB (дорого).
TLS в Ingress или backend?
Обычно в Ingress через cert-manager + Let's Encrypt. Backend видит plain HTTP, что упрощает разработку.

Смотрите также