我正在使用 istio 和 Kubernetes 进行开发。我搜索了很多文章和帖子,但没有找到预期的答案。下面是我的虚拟服务脚本。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
annotations:
helm.fluxcd.io/antecedent: default:helmrelease/hello-11
creationTimestamp: "2020-10-15T11:52:02Z"
generation: 2
name: hello-11
namespace: default
resourceVersion: "4178089"
selfLink: /apis/networking.istio.io/v1beta1/namespaces/default/virtualservices/hello-11
uid: kfk9580d-0fedc-11eb-b8a2-pp155d6a1e13
spec:
gateways:
- istio-system/istio-ingressgateway
- istio-system/istio-ingressgateway
hosts:
- ext-auth-host
- no-ext-auth-host
http:
- gateways:
- istio-system/istio-ingressgateway
match:
- headers:
x-jwt-extracted-xx-id:
exact: "9980098"
name: hello-11-ext-auth
route:
- destination:
host: hello-11.default.svc.cluster.local
- gateways:
- istio-system/istio-ingressgateway
headers:
request:
add:
x-jwt-extracted-xx-id: "9980098"
match:
- uri:
prefix: /9980098/api/show
name: hello-11-no-ext-auth
rewrite:
uri: /api/show
route:
- destination:
host: hello-11.default.svc.cluster.local
我想添加多个匹配以及多个重写。但是,它没有按预期工作。我预期的虚拟服务应该如下所示。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
annotations:
helm.fluxcd.io/antecedent: default:helmrelease/hello-11
creationTimestamp: "2020-10-15T11:52:02Z"
generation: 2
name: hello-11
namespace: default
resourceVersion: "4178089"
selfLink: /apis/networking.istio.io/v1beta1/namespaces/default/virtualservices/hello-11
uid: kfk9580d-0fedc-11eb-b8a2-pp155d6a1e13
spec:
gateways:
- istio-system/istio-ingressgateway
- istio-system/istio-ingressgateway
hosts:
- ext-auth-host
- no-ext-auth-host
http:
- gateways:
- istio-system/istio-ingressgateway
match:
- headers:
x-jwt-extracted-xx-id:
exact: "9980098"
name: hello-11-ext-auth
route:
- destination:
host: hello-11.default.svc.cluster.local
- gateways:
- istio-system/istio-ingressgateway
headers:
request:
add:
x-jwt-extracted-xx-id: "9980098"
match:
- uri:
prefix: /9980098/api/show
name: hello-11-no-ext-auth
rewrite:
uri: /api/show
route:
- destination:
host: hello-11.default.svc.cluster.local
match:
- uri:
prefix: /9980098/api/send
name: hello-11-no-ext-auth
rewrite:
uri: /api/send
route:
- destination:
host: hello-11.default.svc.cluster.local
多个 url 重写是:
uri: /api/send
uri: /api/show
任何建议或参考都会有所帮助和感激。
谢谢