Bookinfo应用介绍
Bookinfo是一个样例应用,用来演示多种 Istio 特性,它由四个单独的微服务构成:
-
productpage
:productpage
微服务会调用details
和reviews
两个微服务,用来生成页面。 -
details
:这个微服务包含了书籍的信息。 -
reviews
:这个微服务包含了书籍相关的评论。它还会调用ratings
微服务。 -
ratings
:ratings
微服务中包含了由书籍评价组成的评级信息。
reviews
微服务有 3 个版本:
- v1 版本不会调用
ratings
服务。 - v2 版本会调用
ratings
服务,并使用 1 到 5 个黑色星形图标来显示评分信息。 - v3 版本会调用
ratings
服务,并使用 1 到 5 个红色星形图标来显示评分信息。
下图展示了这个应用的端到端架构
部署应用
部署istio
登录容器服务控制台,左侧导航中选择服务网格-Istio管理,选择需要安装Istio的集群,使用默认配置点击部署Istio
成功部署Istio后,可以看到下方Sidecar 自动注入设置。选择一个命名空间,开启Sidecar自动注入
完成后可以看到istio-test命名空间下新增标签istio-injection:enabled
部署相关服务
bookinfo使用的服务yaml文件地址 https://raw.githubusercontent.com/istio/istio/release-1.2/samples/bookinfo/platform/kube/bookinfo.yaml
这里我们使用控制台分别部署productpage,detail,rating及reviews服务的两个版本(v1,v2)
productpage服务
选择集群,命名空间
输入镜像名称,版本,设置端口
服务(service)相关配置
创建完成
参考上述步骤分别创建details,ratings,reviews(v1)三个服务。
创建完成后,等待所有的service和 pod 都已经正常启动。
创建服务网关
服务网关可以将Istio的功能(如:监控和路由规则)应用到进入集群的流量。在服务网格目录下选择服务网关,点击新建。
然后,可以将虚拟服务绑定到网关,以控制进入集群的流量。点击虚拟服务可以看到虚拟服务列表,
点击productpage的服务网关绑定,可以看到如下弹窗,选择创建好的服务网关bookinfo-gateway,确定后完成绑定。
进入服务网关列表,点击bookinfo-gateway中istio-ingressgateway服务地址,输入路由/productpage可以看到如下页面
部署reviews-v2 版本
点击虚拟服务reviews,进入详情页,在版本管理栏点击增加灰度版本
输入版本号进入下一步,输入镜像名称,版本,设置端口。
下一步,设置灰度策略。这里选择基于流量比例的发布策略,v1,v2版本流量各50%。设置完成后点击创建。
待pod启动完成后,刷新url,会看到v2版本的UI(由于v1、v2流量比例各50%,可能要多刷新几次)
最后,我们可以使用压测工具(如siege)模拟多次访问,再通过kiali观察流量拓扑。我们在安装istio的时候已经默认安装了kiali,只需要在路由中新建一个ingress就可以方便的进行访问。
左侧导航中选择路由与负载均衡->路由,选择安装好istio的集群,命名空间选择istio-system,点击创建并按如下填写相关内容
创建完成后会在Ingress列表看到kiali的访问地址
进入kiali界面(用户名密码默认为admin),可以看到流量拓扑如图。
小结
本文介绍了使用阿里云容器服务部署运行bookinfo示例的过程。接下来我们还可以用它来体验Istio相关特性,包括智能路由,错误注入,流量控制等。