开发在提测阶段时,经常会遇到抢测试环境的问题,通常我们可能会采用下面的方式:
- 大家都把功能合并到一个公用的测试分支
- 让测试人员做HOSTS连接到开发机,或者开发提供的测试环境
但这些方案会存在蛮多问题,比如:
- 自己的功能分支,可能依赖一些未发布的npm插件,此时不方便直接合到通用分支
- 如果项目是在客户端下的,那么ssl证书受信比较麻烦
- 不同开发的测试环境IP不同,测试人员需要管理大量的HOSTS,并进行切换
- 不同开发的基础环境可能不统一
- 缺乏统一的管理
问题和痛点都比较清楚了,我们可以预期下最终希望达到什么样的效果:
- 方便的环境管理,测试人员配置统一的一份hosts
- 开发人员可根据不同的功能分支,都拥有一个独立的测试环境
- 测试环境生成,需要最低技术门槛
- 测试环境需要能够快速的生成
- 测试环境需要稳定的环境
结合痛点和预期的效果,思考下其实可以通过下面的流程来解决:
证书服务器
- 由运维管理,ssl证书不会经过开发,杜绝安全隐患
- 统一的环境管理,测试人员只需要绑定HOSTS到证书服务器即可随意切换到任意环境
- 将开发需要的域名做反向代理到K8S集群服务器
K8S集群服务器
- 统一构建和打包统一的docker镜像
- 通过特定的请求头做服务分发
- 具体的服务也在这台服务器(前端项目耗费性能较少,如对性能有要求的可分布式到多台机器部署)
测试人员只需要绑定证书服务器的HOSTS后,通过这套方案提供的环境选择器切换不同的COOKIE后,通过K8S集群服务器的NGINX分发到不同的服务,实现每个开发每个功能都可有独立的测试环境。
基于前端项目考虑,一个简单的前端环境通常都是由一个nginx加上静态文件构成,对服务器性能要求较少,所以方案只需要两台服务器即可搭建。
当然如果项目根本都不支持HTTPS的话,那么SSL证书服务器也都可以节省下来。
最后为了方便构建出环境,我们可以在Gitlab中配置上CI/CD,在需要时我们可以通过执行CI/CD构建出新的环境。
文章系列列表:
使用K8S搭建前端测试环境 - 前言
使用K8S搭建前端测试环境 - K8S环境搭建
使用K8S搭建前端测试环境 - Gitlab集成K8S
使用K8S搭建前端测试环境 - 创建CI/CD
使用K8S搭建前端测试环境 - 基础服务搭建
使用K8S搭建前端测试环境 - 总结
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。