给服务注入错误,模拟后端服务出现故障,服务调用失败。
使用示例如下:
1 apiVersion: networking.istio.io/v1alpha3 2 kind: DestinationRule 3 metadata: 4 name: service-go 5 spec: 6 host: service-go 7 subsets: 8 - name: v1 9 labels: 10 version: v1 11 - name: v2 12 labels: 13 version: v2 14 --- 15 apiVersion: networking.istio.io/v1alpha3 16 kind: VirtualService 17 metadata: 18 name: service-go 19 spec: 20 hosts: 21 - service-go 22 http: 23 - route: 24 - destination: 25 host: service-go 26 subset: v1 27 fault: 28 abort: 29 percent: 50 30 httpStatus: 500
第27~30行定义了服务故障注入规则,abort表示给服务注入故障,percent表示出错的百分比,默认值为0,httpStatus指定返回的错误响应码。代码中定义的故障注入规则表示,在所有调用service-go服务v1版本的请求中,抽取50%的请求注入出错响应码为500。
【实验】
1)创建基础路由规则,创建Gateway应用访问入口,service-js服务路由规则:
$ kubectl apply -f istio/route/gateway-js-v1.yaml
2)创建service-go服务的错误故障注入规则:
$ kubectl apply -f istio/fault/virtual-service-go-abort.yaml
3)浏览器访问。
浏览器访问地址为http://11.11.11.111:31380/ ,多次点击“发射”按钮,查看服务调用情况,可以看到,有部分请求出现调用service-go服务无法成功的现象,如图9-2所示。
图9-2 给服务注入错误的结果
4)清理:
$ kubectl delete -f istio/route/gateway-js-v1.yaml $ kubectl delete -f istio/fault/virtual-service-go-abort.yaml