發送請求時,可以攜帶用于匹配的查詢參數。本文介紹如何配置請求參數匹配。
前提條件
已完成準備工作,并部署helloworld服務和sleep服務。具體操作,請參見準備工作。
操作步驟
驗證服務配置。
在ACK集群對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。
kubectl exec -it deploy/sleep -- sh
執行以下命令, 向helloworld服務發送請求。
curl helloworld:5000/hello
預期輸出為以下兩者之一,helloworld-v1和helloworld-v2隨機響應。
Hello version: v2, instance: helloworld-v2-7d48f6b995-6**** Hello version: v1, instance: helloworld-v1-6986f64596-s****
使用istioctl工具,執行以下命令,為helloworld服務開啟L7 Waypoint。
istioctl x waypoint apply --service-account helloworld-v1 istioctl x waypoint apply --service-account helloworld-v2
使用以下內容,創建目標規則。具體操作,請參見管理目標規則。
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
使用以下內容,創建虛擬服務,添加Header Matching配置。具體操作,請參見管理虛擬服務。
以下配置表示帶有
test-params
為v1
的請求流量發往helloworld-v1,帶有test-params
為v2
的請求流量發往helloworld-v2。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
驗證Query Parameter Matching配置是否生效。
在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-6986f64596-s****
執行以下命令,向helloworld服務發送帶有
test-params=v2
參數的請求。curl helloworld:5000/hello?test-params=v2
預期輸出:
Hello version: v2, instance: helloworld-v2-7d48f6b995-6****
以上結果表明Query Parameter Matching配置生效。
文檔內容是否對您有幫助?