Я использую istio 1.0.2 версия с istio-demo-auth .yaml, у меня есть один mssql и activemq развернут в тех же пространствах имен с другими приложениями, оба были внедрены istioctl. Приложения могут подключаться к этим двум службам внутри кластера, но я делаю тип этих двух служб как NodePort , это успешно, но я не могу получить доступ к этим узлам (52433, 51618 или 58161).
kubectl get svc -n $namespace
ИМЯ ТИП КЛАСТЕР-IP ВНЕШНИЙ IP-ПОРТ (S) ВОЗРАСТ
amq-master-01 NodePort 10.254.176.151 61618: 51618 / TCP, 8161: 58161 / TCP 4h
mssql-master NodePort 10.254.209.36 2433: 52433 / TCP 33 м
kubectl get deployment -n $namespace
ИМЯ ЖЕЛАЕТ ТЕКУЩИЙ СОВРЕМЕННЫЙ ДОСТУПНЫЙ ВОЗРАСТ
activemq 1 1 1 1 4h
mssql-master 1 1 1 1 44 м
Затем я пытаюсь использовать шлюз и виртуальный сервис для использования tcp-порта ingressgateway 31400. Он работает, как показано ниже:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: tcp-gateway
namespace: multitenancy
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 31400
name: tcp
protocol: TCP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mssql-tcp
namespace: multitenancy
spec:
gateways:
- tcp-gateway
hosts:
- "*"
tcp:
- match:
- port: 31400
route:
- destination:
host: mssql-master
port:
number: 2433
Мой вопрос,
1. Как настроить другое соединение http для 61618 или другие соединения tcp? В настоящее время я могу использовать только 31400 для одной услуги (mssql-2433).
2. Почему этот узел не работает после того, как я ввожу эти приложения в istio, как это может работать?
Спасибо.