前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >istio-in-action - 12 VirtualService 混沌测试/错误注入

istio-in-action - 12 VirtualService 混沌测试/错误注入

作者头像
老麦
发布2022-12-24 10:22:29
2580
发布2022-12-24 10:22:29
举报
文章被收录于专栏:Go与云原生Go与云原生

在 Istio 中还实现了一个很重要的功能: 错误注入。可以设置 一定几率 出现 延迟(delay) 和 中止(abort) 错误。

Http Fault Injection Delay 延迟

一定概率出现 缓慢 相应。

  1. fixedDelay: 延迟时间。格式 1h / 1m / 1s。最小 1ms。
  2. percentage: 错误触发几率。0-100 之间。可以为 double 类型的小数。
代码语言:javascript
复制
---
# fault injection
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: review-fault-injection
spec:
  hosts:
    - svc-review
  http:
    - match:
      route:
        - destination:
            host: svc-review
      fault:
        delay:
          percentage:
            value: 50
          fixedDelay: 5s

Http Fault Injection Abort 中止

一定概率出现 中止 相应, 并返回错误响应 http code

  1. httpStatus: 错误响应 http code。
  2. percentage: 错误触发几率。0-100 之间。可以为 double 类型的小数。
代码语言:javascript
复制
---
# fault injection
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: review-fault-injection
spec:
  hosts:
    - svc-review
  http:
    - match:
      route:
        - destination:
            host: svc-review
      fault:
        abort:
          percentage:
            value: 50
          httpStatus: 400

案例

在本案例中

  1. srv-review 对 user 不可见
  2. 请求过程
    • (1) user 请求 srv-prod 时。
    • (2) srv-prod 根据请求参数 srv-review 获取对应的 review 信息
    • (3) srv-review 返回应答给 srv-prod
    • (4) srv-prod 组合应答信息,统一返回 user

除了上述提到的 srv-review 的错误注入。

还在 prod 的 VirtualService 上使用了 timeout 参数, 当总请求超过 3秒 的时候, 将会出现 request timeout 错误;如果不加此参数,会在 延迟5秒 后得到正确相应结果。

代码语言:javascript
复制
# normal prod
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-prod
spec:
  gateways:
    - istio-tangx-in
  hosts:
    - svc-prod
    - istio.tangx.in
  
  http:
    - match:
      route:
        - destination:
            host: svc-prod
      timeout: 3s

测试请求与结果如下。

代码语言:javascript
复制
# 正常请求
time curl http://istio.tangx.in/prod/list

    {"data":{"Name":"istio in action","Price":300,"Reviews":{"1":{"id":"1","name":"zhangsan","commment":"istio 功能很强大, 就是配置太麻烦"},"2":{"id":"1","name":"wangwu","commment":"《istio in action》 真是一本了不起的书"}}},"version":"v1.1.0"}

    real    0m0.011s
    user    0m0.004s
    sys     0m0.005s

# 延迟5秒。3秒请求超时
time curl http://istio.tangx.in/prod/list

    upstream request timeout

    real    0m3.014s
    user    0m0.004s
    sys     0m0.005s

# 相应中止
time curl http://istio.tangx.in/prod/list

    {"error":"Error: svc-review request abort. resp code is 400, failed","message":"获取评论失败, 内部错误"}

    real	0m0.011s
    user	0m0.005s
    sys	0m0.004s
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Http Fault Injection Delay 延迟
  • Http Fault Injection Abort 中止
  • 案例
相关产品与服务
服务网格
服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档