我有一个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仍然可以提供服务,但第二个始终提供404。我添加了一个简单的端点"/v1/routing/test"
以返回Hello World消息,以确保问题不会从应用程序逻辑中产生。
尽管只有对report
的请求返回的不是404:
report [satc-gateway] [report-create.default.svc.cluster.local] 2h
routing [satc-gateway] [routing-svc.default.svc.cluster.local] 18m
我尝试一起删除所有第一个部署,以确保它现在将进入集群的所有流量都悬空了,并且仍然获得404。我还尝试了从容器内部执行路由并获得成功的响应,这两个服务都使用了容器端口8080,我也对其进行了三重检查。
我似乎为此碰到了墙,不确定下一步要正确调试的最佳步骤是什么。
答案 0 :(得分:0)
我已经分析了您的两个Yaml,并且发现与第二个Yaml无关的问题:
prefix:
行中有2个多余的空格o
)destination:
部分有一些差异请进行调整,并告诉我是否有帮助。