系列文章:java
总目录索引:九析带你轻松完爆 istio 服务网格系列教程node
目录python
1 前言json
2 bookinfo 架构介绍浏览器
3 bookinfo 配置与部署ruby
3.1 配置 istio 自动注入微信
3.2 部署 bookinfo 应用网络
3.3 验证 bookinfo 部署状况架构
4 设置 bookinfo 网关app
4.1 定义 bookinfo 入口网关
4.2 确认网关已建立
5 访问 bookinfo 应用
5.1 获取 INGRESS_HOST
5.2 获取 INGRESS_PORT
5.3 经过浏览器访问 bookinfo 应用
6 卸载 bookinfo 应用
6.1 验证卸载
7 总结
1 前言
若是你对博客有任何疑问或者想更深刻学习 istio,请加微信群,咱们一块儿进步:
2 bookinfo 架构介绍
bookinfo 是 istio 的学习样例,经过 bookinfo 你能够对 istio 提供的路由、遥测等功能有更加深刻的理解。
下图是 bookinfo 在没有嵌入 istio 前的物理架构图:
bookinfo 是一个在线书店应用,该应用由 4 个微服务组成,分别为 Product page、Reviews、Details 和 Ratings。为了表现 istio 的无侵入性,这 4 个微服务分别由 python、java、ruby 和 node 开发。下面分别说明以下:
Product page:聚合服务,内容由 Reviews 和 Details 内容聚合而成
Details:图书详情服务
Reviews:图书评价服务(多版本)。它也是一个聚合服务,聚合了 Ratings
Ratings:图书预订排名服务
下图是 bookinfo 嵌入 istio 后的物理架构图:
该架构图演示了嵌入 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=enabled
kubectl 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 jiuxi
curl http://SVC_CLUSTER_IP:9080 | grep -o "<title>.*</title>"
执行成功的结果以下截图所示:
自此,整个 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=="http2")].nodePort}'
5.3 经过浏览器访问 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 jiuxi
kubectl get destinationrules.networking.istio.io -n jiuxi
kubectl get gateways.networking.istio.io -n jiuxi
kubectl get pod -n jiuxi
可是假如你以为破坏的感受很爽,就像嚼了炫迈一下停不下来,你能够执行以下做死命令:
rm -rf / # 你要是真敢这么作,我就崇拜你
7 总结
自此,九析已经带你轻松完爆了 Bookinfo 应用。相信在操做的过程当中,你还有不少不理解的地方,可是不要紧,后续九析会为你庖丁解牛的。你须要作的,就是跟着九析操做一遍,熟悉一下整个流程,后续某天你必定会在某个瞬间大声尖叫:“我获得了”。