十三 Istio:Istio项目实际案例——Online Boutique( 四 )

k8scloude1机器的地址为192.168.110.130,我们可以在浏览器中打开 http://192.168.110.130:30754,进入 kiali,kiali首页如下:

十三 Istio:Istio项目实际案例——Online Boutique

文章插图
在online-boutique命名空间点击Graph,查看服务的拓扑结构
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
下面是 Boutique 图表在 Kiali 中的样子:
该图向我们展示了服务的拓扑结构 , 并将服务的通信方式可视化 。它还显示了入站和出站的指标,以及通过连接 Jaeger 和 Grafana(如果安装了)的追踪 。图中的颜色代表服务网格的健康状况 。红色或橙色的节点可能需要注意 。组件之间的边的颜色代表这些组件之间的请求的健康状况 。节点形状表示组件的类型 , 如服务、工作负载或应用程序 。
十三 Istio:Istio项目实际案例——Online Boutique

文章插图
七.流量路由7.1 流量路由我们已经建立了一个新的 Docker 镜像,它使用了与当前运行的前端服务不同的标头 。让我们看看如何部署所需的资源并将一定比例的流量路由到不同的前端服务版本 。
在我们创建任何资源之前,让我们删除现有的前端部署(kubectl delete deploy frontend
[root@k8scloude1 ~]# kubectl get deploy | grep frontendfrontend1/1114d21h[root@k8scloude1 ~]# kubectl delete deploy frontenddeployment.apps "frontend" deleted[root@k8scloude1 ~]# kubectl get deploy | grep frontend重新创建一个前端deploy , 名字还是frontend , 但是指定了一个版本标签设置为 original。yaml文件如下:
[root@k8scloude1 ~]# vim frontend-original.yaml[root@k8scloude1 ~]# cat frontend-original.yamlapiVersion: apps/v1kind: Deploymentmetadata:name: frontendspec:selector:matchLabels:app: frontendversion: originaltemplate:metadata:labels:app: frontendversion: originalannotations:sidecar.istio.io/rewriteAppHTTPProbers: "true"spec:containers:- name: serverimage: gcr.lank8s.cn/google-samples/microservices-demo/frontend:v0.2.1ports:- containerPort: 8080readinessProbe:initialDelaySeconds: 10httpGet:path: "/_healthz"port: 8080httpHeaders:- name: "Cookie"value: "shop_session-id=x-readiness-probe"livenessProbe:initialDelaySeconds: 10httpGet:path: "/_healthz"port: 8080httpHeaders:- name: "Cookie"value: "shop_session-id=x-liveness-probe"env:- name: PORTvalue: "8080"- name: PRODUCT_CATALOG_SERVICE_ADDRvalue: "productcatalogservice:3550"- name: CURRENCY_SERVICE_ADDRvalue: "currencyservice:7000"- name: CART_SERVICE_ADDRvalue: "cartservice:7070"- name: RECOMMENDATION_SERVICE_ADDRvalue: "recommendationservice:8080"- name: SHIPPING_SERVICE_ADDRvalue: "shippingservice:50051"- name: CHECKOUT_SERVICE_ADDRvalue: "checkoutservice:5050"- name: AD_SERVICE_ADDRvalue: "adservice:9555"- name: ENV_PLATFORMvalue: "gcp"resources:requests:cpu: 100mmemory: 64Milimits:cpu: 200mmemory: 128Mi创建deploy
[root@k8scloude1 ~]# kubectl apply -f frontend-original.yamldeployment.apps/frontend created#deploy创建成功[root@k8scloude1 ~]# kubectl get deploy | grep frontendfrontend1/11143s#pod也正常运行[root@k8scloude1 ~]# kubectl get pod | grep frontendfrontend-ff47c5568-qnzpt2/2Running0105s现在我们准备创建一个 DestinationRule , 定义两个版本的前端——现有的(original)和新的(v1) 。
[root@k8scloude1 ~]# vim frontend-dr.yaml[root@k8scloude1 ~]# cat frontend-dr.yamlapiVersion: networking.istio.io/v1alpha3kind: DestinationRulemetadata:name: frontendspec:host: frontend.online-boutique.svc.cluster.localsubsets:- name: originallabels:version: original- name: v1labels:version: 1.0.0创建DestinationRule
[root@k8scloude1 ~]# kubectl apply -f frontend-dr.yamldestinationrule.networking.istio.io/frontend created[root@k8scloude1 ~]# kubectl get destinationruleNAMEHOSTAGEfrontendfrontend.online-boutique.svc.cluster.local12s接下来 , 我们将更新 VirtualService,并指定将所有流量路由到子集 。在这种情况下 , 我们将把所有流量路由到原始版本original的前端 。
[root@k8scloude1 ~]# vim frontend-vs.yaml[root@k8scloude1 ~]# cat frontend-vs.yamlapiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:name: frontend-ingressspec:hosts:- '*'gateways:- frontend-gatewayhttp:- route:- destination:host: frontend.online-boutique.svc.cluster.localport:number: 80subset: original更新 VirtualService 资源
[root@k8scloude1 ~]# kubectl apply -f frontend-vs.yamlvirtualservice.networking.istio.io/frontend-ingress created[root@k8scloude1 ~]# kubectl get virtualserviceNAMEGATEWAYSHOSTSAGEfrontend["frontend.default.svc.cluster.local"]5d14hfrontend-ingress["frontend-gateway"]["*"]14s#修改frontend这个virtualservice的hosts为frontend.online-boutique.svc.cluster.local[root@k8scloude1 ~]# kubectl edit virtualservice frontendvirtualservice.networking.istio.io/frontend edited[root@k8scloude1 ~]# kubectl get virtualserviceNAMEGATEWAYSHOSTSAGEfrontend["frontend.online-boutique.svc.cluster.local"]5d14hfrontend-ingress["frontend-gateway"]["*"]3m24s

推荐阅读