体验环境创建完成后,网站所有服务已经部署至广州的集群(product 服务和 order 服务只部署了 v1版本),并且已自动注入了 envoy sidecar 接管服务流量,istio-ingressgateway 已经创建,但未配置监听器规则以及路由规则以放通网站 frontend 服务至公网。
1. 创建 Gateway 配置监听规则
首先需要创建 Gateway 资源,配置 istio-ingressgateway 的监听器规则,端口为80,协议为 http。用户只需要配置 Gateway 规则,TCM 后台会自动实现 istio-ingressgateway 相关的 pod、service 和绑定的负载均衡器 CLB 的配置同步。
1. 登录 服务网格控制台。
2. 单击服务网格 ID,进入已创建的服务网格管理页面。
3. 在 Gateway 中单击新建。
4. 在新建Gateway 中,设置 Gateway 参数。关键参数信息如下图所示:
?
?5. 单击保存,完成创建。
通过 kubectl 提交 YAML 至主集群完成配置:
apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata:name: frontend-gwnamespace: basespec:servers:- port:number: 80name: httpprotocol: HTTPhosts:- '*'selector:app: istio-ingressgatewayistio: ingressgateway
2. 配置路由规则
监听器规则配置完成后,还需要通过 Virtual Service 资源配置路由规则,将来自 istio-ingressgateway 的流量路由至 frontend 服务。
1. 登录 服务网格控制台。
2. 单击服务网格 ID,进入已创建的服务网格管理页面。
3. 在 Virtual Service 中单击新建。
4. 在新建Virtual Service 中,设置参数。关键参数信息如下图所示:
?
?5. 单击保存,完成创建。
通过 kubectl 提交 YAML 至主集群完成配置:
apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:name: frontend-vsnamespace: basespec:hosts:- '*'gateways:- base/frontend-gwhttp:- route:- destination:host: frontend.base.svc.cluster.local
配置完成后,通过 istio-ingressgateway 的公网 IP 地址即可访问到 Demo 网站,当前部署的网站的结构如下图所示:
?
?单击链接访问网站后,可登录(1-5均可登录,其中1-3为会员,4-5为非会员)、添加购物车,下单,以产生调用完所有部署的服务的请求,网站界面右下角的悬浮窗展示了前端服务当前调用服务的名称、地域、版本、pod name 信息。悬浮窗信息展示如下图所示:
?
?有流量数据后,可单击网络拓扑 tab 查看网格内网络流量的拓扑图。单击服务 tab,服务详情页面可查看到请求的调用链,及可查看调用 stock 服务的完整链路及每层调用的详细信息。
业务规模增加,服务数量较多时,几乎每个前端请求都会形成复杂的调用链路,此时需要能够:在复杂的链路中快速定位和分析问题,判定故障影响范围;或需要梳理服务的调用依赖关系,判断其合理性;或分析链路的请求耗时等性能,做串并行分析的调用逻辑优化等。
通过全链路跟踪系统,可描绘整个网格的流量特征,帮助开发者进行链路分析。
网格拓扑如下图所示:
?
?链路追踪如下图所示:
?
?