发送请求时,可以携带用于匹配的查询参数。本文介绍如何配置请求参数匹配。
前提条件
已完成准备工作,并部署helloworld服务和sleep服务。具体操作,请参见准备工作。
操作步骤
验证服务配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令,向helloworld服务发送请求。
curl helloworld:5000/hello
预期输出为以下两者之一,helloworld-v1和helloworld-v2随机响应。
Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p**** Hello version: v2, instance: helloworld-v2-6b96c5684-4****
使用以下内容,配置目标规则。具体操作,请参见管理目标规则。
apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: helloworld namespace: default spec: host: helloworld subsets: - labels: version: v1 name: v1 - labels: version: v2 name: v2
使用以下内容,创建虚拟服务,添加Query Parameter Matching配置。具体操作,请参见管理虚拟服务。
以下配置表示带有
test-params
为v1
的请求流量发往helloworld-v1,带有test-params
为v2
的请求流量发往helloworld-v2。验证配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令,向helloworld服务发送带有
test-params=v1
参数的请求。curl helloworld:5000/hello?test-params=v1
预期输出:
Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****
执行以下命令,向helloworld服务发送带有
test-params=v2
参数的请求。curl helloworld:5000/hello?test-params=v2
预期输出:
Hello version: v2, instance: helloworld-v2-6b96c5684-4****
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: helloworld-vs
namespace: default
spec:
hosts:
- helloworld
http:
- match:
- queryParams:
test-params:
exact: v1
route:
- destination:
host: helloworld
subset: v1
- match:
- queryParams:
test-params:
exact: v2
route:
- destination:
host: helloworld
subset: v2
文档内容是否对您有帮助?