У меня был один VirtualService, работающий через простой HTTP-шлюз, и все работает нормально:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: satc-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: report
spec:
hosts:
- report-create.default.svc.cluster.local
gateways:
- satc-gateway
http:
- match:
- uri:
prefix: /v1/report
route:
- destination:
host: report-create
port:
number: 8080
С тех пор я добавил второй VirtualService для второй службы в кластере через тот же шлюз.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: routing
spec:
hosts:
- routing-svc.default.svc.cluster.local
gateways:
- satc-gateway
http:
- match:
- uri:
prefix: /v1/routing
route:
- destination:
host: routing-svc.default.svc.cluster.local
port:
protcol: http
number: 8080
В то время как первый VirtualService, кажется, все еще обслуживает, второй последовательно 404s. Я добавил простую конечную точку "/v1/routing/test"
, чтобы вернуть сообщение Hello World, чтобы убедиться, что проблема не возникает из логики приложения.
Обе службы VirtualServices работают, как и ожидалось, хотя только запросы к report
возвращают что-либо, кроме 404:
report [satc-gateway] [report-create.default.svc.cluster.local] 2h
routing [satc-gateway] [routing-svc.default.svc.cluster.local] 18m
Я попытался полностью удалить первое развертывание, чтобы убедиться, что теперь он поглощает весь входящий в кластер трафик и по-прежнему получает сообщения 404. Я также пробовал выполнять маршруты изнутри модуля с успешным ответом, обе службы используют порт контейнера 8080, который я также трижды проверил.
Я, кажется, натолкнулся на стену с этим, не зная, каковы следующие лучшие шаги для правильной отладки.