全部產品
Search
文件中心

Alibaba Cloud Service Mesh:【Mirroring】鏡像流量

更新時間:Jun 30, 2024

您可以通過ASM將發往某服務的流量複製到另一個服務。本文介紹如何配置鏡像流量。

前提條件

已完成準備工作,並部署helloworld服務和sleep服務。具體操作,請參見準備工作

操作步驟

  1. 驗證服務配置。

    1. 在ACK叢集對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。

      kubectl exec -it deploy/sleep -- sh
    2. 執行以下命令,向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隨機響應。

  2. 構建測試情境,配置helloworld應用的流量規則,佈建要求由helloworld-v1接收並響應,同時鏡像發往helloworld-v2。

    1. 使用以下內容,配置目標規則。具體操作,請參見管理目標規則

      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
      
    2. 使用以下內容,配置虛擬服務。具體操作,請參見管理虛擬服務

      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
  3. 驗證配置是否生效。

    1. 在ACK叢集對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。

      kubectl exec -it deploy/sleep -- sh
    2. 執行以下命令, 向helloworld服務發送請求。

      curl helloworld:5000/hello

      預期輸出始終為以下結果,由helloworld-v1響應。

      Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****
    3. 查看應用的網格拓撲。具體操作,請參見查看應用的網格拓撲

      預期輸出如下,請求被1:1複製到helloworld-v2。

      查看應用網格拓撲.png