TCP Ingress с Istio 0.8 и v1alpha3 Gateway

Я пытаюсь открыть TCP-соединение с сеткой служб Istio, используя маршрутизацию v1alpha3. Я могу успешно установить соединение с внешним балансировщиком нагрузки. Этот трафик попадает в IngressGateway по умолчанию, как и ожидалось; Я проверил это с tcpdump на модуле IngressGateway.

К сожалению, трафик никогда не пересылается в сервисную сеть; кажется, что он умирает в IngressGateway.

Ниже приведен пример моей конфигурации:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: echo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 31400 
      protocol: TCP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: echo-gateway
spec:
  hosts:
  - "*"
  gateways:
  - echo-gateway
  tcp:
  - match:
    - port: 31400
    route:
    - destination:
        host: echo.default.svc.cluster.local
        port:
          number: 6060

Я подтвердил, что IngressGateway может подключиться к Сервису через netcat на указанном порту. Запуск tcpdump в модуле служб с посланником означает, что никогда не было попыток связи с модулем или прокси.

Я несколько раз перечитывал документацию и не понимаю, что делать дальше. Эта строчка из документации мне кажется подозрительной:

Хотя Istio настроит прокси-сервер для прослушивания этих портов, ответственность за то, чтобы внешний трафик, поступающий на эти порты, поступал в сетку, лежит на пользователе.

Есть предположения?


person C. King    schedule 05.07.2018    source источник


Ответы (1)


Вы должны дать Gateway порту имя, например port: name: not_http number: 80 protocol: HTTP

(Когда я попытался создать ваш кластер без имени в Istio 1.0, он был отклонен). Использование not_http помогает напомнить нам, что это шлюз TCP и у него не будет доступа ко всем функциям конфигурации Istio.

VirtualService выглядит правильно. Убедитесь, что у вас есть только одна VirtualService для хоста «*» (используйте istioctl get all --all-namespaces).

person esnible    schedule 08.08.2018