Ответ
OpenShift Route и Kubernetes Ingress решают одну задачу — внешняя маршрутизация HTTP/HTTPS трафика к сервисам внутри кластера, но делают это по-разному.
Kubernetes Ingress
- Стандарт: Объект API Kubernetes (часть спецификации).
- Требования: Для работы необходим контроллер Ingress (например, ingress-nginx, Traefik, HAProxy Ingress), который развертывается отдельно.
- Конфигурация: Определяет правила маршрутизации на основе хоста и пути. Часто требует аннотаций для расширенной функциональности.
- Пример Ingress-ресурса:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: myapp-ingress spec: rules: - host: myapp.example.com http: paths: - path: / pathType: Prefix backend: service: name: myapp-service port: number: 80
OpenShift Route
- Стандарт: Специфичный для OpenShift объект API (часть OpenShift API).
- Требования: Использует встроенный HAProxy-роутер, который поставляется с платформой.
- Конфигурация: Проще для базовых сценариев. Имеет встроенную поддержку расширенных функций TLS (Edge, Passthrough, Re-encrypt) без дополнительных аннотаций.
- Пример Route-ресурса:
apiVersion: route.openshift.io/v1 kind: Route metadata: name: myapp-route spec: host: myapp.example.com to: kind: Service name: myapp-service port: targetPort: 8080 tls: termination: edge # TLS-терминация на роутере insecureEdgeTerminationPolicy: Redirect
Ключевые отличия:
- Экосистема: Ingress — переносимый стандарт Kubernetes. Route — проприетарное, но мощное решение OpenShift.
- Простота: Route часто проще настроить "из коробки", особенно для TLS.
- Гибкость: Ingress с различными контроллерами может быть более гибким в кастомизации, но требует больше ручной настройки.