【Mirroring】鏡像流量
您可以通過(guò)ASM將發(fā)往某服務(wù)的流量復(fù)制到另一個(gè)服務(wù)。本文介紹如何配置鏡像流量。
前提條件
已完成準(zhǔn)備工作,并部署mocka服務(wù)和sleep服務(wù)。具體操作,請(qǐng)參見(jiàn)準(zhǔn)備工作。
操作步驟
驗(yàn)證服務(wù)配置。
在ACK集群對(duì)應(yīng)的KubeConfig環(huán)境下,執(zhí)行以下命令,進(jìn)入sleep環(huán)境開(kāi)啟bash。
kubectl exec -it deploy/sleep -- sh
執(zhí)行以下命令, 向mocka服務(wù)發(fā)送請(qǐng)求。
curl mocka:8000/mock
預(yù)期輸出為以下兩者之一,mocka-v1和mocka-v2隨機(jī)響應(yīng)。
-> mocka(version: v1, ip: 192.168.1.246) -> mocka(version: v2, ip: 192.168.1.53)
使用istioctl工具,執(zhí)行以下命令,為mocka服務(wù)開(kāi)啟L7 Waypoint。
istioctl x waypoint apply --service-account mocka
構(gòu)建測(cè)試場(chǎng)景,配置mocka應(yīng)用的流量規(guī)則,設(shè)置請(qǐng)求由mocka-v1接收并響應(yīng),同時(shí)鏡像發(fā)往mocka-v2。
使用以下內(nèi)容,創(chuàng)建目標(biāo)規(guī)則。具體操作,請(qǐng)參見(jiàn)管理目標(biāo)規(guī)則。
apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: mocka namespace: default spec: host: mocka subsets: - labels: version: v1 name: v1 - labels: version: v2 name: v2
使用以下內(nèi)容,創(chuàng)建虛擬服務(wù)。具體操作,請(qǐng)參見(jiàn)管理虛擬服務(wù)。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: mocka namespace: default spec: hosts: - mocka http: - match: - uri: exact: /mock mirror: host: mocka subset: v2 route: - destination: host: mocka subset: v1
驗(yàn)證配置是否生效。
在ACK集群對(duì)應(yīng)的KubeConfig環(huán)境下,執(zhí)行以下命令,進(jìn)入sleep環(huán)境開(kāi)啟bash。
kubectl exec -it deploy/sleep -- sh
執(zhí)行以下命令, 向mocka服務(wù)發(fā)送請(qǐng)求。
curl mocka:8000/mock
預(yù)期輸出始終為以下結(jié)果,由mocka-v1響應(yīng)。
-> mocka(version: v1, ip: 192.168.1.246)
執(zhí)行以下命令,查看mocka-v2日志。
# 查看mocka-v2 Pod名稱(chēng)。 kubectl get pods # 查看mocka-v2 Pod日志。 kubectl logs {mocka-v2 Pod名稱(chēng)}
預(yù)期輸出:
receive request: x-request-id: 6f11e7b9-dc6c-4e57-aa52-c2644f8d**** receive request: x-request-id: e9cedc48-d5c1-4233-a97b-5cb88f0d**** receive request: x-request-id: bf4e4bb2-7339-42a0-a70f-eab7905d**** receive request: x-request-id: 4779fb9a-f9c5-47c2-b9f7-8dc097cd**** receive request: x-request-id: f32f012a-669d-48a4-a992-473068dd**** receive request: x-request-id: 3ef4a1e7-4301-45db-ad1c-6b35bd1d**** ...
預(yù)期輸出表明mocka-v2也接收到流量。持續(xù)向mocka-v1發(fā)送請(qǐng)求,可以看到mocka-v2中不斷出現(xiàn)新接收到請(qǐng)求的日志。