Я нашел несколько вещей, которые нужно исправить
1. Соединение с loadbalancer
Как я уже упоминал в комментариях, вам нужно исправить свой входной шлюз, чтобы автоматически получать адреса EXTERNAL-IP, как в документации istio , так как сейчас ваш вход является NodePort, пока поскольку я обеспокоен тем, что он не будет работать, вы можете настроить его для использования с nodeport, но я предполагаю, что вам нужен loadbalancer.
Первым шагом будет изменение типа istio-ingressgateway sv c с NodePort на loadbalancer и проверьте, получите ли вы EXTERNAL-IP.
Если установлено значение EXTERNAL-IP, в вашей среде есть внешний балансировщик нагрузки, который вы можете использовать для входного шлюза. Если значение EXTERNAL-IP равно (или постоянно), ваша среда не предоставляет внешний балансировщик нагрузки для входного шлюза. В этом случае вы можете получить доступ к шлюзу, используя порт узла службы.
Он должен выглядеть следующим образом
kubectl get svc istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 172.21.109.129 130.211.10.121 80:31380/TCP,443:31390/TCP,31400:31400/TCP 17h
И тогда все проходит через адрес external-ip, который 130.211.10.121
2. Исправьте ваши yamls
Обратите внимание, что для tcp traffi c мы должны сопоставить входящий порт, в данном случае порт 31400
Проверьте этот пример с документация istio
Специально эта часть со шлюзом, виртуальным сервисом и правилом назначения.
Вы должны добавить это к своей виртуальной службе.
tcp:
- match:
- port: 31400
3. Помните о пространствах имен.
В вашем примере, поскольку по умолчанию это должно работать, но если вы создаете другое пространство имен, помните, что если шлюз и виртуальный сервис находятся в другом пространстве имен, то вам нужно показать виртуальный сервис, где находится шлюз. .
Пример здесь
Специально для части виртуального обслуживания
gateways:
- some-config-namespace/my-gateway
Я надеюсь, что это поможет вам с вашими проблемами. Дайте мне знать, если у вас есть еще вопросы.