这里我们继续测试istio的基本功能特性:
一、准备
1.首先,仍然回到我们下载istio的github仓库的位置
$ cd git/istio/
2.还原值最初的配置
即,配置virtualService全部对应为应用的v1版本
$ kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
3.配置名为reviews的vs
当用户名为jason的用户登录时,将显示reviews的v2版本,其他用户仍然显示reviews的v1版本。
$ kubectl apply -f samples/bookinfo/networking/virtual-servivce-reviews-test-v2.yaml
此时访问bookinfo应用的流程如下:
productpage
→reviews:v2
→ratings
(针对jason
用户)productpage
→reviews:v1
(其他用户)
二、注入HTTP延迟故障
为了测试微服务应用程序 Bookinfo 的弹性,我们将为用户 jason
在 reviews:v2
和 ratings
服务之间注入一个 7 秒的延迟。 这个测试将会发现一个故意引入 Bookinfo 应用程序中的 bug。
注意 reviews:v2
服务对 ratings
服务的调用具有 10 秒的硬编码连接超时。 因此,尽管引入了 7 秒的延迟,我们仍然期望端到端的流程是没有任何错误的
1.创建故障注入规则以延迟来自测试用户 jason
的流量:
$ kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml
2.确认规则已经创建
$ kubectl get virtualservice ratings -o yaml apiVersion: networking.istio.io/v1beta1 kind: VirtualService spec: hosts: - ratings http: - fault: delay: fixedDelay: 7s percentage: value: 100 match: - headers: end-user: exact: jason route: - destination: host: ratings subset: v1 - route: - destination: host: ratings subset: v1
-
通过浏览器打开 Bookinfo 应用。
-
使用用户
jason
登陆到/productpage
页面。你期望 Bookinfo 主页在大约 7 秒钟加载完成并且没有错误。 但是,出现了一个问题:Reviews 部分显示了错误消息:
查看页面的响应时间:
- 打开浏览器的 开发工具 菜单
- 打开 网络 标签
- 重新加载
productpage
页面。你会看到页面加载实际上用了大约 6s
评论前必须登录!
注册