您可以通过ASM将发往某服务的流量复制到另一个服务。本文介绍如何配置镜像流量。
前提条件
已完成准备工作,并部署mocka服务和sleep服务。具体操作,请参见准备工作。
操作步骤
验证服务配置。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令, 向mocka服务发送请求。
curl mocka:8000/mock
预期输出为以下两者之一,mocka-v1和mocka-v2随机响应。
-> mocka(version: v1, ip: 192.168.1.246) -> mocka(version: v2, ip: 192.168.1.53)
使用istioctl工具,执行以下命令,为mocka服务开启L7 Waypoint。
istioctl x waypoint apply --service-account mocka
构建测试场景,配置mocka应用的流量规则,设置请求由mocka-v1接收并响应,同时镜像发往mocka-v2。
使用以下内容,创建目标规则。具体操作,请参见管理目标规则。
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
使用以下内容,创建虚拟服务。具体操作,请参见管理虚拟服务。
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
验证配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令, 向mocka服务发送请求。
curl mocka:8000/mock
预期输出始终为以下结果,由mocka-v1响应。
-> mocka(version: v1, ip: 192.168.1.246)
执行以下命令,查看mocka-v2日志。
# 查看mocka-v2 Pod名称。 kubectl get pods # 查看mocka-v2 Pod日志。 kubectl logs {mocka-v2 Pod名称}
预期输出:
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**** ...
预期输出表明mocka-v2也接收到流量。持续向mocka-v1发送请求,可以看到mocka-v2中不断出现新接收到请求的日志。
文档内容是否对您有帮助?