TCP Ingress с Istio 0.8 и шлюзом v1alpha3 - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь открыть 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 настроит прокси-сервер для прослушивания этих портов, пользователь несет ответственность за то, чтобы внешний трафик к этим портам был разрешен в сетку.

Есть мысли?

1 Ответ

0 голосов
/ 08 августа 2018

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

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

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

...