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