hostprofi.ru
Подобрать хостинг
Термин·буква I

Ingress

краткое определение

Ingress (Kubernetes) — объект Kubernetes, описывающий правила маршрутизации HTTP/HTTPS-трафика к сервисам внутри кластера. Реализуется Ingress Controller (nginx, Traefik, HAProxy).

Ingress — ресурс Kubernetes, описывающий правила маршрутизации внешнего HTTP/HTTPS-трафика к внутренним сервисам кластера. Ingress сам по себе — только декларация правил; для работы требуется Ingress Controller — отдельный pod, реализующий эти правила (обычно на базе Nginx или Traefik).

Как работает Ingress

Пример Ingress-ресурса:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - app.example.com
    secretName: app-tls
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 8080
      - path: /
        pathType: Prefix
        backend:
          service:
            name: frontend-service
            port:
              number: 80

Ingress Controllers

  • Nginx Ingress Controller (ingress-nginx): самый распространённый. Основан на Nginx. Поддерживается Kubernetes SIG.
  • Traefik: хорошо интегрируется с CRD и Let's Encrypt.
  • HAProxy Ingress: высокая производительность для L4/L7.
  • AWS ALB Ingress Controller: для EKS — создаёт Application Load Balancer.
  • Istio Gateway: часть service mesh, для сложных сценариев трафика.

История

Ingress API появился в Kubernetes 1.1 (2015) как beta-ресурс. Долго оставался beta — API стабилизирован только в Kubernetes 1.19 (2020). До Ingress использовали NodePort и LoadBalancer Service для внешнего доступа. Kubernetes 1.22 (2021) добавил IngressClass — возможность иметь несколько Ingress Controller в кластере. Kubernetes Gateway API (2023) — следующее поколение, более гибкое: GatewayClass, Gateway, HTTPRoute. Traefik v3 нативно поддерживает Gateway API.

На что обращать внимание

Ingress Controller должен быть установлен до создания Ingress-ресурсов — иначе они будут ignored. Cert-manager автоматически выпускает Let's Encrypt сертификаты для TLS-ресурсов через аннотацию cert-manager.io/cluster-issuer. На VPS с одной нодой Kubernetes (k3s, Minikube) Nginx Ingress Controller + cert-manager — стандартный стек для продакшн-сайтов. Не путай Kubernetes Ingress с сетевым термином «входящий трафик» — это разные контексты.

История Kubernetes Ingress

Ingress API появился в Kubernetes 1.1 (2014) как beta-ресурс. Долгое время оставался в beta — стабильной стала версия Ingress v1 в Kubernetes 1.19 (2020). Параллельно развивались Ingress Controllers: Nginx Ingress Controller (2016, NGINX Inc.), Traefik Ingress (2016), HAProxy Ingress (2017), AWS ALB Ingress (2018). В 2021 году Kubernetes SIG-Network начал разработку Gateway API — более гибкий преемник Ingress с поддержкой TCP/UDP и более богатой моделью разрешений.

Пример ресурса Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - example.com
    secretName: tls-secret
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-service
            port:
              number: 80

На что обращать внимание

Ingress работает только при наличии установленного Ingress Controller — без него ресурс Ingress игнорируется. Для VPS с одной нодой k3s: Nginx Ingress Controller + cert-manager — стандартный production-стек. Аннотации в Ingress специфичны для каждого Controller — аннотации Nginx не работают с Traefik. Kubernetes Gateway API (gatewayapi.sigs.k8s.io) — рекомендуемая замена Ingress для новых кластеров. Не путай Kubernetes Ingress с сетевым понятием «входящий трафик» — разные контексты.

Другие термины