开发在提测阶段时,经常会遇到抢测试环境的问题,通常我们可能会采用下面的方式:

  1. 大家都把功能合并到一个公用的测试分支
  2. 让测试人员做HOSTS连接到开发机,或者开发提供的测试环境

但这些方案会存在蛮多问题,比如:

  • 自己的功能分支,可能依赖一些未发布的npm插件,此时不方便直接合到通用分支
  • 如果项目是在客户端下的,那么ssl证书受信比较麻烦
  • 不同开发的测试环境IP不同,测试人员需要管理大量的HOSTS,并进行切换
  • 不同开发的基础环境可能不统一
  • 缺乏统一的管理

问题和痛点都比较清楚了,我们可以预期下最终希望达到什么样的效果:

  • 方便的环境管理,测试人员配置统一的一份hosts
  • 开发人员可根据不同的功能分支,都拥有一个独立的测试环境
  • 测试环境生成,需要最低技术门槛
  • 测试环境需要能够快速的生成
  • 测试环境需要稳定的环境

结合痛点和预期的效果,思考下其实可以通过下面的流程来解决:

image

 证书服务器

  • 由运维管理,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搭建前端测试环境 - 总结


kevinkindom
12 声望0 粉丝