《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证

在VirtualService中可以对HTTP请求注入模拟的故障,从而实现混沌测试。这是通过在VirtualService中设置HTTPFaultInjection的delay和abort属性实现的。

  • delay用来延时访问。
  • abort用来终止访问。

下面以recommendation微服务为例实现delay和abort混沌测试。需要按照《OpenShift 4 之Istio-Tutorial (6) 服务恢复能力》的“环境准备”部署recommendation v1和recommendation 2,并且删除所有针对recommendation的VirtualService和DestinationRule。

  1. 首先查看istiofiles/destination-rule-recommendation.yml文件,其中定义了名为recommendation的DestinationRule,它会将发到名为recommendation的Service的请求平均分配给后台所有lable包含“app=recommendation”的Pod。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: recommendation
spec:host: recommendationsubsets:- labels:app: recommendationname: app-recommendation
  1. 执行命令,为名为recommendation的Service创建DestinationRule。
$ oc apply -f istiofiles/destination-rule-recommendation.yml

注入延时故障

  1. 查看istiofiles/virtual-service-recommendation-delay.yml,其中在VirtualService中定义了将50%的请求注入7s的延时。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: recommendation
spec:hosts:- recommendationhttp:- fault:delay:fixedDelay: 7.000spercent: 50route:- destination:host: recommendationsubset: app-recommendation
  1. 执行命令创建VirtualService。
$ oc apply -f istiofiles/virtual-service-recommendation-delay.yml
  1. 执行命令,验证测试请求的响应时间。可以发现有的请求返回比较快,有的返回比较慢。
$ export INGRESS_GATEWAY=$(oc get route istio-ingressgateway -n istio-system -o 'jsonpath={.spec.host}')
$ ./scripts/run.sh $INGRESS_GATEWAY/customer
  1. 进入Kiali控制台的Distributed Trace,在Service选择recommendation,在Lookback选择1m,然后点击右侧的Search Traces按钮。然后在下方可以看到跟踪到的请求和消耗的时间。其中快的请求是ms级别,慢的请求超过7s。

注入终止故障

  1. 查看istiofiles/virtual-service-recommendation-503.yml文件,它定义了终止abort故障,请求返回HTTP 503。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:name: recommendation
spec:hosts:- recommendationhttp:- fault:abort:httpStatus: 503percentage:value: 100route:- destination:host: recommendationsubset: version-v1- route:- destination:host: recommendationsubset: version-v1weight: 100
  1. 执行命令创建VirtualService。
$ oc apply -f istiofiles/virtual-service-recommendation-503.yml
  1. 执行命令连续访问customer微服务。可以看到有一部分会返回结果是503的错误。
$ export INGRESS_GATEWAY=$(oc get route istio-ingressgateway -n istio-system -o 'jsonpath={.spec.host}')
$ ./scripts/run.sh $INGRESS_GATEWAY/customer
customer => preference => recommendation v1 from '67976848-4l4s7': 13
customer => Error: 503 - preference => Error: 503 - fault filter abort
customer => Error: 503 - preference => Error: 503 - fault filter abort
customer => preference => recommendation v1 from '67976848-4l4s7': 14
customer => preference => recommendation v1 from '67976848-4l4s7': 15
customer => Error: 503 - preference => Error: 503 - fault filter abort

