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.