bookinfo架构简介
官方提供的bookinfo示例,展示一本书的信息,用来演示istio特性。
该示例由如下四个微服务组成:
- productpage: 主服务,展示书的简介,并调用details和reviews服务获取书的详细信息和书评信息。
- details: 提供书的详细信息。
- reviews: 提供书评信息,并调用ratings服务获取书评等级。
- ratings: 提供书评等级信息。
reviews书评服务有三个版本:
- v1不调用ratings服务。
- v2调用ratings服务,并将每个等级显示为1到5个黑色星标。
- v3调用ratings服务,并将每个等级显示为1到5个红色星标。
该应用程序是多语言的,即微服务以不同的语言编写,架构图如下:
部署bookinfo
要使用istio部署应用,无需对应用进行任何特殊改动,只需要在启用Istio的环境中配置和运行服务,istio会自动为每个服务旁边注入一个Envoy代理,最终部署如下:
该Envoy代理会拦截对相应服务的调用与响应,并通过Istio控制平面去配置路由、调用跟踪等策略实施控制。
1 | ## 1. 开启default命名空间的自动注入 |
现在服务在集群内部正常运行了,现在需要让集群外部可访问,Istio Gateway就是用这个目的。
1 | ## 5. 部署ingress gateway |
访问测试
1 | ## 1. 配置环境变量 |
删除bookinfo
1 | sh samples/bookinfo/platform/kube/cleanup.sh |
附录
- bookinfo.yaml
包含productPage-v1、review-v1、review-v2、review-v3、detail-v1、ratings-v1等服务的service和deployment
1 | ################################################################################################## |
- bookinfo-gateway.yaml
1 | apiVersion: networking.istio.io/v1alpha3 |