文档

【Fault Injection】故障注入

故意破坏服务,以暴露弱点的测试方法可以提高容错能力,发现客户端的错误,或者识别您所面临的故障情况。服务网格ASM支持故障注入,您可以使用虚拟服务在应用层进行测试。本文介绍如何配置故障注入。

前提条件

已完成准备工作,并部署httpbin服务和sleep服务。具体操作,请参见准备工作

操作步骤

  1. 验证服务配置是否生效。

    1. 在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。

      kubectl exec -it deploy/sleep -- sh
    2. 执行以下命令,向httpbin服务发送请求。

      curl -I httpbin:8000

      预期输出:

      HTTP/1.1 200 OK
      server: envoy
      date: Fri, 11 Aug 2023 09:50:24 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
  2. 使用以下内容,配置httpbin应用的流量规则,注入故障。具体操作,请参见管理虚拟服务

  3. 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
  4. 验证配置是否生效。

    1. 在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。

      kubectl exec -it deploy/sleep -- sh
    2. 执行以下命令,向httpbin服务发送请求。

      curl -w "Total time: %{time_total} seconds\n" -I httpbin:80

      预期输出:

      HTTP/1.1 200 OK
      server: istio-envoy
      date: Sun, 27 Aug 2023 12:41:05 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秒返回。

  • 本页导读 (1)
文档反馈