前端项目灰度发布思路
前端访问流程

- 最前面是腾讯云的WAF,回源到ingressgateway
- nginx服务器作为istio的ServiceEntry
- 根据路径匹配到项目
思路
- 前端项目通过npm build产生index.html和一些css、js、img文件,除了index.html文件都会缓存在CDN
- 现在有线上的nginx机器和刚增加的灰度nginx机器,在发布项目时,会把新的js、css、img文件同步到所有nginx机器上,而index.html文件只会同步到灰度的nginx机器。
- 然后配置istio的VirtualService规则,让少量流量去灰度到机器,大部分流量还是回到线上的机器
现有请求流程
- 请求到预发机器
- 当请求落到预发的机器,会请求到最新发布的index.html
- 然后请求CDN的新的js、css、img文件
- 这时CDN没有,就会回源到线上nginx,因为我们同步新的静态文件,所以请求是可以请求到
- 请求到线上机器
- 这时线上的index.html是没有更新的,所以请求的文件也是老的
- 在CDN上是有老的js、css、img文件,所以请求是成功的
总结
- 当灰度环境验收后,需要把新的index.html文件更新到线上的nginx
- 最后把灰度环境的流量去掉