Istio virtualservice uri匹配不起作用



我是kubernetes和istio的新手。在GKE上,我创建了入口网关和两个虚拟服务。第一个是通往hipstershop的前端网关,第二个是通往我的helloworld服务器的dummyservice。但当我用打电话时

curl -v http://35.223.232.224/dummy

,显示Cannot GET/dummy错误。我确信我的dummyservice正在工作,因为我已经用Loadbalancer外部IP进行了测试。但我可以用http://ingress_ip.有人能帮帮我吗?

这是我的istio配置文件

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: frontend-gateway
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: dummy-ingress
spec:
hosts:
- "*"
gateways:
- frontend-gateway                
http:
- match:
- uri:
exact: /dummy
route:
- destination:
host: dummyservice            
port:
number: 80
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: dummy-ingress2
spec:
hosts:
- "*"
gateways:
- frontend-gateway                
http:
- match:
- uri:
exact: /dummy2
route:
- destination:
host: dummyservice            
port:
number: 80
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: frontend-ingress
spec:
hosts:
- "*"
gateways:
- frontend-gateway
http:
- route:
- destination:
host: frontend
port:
number: 80

我的dummyservice node.js服务器仅在"/"url上提供服务。因此,返回的错误404不是来自ingress,而是来自我的node.js服务器。更改节点服务器中的基本路由解决了问题。

'use strict';
const express = require('express');
// Constants
const PORT = 80;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/dummy', (req, res) => {
res.send('Hello worldn');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

FYI:Kaili和Jaeger可以与Istio一起安装,并可以为您提供有关服务网格中流量的信息

最新更新