Java进阶专题(二十八) Service Mesh初体验 (5)

安装bash ⾃动补全⽂件
如果您使⽤bash,istioctl ⾃动补全的⽂件位于tools ⽬录。通过复制istioctl.bash ⽂件到您的home
⽬录,然后添加下⾏内容到您的.bashrc ⽂件执⾏istioctl tab 补全⽂件:

source~/istioctl.bash

如果istioctl 补全⽂件已经正确安装,在您输⼊istioctl 命令时通过按Tab 键,它会返回⼀组推荐命令供您选择:

$ istioctlproxy-<TAB> proxy-config proxy-status 安装Istio

请按照以下步骤在您所选的平台上使⽤demo 配置⽂件安装Istio。

安装 demo 配置

$ istioctlmanifest apply --set profile=demo

为了验证是否安装成功,需要先确保以下Kubernetes 服务正确部署,然后验证除 jaegeragent 服务外的其他服务,是否均有正确的 CLUSTER-IP:

$ kubectl getsvc -nistio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE grafana ClusterIP 172.21.211.123 <none> 3000/TCP 2m istio-citadel ClusterIP 172.21.177.222 <none> 8060/TCP,15014/TCP 2m istio-egressgateway ClusterIP 172.21.113.24 <none> 80/TCP,443/TCP,15443/TCP 2m istio-galley ClusterIP 172.21.132.247 <none> 443/TCP,15014/TCP,9901/TCP 2m istio-ingressgateway LoadBalancer 172.21.144.254 52.116.22.242 15020:31831/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30318/TCP ,15030:32645/TCP,15031:31933/TCP,15032:31188/TCP,15443:30838/TCP 2m istio-pilot ClusterIP 172.21.105.205 <none> 15010/TCP,15011/TCP,8080/TCP,15014/TCP 2m istio-policy ClusterIP 172.21.14.236 <none> 9091/TCP,15004/TCP,15014/TCP 2m istio-sidecar-injector ClusterIP 172.21.155.47 <none> 443/TCP,15014/TCP 2m istio-telemetry ClusterIP 172.21.196.79 <none> 9091/TCP,15004/TCP,15014/TCP,42422/TCP 2m jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP 2m jaeger-collector ClusterIP 172.21.135.51 <none> 14267/TCP,14268/TCP 2m jaeger-query ClusterIP 172.21.26.187 <none> 16686/TCP 2m kiali ClusterIP 172.21.155.201 <none> 20001/TCP 2m prometheus ClusterIP 172.21.63.159 <none> 9090/TCP 2m tracing ClusterIP 172.21.2.245 <none> 80/TCP 2m zipkin ClusterIP 172.21.182.245 <none> 9411/TCP 2m

如果集群运⾏在⼀个不⽀持外部负载均衡器的环境中(例如:minikube),istioingressgateway 的 EXTERNAL-IP 将显示为 状态。请使⽤服务的 NodePort或 端⼝转发来访问⽹关。

请确保关联的Kubernetes pod 已经部署,并且 STATUS 为 Running:

$ kubectl getpods -nistio-system NAME READY STATUS RESTARTS AGE grafana-f8467cc6-rbjlg 1/1 Running 01m istio-citadel-78df5b548f-g5cpw 1/1 Running 01m istio-egressgateway-78569df5c4-zwtb5 1/1 Running 01m istio-galley-74d5f764fc-q7nrk 1/1 Running 01m istio-ingressgateway-7ddcfd665c-dmtqz 1/1 Running 01m istio-pilot-f479bbf5c-qwr28 1/1 Running 01m istio-policy-6fccc5c868-xhblv 1/1 Running 21m istio-sidecar-injector-78499d85b8-x44m6 1/1 Running 01m istio-telemetry-78b96c6cb6-ldm9q 1/1 Running 21m istio-tracing-69b5f778b7-s2zvw 1/1 Running 01m kiali-99f7467dc-6rvwp 1/1 Running 01m prometheus-67cdb66cbb-9w2hm 1/1 Running 01m Bookinfo示例

这个示例部署了⼀个⽤于演示多种Istio 特性的应⽤,该应⽤由四个单独的微服务构成。 这个应⽤模仿在线书店的⼀个分类,显示⼀本书的信息。 ⻚⾯上会显示⼀本书的描述,书籍的细节(ISBN、⻚数等),以及关于这本书的⼀些评论。

Bookinfo 应⽤分为四个单独的微服务:

productpage. 这个微服务会调⽤ details 和 reviews 两个微服务,⽤来⽣成⻚⾯。
details. 这个微服务中包含了书籍的信息。
reviews. 这个微服务中包含了书籍相关的评论。它还会调⽤ ratings 微服务。
ratings. 这个微服务中包含了由书籍评价组成的评级信息。

reviews 微服务有3 个版本:

v1 版本不会调⽤ ratings 服务。
v2 版本会调⽤ ratings 服务,并使⽤1 到5 个⿊⾊星形图标来显示评分信息。
v3 版本会调⽤ ratings 服务,并使⽤1 到5 个红⾊星形图标来显示评分信息。

下图展示了这个应⽤的端到端架构。

Java进阶专题(二十八) Service Mesh初体验

Bookinfo 应⽤中的⼏个微服务是由不同的语⾔编写的。 这些服务对Istio 并⽆依赖,但是构成了⼀个有代表性的服务⽹格的例⼦:它由多个服务、多个语⾔构成,并且 reviews 服务具有多个版本。

部署应用

要在Istio 中运⾏这⼀应⽤,⽆需对应⽤⾃身做出任何改变。 您只要简单的在Istio 环境中对服务进⾏配置和运⾏,具体⼀点说就是把Envoy sidecar 注⼊到每个服务之中。 最终的部署结果将如下图所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjfpg.html