Istio + SkyWalking + Spring Boot 实战 -Zadig 自测模式搞定开发者子环境
Istio + SkyWalking + Spring Boot 实战 -Zadig 自测模式搞定开发者子环境微服务架构被企业级开发广泛采用,而随着业务迅速发展,服务数量也呈现爆炸式的增长。日常开发过程中一套测试环境可能包含成千上百个服务。在协作过程中等待环境、抢占环境、验证冲突已成为常态。而长期发展导致的技术债和基础架构复杂度又非常高,复制多套环境存在较高难度,工程师日常协作只能在等待中苦不堪言。
在 Zadig V1.11.0 版本中推出了环境自测模式,工程师可以基于一套含全量服务的基准环境低成本搭建独享的开发者子环境。利用 Istio 和 Tracing 组件的链路追踪和流量动态路由的能力,实现开发者子环境与基准环境联调的目的,从而解决大规模微服务下工程师被环境问题阻塞的情况。
下面以服务网格组件 Istio + 企业采用率非常广泛的 SkyWalking + 典型微服务架构 Spring Boot 项目 PiggyMetrics 为例,演示如何使用 Zadig 自测模式实现工程师日常自测联调过程。
项目简介
本例 PiggyMetrics 项目,架构如下:
服务配置文件参考 YAML,服务组成如下:
8 个 Spring Boot 应用程序:
account-service
auth-service
config-service (主要管理服务依赖的 configmap 和 secret 等配置)
gateway
monitoring-service
notification-service
registry-service
statistics-service
4 个 MongoDB 实例:
account-mongodb
auth-mongodb
notification-mongodb
statistics-mongodb
1 个 RabbitMq:
rabbitmq
对于 statistics-service 服务开发者需要自测联调,可以基于基准环境拉起一套含有 config-service' 和 statistics-service' 服务的子环境,通过访问基准环境的地址,并且在请求中加上子环境相应的 header 信息可实现访问子环境的能力。效果图如下:
前置准备工作
基础组件信息
Kubernetes 版本:v1.20.11(Node 2*8c16g)
Zadig 版本:1.11.0+
Skywalking 版本:v8.8.1
ElasticSearch 版本:7.5.1
Istio 版本:1.12.1
安装组件
安装 Zadig:
安装方式参考官方文档:快速安装 | Zadig 文档
安装 Istio:
安装方式参考官方文档:Installation Guides
安装 SkyWalking:
准备基准环境
1、在 Zadig 上创建项目 piggymetrics
,配置服务,服务 YAML fork 自 Zadig 代码库,可使用「从代码库同步」方式批量导入服务配置。
服务 YAML 声明中,已通过 initContainer 共享 SkyWalking Agent jar 到业务容器。initContainer 所使用的 IMAGE 通过以下方式生成:
业务镜像所使用的 IMAGE 生成方式举例:
需要根据实际情况修改服务 YAML 的环境变量中 skywalking-oap 的地址:SW_AGENT_COLLECTOR_BACKEND_SERVICES 的值,即 <service-name>. <namespace-name>.svc.cluster.local
2、创建包含全量服务的基准环境 base
。
部署完成后,可从 SkyWalking UI 上查看的服务之间的依赖关系如下:
开启自测模式
在基准环境准备完成以后即可开启自测模式并创建包含 config-service
和statistics-service
服务的子环境 subdev
.
创建完成后,修改子环境的中服务依赖的中间件等配置,环境配置-编辑 configmap special-config-env
,修改中间件地址为:<service-name>. <namespace-name>.svc.cluster.local。
完成配置修改后,子环境环境即可正常和基准环境交互。
验证自测模式
访问 gateway 服务的接口:/account/current
访问链路如下:
1、访问基准环境
本机访问集群中的 gateway 服务,需要先做端口转发。
方式一:Chrome 访问 localhost:8085 页面正常操作,即访问的是基准环境。
方式二:使用 curl 命令请求基准环境
上述请求中的 access token Bearer c7f5d94f-8eca-4702-96b4-f496837e8e29
可以通过登录 piggymetrics web 端新建用户获取,如下图所示。
2、访问子环境
访问地址使用 base 环境的地址,并在请求 header 中添加字段:
x-env:表示请求转发到的子环境名,如 x-env=subdev
sw8:参考 跨进程传播的头部协议 sw8 详情
方式一:利用 Chrome 插件 ModHeader,使页面发起的请求在 header 中添加字段。加上字段后,可以使用 Chrome 页面操作,访问子环境进行自测联调。
方式二:使用 curl 命令将请求转发到子环境,使用子环境进行自测联调,请求 header 中添加字段 x-env、sw8。
查看子环境 subdev 中 statistics-service 服务的日志,可知请求已到子环境服务中。
至此已实现自测模式的能力,工程师可以根据实际情况基于基准环境创建属于自己的子环境。
Zadig,让工程师更专注创造!欢迎加入 开源吐槽群🔥
版权声明: 本文为 InfoQ 作者【KodeRover】的原创文章。
原文链接:【http://xie.infoq.cn/article/37d40ed8e7e55f826b9da10f5】。文章转载请联系作者。
评论