用路径参数重写URI的正确语法是什么?我想重写所有与匹配的请求
/my-service/requests/{requestId}/history
(与requestId
路径参数的值无关(到
/requests/{requestId}/history
。
请注意,/my-service/requests/send
已存在另一条规则。
感谢
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-service
namespace: world
spec:
hosts:
- "*"
gateways:
- internal-gateway.istio-system
http:
- match:
- uri:
prefix: "/my-service/requests/send"
ignoreUriCase: true
rewrite:
uri: "/requests/send"
route:
- destination:
host: my-service.world.svc.cluster.local
port:
number: 8080
- match:
- uri:
regex: "/my-service/requests/.*/history". //<=for all path parameters
ignoreUriCase: true
rewrite:
uri: "/my-service/requests/{requestId}/history" //<=??????
route:
- destination:
host: my-service.world.svc.cluster.local
port:
number: 8080
按顺序评估与URI的匹配,因此可以这样配置:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-service
namespace: world
spec:
hosts:
- "*"
gateways:
- internal-gateway.istio-system
http:
- match:
- uri:
prefix: "/my-service/requests/send"
ignoreUriCase: true
rewrite:
uri: "/requests/send"
route:
- destination:
host: my-service.world.svc.cluster.local
port:
number: 8080
- match:
- uri:
prefix: "/my-service/requests"
ignoreUriCase: true
rewrite:
uri: "/requests"
route:
- destination:
host: my-service.world.svc.cluster.local
port:
number: 8080