故意破壞服務,以暴露弱點的測試方法可以提高容錯能力,發現用戶端的錯誤,或者識別現有的故障情況。您可以使用虛擬服務在應用程式層進行故障注入測試。本文介紹如何配置故障注入。
前提條件
已完成準備工作,並部署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
使用以下內容,建立虛擬服務,配置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:8000預期輸出:
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秒返回,故障注入成功。