Service Mesh: использование Istio для маршрутизации TCP-трафика на основе IP-адреса клиента в виртуальной службе
Входной шлюз расположен за AWS ELB(классический) с использованием nodeport, и я хочу маршрутизировать TCP-трафик в виртуальной службе на основе IP-адреса клиента.
Конечно, протокол прокси ELB включен.
Когда я использую HTTP, он работает. Конфигурация ниже.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: app-vservice
namespace: test
spec:
hosts:
- "app-service"
http:
- match:
- headers:
x-forwarded-for:
exact: 123.123.123.123
route:
- destination:
host: app-service
subset: v2
- route:
- destination:
host: app-service
subset: v1
Но я не могу найти поле заголовков TCP-маршрута в официальных документах.
Это невозможно?
Спасибо.
1 ответ
Согласно документам, да, в Istio нет поля для передачи заголовков в TCPRoute. Также, чтобы ответить на ваш вопрос, каждая манипуляция с заголовком должна выполняться с использованием фильтров envoy, потому что Istio, построенное на envoy, поддерживает это, а также снижает сложность.
Использование фильтров envoy и lua, как указано в документации Istio. Этого можно добиться. Пожалуйста, следуйте документации посланника.
Заголовки в Virtual Service см. В обсуждении Istio.
Для реализации того же с помощью Lua. И блог, показывающий пример того, как реализовать фильтры на envoy.