Istio最佳实践--基于阿里云Istio集群搭建Bookinfo

一、BookInfo架构图

Istio官方本身提供了一个很好的例子,叫"BookInfo",是由前端Python以及后端Java组成的,系统之间的调用使用的是HTTP,可以发现的是每个pod都被安置了一个名称为 Envoy的网关,该Envoy sidecar用于拦截对服务的入站和出站。

二、搭建BookInfo

2.1 创建虚拟服务

2.1.1 应用基本信息

  • 服务网格 > 虚拟服务,然后单击页面右上角的创建

2.1.2 容器配置

  • 以productpage为例,配置镜像名称和tag

2.1.3 创建服务

  • 采用集群的内部 IP 暴露服务,选择该项,服务只能够在集群内部可以访问,暴露容器内的9080端口,在集群内部就可以通过productpage:9080访问到后端pod

2.1.4 完成虚拟服务创建

下图可以看出,deployment,service,destinationRule,VirtualService已经创建完成了

2.1.5 创建其他虚拟服务

可以参考上述步骤分别创建 details,ratings,reviews(v1)这三个服务。

创建完成后,等待所有的 service 和 pod 都已经正常启动,已经创建好的虚拟服务如下图

2.2 创建服务网关

2.2.1 创建服务网关配置

  • 定义服务网关名称
  • 服务网关:服务代理网关。默认为istio-ingressgateway
  • 端口配置:协议为HTTP,暴露服务端口80,支持多个Host

2.2.2 完成创建

  • 创建完成后,您可以在服务网关列表中,看到新创建的服务网关

2.3 服务网关绑定虚拟服务

  • 单击左侧导航栏中的服务网格 > 虚拟服务,可以看到虚拟服务(Virtual Service)列表

  • 在目标虚拟服务的服务网关列单击绑定,弹出添加页面

  •  在服务网关列表中,在目标服务网关对应的服务列中单击 istio-ingressgateway,并输入 路由/productpage

可以看到如下页面

2.4 部署 reviews-v2 版本

  1. 单击左侧导航栏中的服务网格 > 虚拟服务,可以看到虚拟服务(Virtual Service)列表。
  2. 单击reviews管理

  • 添加灰度版本,目前阿里云只支持两个灰度版本的添加

  • 待 pod 启动完成后,输入 路由/productpage,会看到 v2 版本的界面。
  • 由于 v1、v2 流量比例各 50%,可能要多刷新几次界面,可以发现版本在v1和v2之间切换,各占50%

三、通过kiali查看BookInfo调用关系

整个BookInfo的系统在Istio中的调用主要是,在地址栏输入47.113.18.247/productpage,通过47.113.18.247找到了istio的入口网关服务,然后通过productpage找到关联了网关服务的虚拟服务productpage,虚拟服务通过DestinationRule将流量转发到后端服务,后端服务再将流量转发到真正提供服务的容器

下图展示了 kiali 中显示的 Bookinfo 示例的服务拓扑图 

参考地址:https://help.aliyun.com/document_detail/128548.html?spm=a2c4g.11186623.6.808.4adf2f21eJRzMu

发布了161 篇原创文章 · 获赞 40 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/103795321