第三章 九析带你轻松完爆服务网格 - istio Bookinfo 应用

网友投稿 343 2022-10-29

第三章 九析带你轻松完爆服务网格 - istio Bookinfo 应用

系列文章:总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 bookinfo 架构介绍

3 bookinfo 配置与部署

3.1 配置 istio 自动注入

3.2 部署 bookinfo 应用

3.3 验证 bookinfo 部署情况

4 设置 bookinfo 网关

4.1 定义 bookinfo 入口网关

4.2 确认网关已创建

5 访问 bookinfo 应用

5.1 获取 INGRESS_HOST

5.2 获取 INGRESS_PORT

5.3 通过浏览器访问 bookinfo 应用

6 卸载 bookinfo 应用

6.1 验证卸载

7 总结

1 前言

2 bookinfo 架构介绍

bookinfo 是 istio 的学习样例,通过 bookinfo 你可以对 istio 提供的路由、遥测等功能有更加深入的理解。

bookinfo 是一个在线书店应用,该应用由 4 个微服务组成,分别为 Product page、Reviews、Details 和 Ratings。为了表现 istio 的无侵入性,这 4 个微服务分别由 python、java、ruby 和 node 开发。下面分别说明如下:

Product page:聚合服务,内容由 Reviews 和 Details 内容聚合而成Details:图书详情服务Reviews:图书评价服务(多版本)。它也是一个聚合服务,聚合了 RatingsRatings:图书预订排名服务

该架构图演示了嵌入 istio 后 bookinfo 的每个微服务都会新增一个 Envoy,这个 Envoy 就是所谓的 sidecar,它会接管跟它配对的微服务的所有网络进、出口流量。其实 Envoy(sidecar)的作用就像你的手机,它正在逐渐把你变成哑巴、聋子和植物人,它承接了你所有的信息入口和出口,某些别有用心的人和组织通过对手机进行监控、遥测、路由等控制,起到控制你的思维、舆论导向、审美爱好等目的。

3 bookinfo 配置与部署

3.1 配置 istio 自动注入

因为 bookinfo 会启动多个 pod,每次手动注入 sidecar 会特别繁琐,因此我们使用批注入的方式。如果你对 sidecar 注入不了解,请参考本人的上篇博客。

kubectl create ns jiuxi # 创建 jiuxi 命名空间kubectl label ns jiuxi istio-injection=enabledkubectl get ns jiuxi --show-labels

命令操作成功后截图如下:

3.2 部署 bookinfo 应用

在命名空间 jiuxi 中部署了 bookinfo 应用:

kubectl apply -f bookinfo/platform/kube/bookinfo.yaml -n jiuxi

部署过程截图如下:

执行如下命令查看 bookinfo 的 service 列表:

kubectl get svc -n jiuxi

服务列表截图如下:

执行如下命令查看 bookinfo 的 pod 列表:

kubectl get pod -n jiuxi

3.3 验证 bookinfo 部署情况

在服务列表中寻找 productpage 服务,然后使用 curl 命令验证服务是否发布成功。

kubectl get svc -n jiuxicurl | grep -o ".* "

执行成功的结果如下截图所示:

自此,整个 bookinfo 应用就已经成功部署了。

4 设置 bookinfo 网关

上面的步骤已经可以让你访问到 bookinfo 应用了。但是我知道有些同学依旧觉得寒碜,因为很多人还是通过浏览器来看世界的。

网关就相当于你房子的大门,每当你饥肠辘辘回到家,你可以通过全开、半开、开一条缝等动作控制隔壁大妈家饭菜的饭菜香味。后续课程会专门介绍网关更深层次的原理和运用。这里你先有个粗浅的理解就可以了。

4.1 定义 bookinfo 入口网关

kubectl apply -f istio-1.4.5/samples/bookinfo/networking/bookinfo-gateway.yaml -n jiuxi

4.2 确认网关已创建

kubectl get gateways.networking.istio.io -n jiuxi

5 访问 bookinfo 应用

5.1 获取 INGRESS_HOST

kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}'

5.2 获取 INGRESS_PORT

kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="通过浏览器访问 bookinfo 应用

根据 5.1 和 5.2 获取到 host 和 port 信息,如下截图所示:

根据此 host 和 port,打开浏览器进行访问:

多刷新几次页面,你会发现 bookinfo 应用使用到的多个 reviews 版本,如下所示:

正好可以对应到 pod 信息:

6 卸载 bookinfo 应用

你已经创建了 bookinfo,有了创建的快感。也许你有点怅然若失,因为你觉得你的技术人生不够圆满,你想亲身完爆你创建的一切,那么还等什么,执行下面的语句吧:

./istio-1.4.5/samples/bookinfo/platform/kube/cleanup.sh

命令执行成功后,会显示如下截图:

6.1 验证卸载

执行如下命令验证你是否成功卸载:

kubectl get virtualservices.networking.istio.io -n jiuxikubectl get destinationrules.networking.istio.io -n jiuxikubectl get gateways.networking.istio.io -n jiuxikubectl get pod -n jiuxi

但是假如你觉得破坏的感觉很爽,就像嚼了炫迈一下停不下来,你可以执行如下作死命令:

rm -rf /     # 你要是真敢这么做,我就崇拜你

7 总结

自此,九析已经带你轻松完爆了 Bookinfo 应用。相信在操作的过程中,你还有很多不理解的地方,但是没关系,后续九析会为你庖丁解牛的。你需要做的,就是跟着九析操作一遍,熟悉一下整个流程,后续某天你一定会在某个瞬间大声尖叫:“我得到了”。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot2.6.3集成quartz的方式
下一篇:基于UFS2.1标准的UFS接口简单介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~