OpenShift 4 之Istio-Tutorial (7) 利用VirtualService的故障注入实现混沌测试Chaos Testing相关推荐

  1. 利用Windows内置工具winsat测试硬盘速度(SSD机械盘对比)

    利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比) 以下是红色内容是在命令行运行: C:\Users\Administrator>winsat disk Windo ...

  2. 利用 IBERT 进行 GTX 信号眼图测试

    利用 IBERT 进行 GTX 信号眼图测试 8.5.4.1 概述 Vivado中提供了1种IBERT工具用于对Xilinx FPGA芯片的高速串行收发器进行板级硬件测试.通过IBERT我们可以获取误 ...

  3. 2019年赣州市赛任务四利用python脚本进行web渗透测试

    任务四:利用python脚本进行web渗透测试 任务环境说明: 服务器场景名称: W-WebServ2008 服务器场景操作系统:Microsoft Windows2008 Server 服务器场景用 ...

  4. OpenShift 4.10 不可变新特性 - 利用 MachineConfig 发现节点配置漂移

    <OpenShift / RHEL / DevSecOps 汇总目录> 本文介绍功能属于 OpenShift 4.10 新特性. 演示视频 文章目录 不可变(Immutable)特性提升 ...

  5. 怎样利用超图客户端打点_渗透测试——XSS利用工具BeEF攻击演示

    跨站脚本漏洞(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私.钓鱼欺骗.窃取密码.传播恶意代码等攻击.XSS攻击使用到的技术主要为HTML和Javasc ...

  6. 微软人工智能平台开源:利用《我的世界》测试AI软件

    新浪科技讯 北京时间7月9日早间消息,微软本周宣布,将人工智能平台Project Malmo提供给开源社区. 此前只有一小部分计算机科学家可以使用Project Malmo,而未来这一平台将开放给所有 ...

  7. 利用PowerShell进行数据库部署冒烟测试

    PowerShell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能,也可以调用Azure.在Win10里面附带PowerShell V5,Po ...

  8. 利用appscan进行自动化定期安全测试

    Appscan的强大众所周知,如果可以自动执行定期安全测试,岂不是美事一件? 事实上,appscan提供了计划扫描的选项,配合windows的计划任务,可以按需设定. 1.打开appscan中的&qu ...

  9. 利用Appium对Android App进行测试

    文章目录 前言 一.软件 二.环境配置 1.安装node.js (Appium 1.11以上版本不需要安装此环境) 2.Android虚拟手机和Java环境 3.安装Appium 4.测试项目的创建 ...

最新文章

  1. amd同步多线程_锐龙本主力AMD锐龙5 3500U测试:八代酷睿招架不住…
  2. groupadd - 建 立 新 群 组
  3. springMVC 处理json 及 HttpMessageConverter 接口
  4. Struts 2初体验
  5. 【课题总结】OpenCV 抠图项目实战(4)固定阈值抠图
  6. Javascript实现导出word - jquery jquery.wordexport.js 实现导出word
  7. JS类库——Image
  8. java merge_java – OptimisticLockException当使用JPA merge()
  9. 通过FISH和下一代测序检测肺腺癌ALK基因融合比较
  10. 什么是ICMP协议,它的作用是什么?
  11. 如何理解STM32单片机引脚的复用功能?
  12. 无线网服务器在哪里设置方法,无线网络如何设置静态ip地址
  13. numerov算法matlab,常微分方程边值问题
  14. 极速FLV合并器——合并FLV文件的好软件
  15. ios输入框被软键盘遮住问题
  16. 2021强网杯 ezmath writeup
  17. java domino 单点登录_Domino单点登录LTPAtoken生成原理
  18. Dicom学习之一:大尾和小尾LittleEndian/BigEndian
  19. 一字一句教你聊天,快速把女生聊“嗨”起来
  20. 效率爆表:IntelliJ IDEA 高效配置教程来了,收藏起来!

热门文章

  1. bootstrap java web_Java web MVC(jsp,servlet,dao)+Bootstrap购物网站开发经验总结 (持续更新)...
  2. tomcat 查看当前请求数_原生线程池这么强大,Tomcat 为何还需扩展线程池?
  3. python pandas写入_51-python3 pandas读写excel
  4. python用户登录a_用Python实现用户登录接口
  5. 参考优秀案例,让你设计的网页更惊艳?
  6. 电商年底年终促销页面,这种创意你收好
  7. 唯美“光效”PNG免扣素材大集合,一眼爱上!
  8. 高品质平板电脑模型为您的作品演示加分
  9. php读入输入_php-读取用户输入并检查数据类型
  10. linux sftp ssh端口分开,sftp ssh服务分离