您可以通過ASM將發往某服務的流量複製到另一個服務。本文介紹如何配置鏡像流量。
前提條件
已完成準備工作,並部署helloworld服務和sleep服務。具體操作,請參見準備工作。
操作步驟
驗證服務配置。
在ACK叢集對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。
kubectl exec -it deploy/sleep -- sh
執行以下命令,向httpbin服務發送請求。
curl helloworld:5000/hello
預期輸出:
Hello version: v2, instance: helloworld-v2-6b96c5684-4**** Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****
預期輸出為以上兩者之一,helloworld-v1和helloworld-v2隨機響應。
構建測試情境,配置helloworld應用的流量規則,佈建要求由helloworld-v1接收並響應,同時鏡像發往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
使用以下內容,配置虛擬服務。具體操作,請參見管理虛擬服務。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: helloworld-vs namespace: default spec: hosts: - helloworld http: - mirror: host: helloworld subset: v2 route: - destination: host: helloworld subset: v1
驗證配置是否生效。
在ACK叢集對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。
kubectl exec -it deploy/sleep -- sh
執行以下命令, 向helloworld服務發送請求。
curl helloworld:5000/hello
預期輸出始終為以下結果,由helloworld-v1響應。
Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****
查看應用的網格拓撲。具體操作,請參見查看應用的網格拓撲。
預期輸出如下,請求被1:1複製到helloworld-v2。