Gateway API против Ingress в Kubernetes
Сетевые настройки в Kubernetes могут сбивать с толку, особенно когда вы хотите открыть доступ к сервисам извне. Самые популярные способы — это Ingress и более современный Gateway API.
Разберём, чем они отличаются и когда использовать каждый из них.
Что такое Ingress?
Ingress — это объект Kubernetes, который описывает правила маршрутизации HTTP/HTTPS трафика к вашим сервисам. Для его работы требуется Ingress Controller, например NGINX или Traefik.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
Плюсы Ingress
- Просто настроить
- Подходит для небольших проектов
- Широко поддерживается
Минусы
- Ограниченные возможности
- Сильно зависит от реализации
- Сложно расширять
Что такое Gateway API?
Gateway API — это более современный и гибкий способ управления сетевыми входами. Он предлагает больше возможностей, лучшую структуру и консистентное поведение.
Новые ресурсы:
- GatewayClass
- Gateway
- HTTPRoute
- TCPRoute
Пример:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: nginx
  listeners:
    - name: http
      port: 80
      protocol: HTTP
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: my-route
spec:
  parentRefs:
    - name: my-gateway
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      backendRefs:
        - name: my-service
          port: 80
Основные отличия
| Возможность | Ingress | Gateway API | 
|---|---|---|
| Расширяемость | Низкая | Высокая | 
| Основан на CRD | Нет | Да | 
| Многопротокольность | Только HTTP/HTTPS | TCP/UDP поддержка | 
| Разделение ролей | Слабое | Чёткое | 
| Будущее | Устаревающий | Современный | 
Когда что использовать?
- Ingress подойдёт для простых HTTP приложений.
- Gateway API стоит использовать, если нужен контроль, гибкость и перспективность.
Заключение
Ingress — это рабочее решение, но будущее за Gateway API. Если вы только начинаете — используйте Gateway API.