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.

Другие вопросы по тегам