bookinfo部署
Bookinfo 应用
本示例部署了一个示例应用程序,该应用程序由四个单独的微服务组成,用于演示各种Istio功能。
该应用程序显示有关书籍的信息,类似于在线书籍商店的单个目录条目。页面上显示的是书籍说明,书籍详细信息(ISBN,页数等)以及一些书籍评论。
Bookinfo应用程序分为四个单独的微服务:
productpage。该productpage微服务调用details和reviews微服务来填充页面。
details。该details微服务包含图书信息。
reviews。该reviews微服务包含了书评。它还称为ratings微服务。
ratings。该ratings微服务包含预定伴随书评排名信息。
reviews微服务有3个版本:
版本v1不会调用该ratings服务。
版本v2调用该ratings服务,并将每个等级显示为1到5个黑星。
版本v3调用该ratings服务,并将每个等级显示为1到5个红色星号。
该应用程序的端到端体系结构如下所示。
该应用程序是多语言的,即微服务以不同的语言编写。值得注意的是,这些服务不依赖于Istio,但是提供了一个有趣的服务网格示例,特别是因为reviews的语言和版本多样性。
部署
要使用Istio运行示例,无需更改应用程序本身。相反,您只需要在启用Istio的环境中配置和运行服务,并在每个服务旁边注入Envoy辅助工具。
所有微服务都将与Envoy边车打包在一起,该Envoy边车拦截对服务的输入和输出,通过Istio控制平面,路由,遥测收集和整个应用程序的策略实施,提供外部控制所需的钩子。
启用自动注入
kubectl label namespace default istio-injection=enabled
部署bookinfo服务
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
手动注入:
kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)
确认服务正常运行
确认服务和pod都已经正常运行 kubectl get services kubectl get pods
确认能够正常提供服务
要确认Bookinfo应用程序正在运行,请通过curl某个Pod中的命令向其发送请求,例如ratings:
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl productpage:9080/productpage | grep -o ".*"
Simple Bookstore App
测试示例服务在网格内部能够正常访问
测试示例服务在网格外部能够正常访问
Last updated