В CCE кластерах Envoy Gateway (с Envoy в качестве data plane) и NGINX Ingress оба используются для внешней маршрутизации трафика и балансировки нагрузки. В этом разделе сравниваются Envoy Gateway и NGINX Ingress, чтобы помочь вам выбрать подходящее решение и спланировать миграцию.
NGINX Ingress (через Annotations) | Envoy Gateway (через Gateway API) | Различия |
|---|---|---|
Маршрутизация по хосту | Поддерживается | Envoy Gateway использует HTTPRoute hostnames для реализации этой функции. |
Маршрутизация пути (prefix/exact) | Поддерживается | Envoy Gateway использует HTTPRoute rules.matches.path для реализации этой функции. |
Настройка HTTPS‑сертификатов | Поддерживается | Envoy Gateway использует Gateway listeners.tls для ссылки на секрет и реализации этой функции. |
Перенаправление HTTP на HTTPS | Поддерживается | Envoy Gateway использует фильтр HTTPRoute RequestRedirect для реализации этой функции. |
Перенаправление на несколько бэкендов | Поддерживается | Envoy Gateway использует HTTPRoute backendRefs для поддержки нескольких бэкендов. |
Многопортовое прослушивание | Поддерживается | Envoy Gateway использует Gateway listeners для реализации этой функции. |
Настройка HTTPS‑бэкенд‑служб | Поддерживается | Envoy Gateway использует расширенный ресурс BackendTLSPolicy для реализации этой функции. |
Настройка gRPC‑бэкенд‑служб | Поддерживается | Эта функция реализована с использованием GRPCRoute. Подробности см. https://gateway.envoyproxy.io/latest/tasks/traffic/grpc-routing/. |
NGINX Ingress (через Annotations) | Envoy Gateway (через Gateway API) | Различия |
|---|---|---|
Перезапись пути | Поддерживается | Envoy Gateway использует фильтр HTTPRoute URLRewrite для реализации этой функции. |
Перенаправление | Поддерживается | Envoy Gateway использует фильтр HTTPRoute RequestRedirect для реализации этой функции. |
Модификация заголовков запроса | Поддерживается | Envoy Gateway использует фильтр HTTPRoute RequestHeaderModifier для реализации этой функции. |
Модификация заголовков ответа | Поддерживается | Envoy Gateway использует фильтр HTTPRoute ResponseHeaderModifier для реализации этой функции. |
Вставка пользовательского фрагмента Nginx | Не поддерживается | Не поддерживается Envoy Gateway из коробки. Используйте EnvoyPatchPolicy для изменения базовой конфигурации Envoy. |
NGINX Ingress (через Annotations) | Envoy Gateway (через Gateway API) | Различия |
|---|---|---|
Timeout | Поддерживается | Envoy Gateway использует ресурсы HTTPRoute timeouts или BackendTrafficPolicy. Реализация отличается от NGINX: Envoy Gateway предоставляет более детализированный механизм тайм‑аутов с различными полями конфигурации. |
Retry | Поддерживается | Envoy Gateway использует ресурсы BackendTrafficPolicy со следующими полями:
|
Алгоритмы балансировки нагрузки (например RR и least_request) | Поддерживается | Envoy Gateway использует BackendTrafficPolicy loadBalancer.type со следующими параметрами:
|
Пул соединений и circuit breaker | Поддерживается | Envoy Gateway использует BackendTrafficPolicy circuitBreaker со следующими полями:
|
Sticky session (cookie stickiness) | Поддерживается | Envoy Gateway использует согласованное хеширование для балансировки нагрузки в сочетании с расширением StatefulSession для реализации этой функции. |
NGINX Ingress (Via Annotations) | Envoy Gateway (Via Gateway API) | Различие |
|---|---|---|
Распределение трафика по весу | Поддерживается | Envoy Gateway использует HTTPRoute backendRefs.weight для реализации этой функции. |
Распределение трафика по заголовку/запросу | Поддерживается | Envoy Gateway поддерживает как заголовки, так и параметры запроса в HTTPRoute matches. |
Распределение трафика по cookie | Поддерживается | Envoy Gateway использует HTTPRoute matches (соответствие заголовку cookie) для реализации этой функции. |
Отражение трафика | Поддерживается | Envoy Gateway использует фильтр HTTPRoute RequestMirror для реализации этой функции. |
Доступ из разных источников | Поддерживается | CORS можно настроить с помощью SecurityPolicy. Подробности см. https://gateway.envoyproxy.io/latest/tasks/security/cors/. |
NGINX Ingress (Via Annotations) | Envoy Gateway (Via Gateway API) | Различия |
|---|---|---|
Версия TLS/набор шифров | Поддерживается | Envoy Gateway использует ресурсы ClientTrafficPolicy для тонкой настройки TLS. |
NGINX Ingress (через аннотации) | Envoy Gateway (через Gateway API) | Различия |
|---|---|---|
Базовая аутентификация | Поддерживается | Envoy Gateway использует SecurityPolicy basicAuth для реализации этой функции. |
Внешняя аутентификация (OAuth2/OIDC/SSO) | Поддерживается | Envoy Gateway использует SecurityPolicy oidc для реализации этой функции. |
RBAC на основе пути/метода | Поддерживается | Envoy Gateway использует SecurityPolicy authorization для реализации этой функции. |
NGINX Ingress (Через аннотации) | Envoy Gateway (Через Gateway API) | Различия |
|---|---|---|
Ограничение скорости (по IP, заголовку или ключу) | Поддерживается | Envoy Gateway поддерживает как глобальное, так и локальное ограничение скорости через BackendTrafficPolicy. |
Максимальное количество соединений или одновременных соединений | Частично поддерживается | Envoy Gateway использует ресурсы ClientTrafficPolicy и BackendTrafficPolicy для реализации этой функции. |
Белый или чёрный список IP | Поддерживается | Envoy Gateway использует SecurityPolicy authorization для реализации этой функции. |