前端项目灰度发布思路

前端访问流程

image.png

  • 最前面是腾讯云的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
  • 最后把灰度环境的流量去掉