故意破坏服务,以暴露弱点的测试方法可以提高容错能力,发现客户端的错误,或者识别现有的故障情况。您可以使用虚拟服务在应用层进行故障注入测试。本文介绍如何配置故障注入。
前提条件
已完成准备工作,并部署httpbin服务和sleep服务。具体操作,请参见准备工作。
操作步骤
验证服务配置。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令,向httpbin服务发送请求。
curl -I httpbin:8000
预期输出:
HTTP/1.1 200 OK Server: gunicorn/19.9.0 Date: Mon, 28 Aug 2023 06:15:30 GMT Connection: keep-alive Content-Type: text/html; charset=utf-8 Content-Length: 9593 Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true
使用istioctl工具,执行以下命令,为httpbin服务开启L7 Waypoint。
istioctl x waypoint apply --service-account httpbin
使用以下内容,创建虚拟服务,配置httpbin应用的流量规则,注入故障。具体操作,请参见管理虚拟服务。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin-vs namespace: default spec: hosts: - httpbin http: - fault: delay: fixedDelay: 5s percentage: value: 100 route: - destination: host: httpbin
验证配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令,向httpbin服务发送请求。
curl -w "Total time: %{time_total} seconds\n" -I httpbin:80
预期输出:
HTTP/1.1 200 OK server: istio-envoy Date: Mon, 28 Aug 2023 06:20:30 GMT content-type: text/html; charset=utf-8 content-length: 9593 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 3 Total time: 5.008333 seconds
预期输出表明响应延迟了5秒返回,故障注入成功。
文档内容是否对您有帮助?