在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:
- 重建(recreate):停止旧版本部署新版本 (k8s内部支持)
- 滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本 (k8s内部支持)
- 蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量 (k8s内部支持比较繁琐,argo(改动yml),不用太大改动)
- 金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布 (k8s内部支持比较繁琐,argo(改动yml),不用太大改动)
- A/B测(a/b testing):以精确的方式(HTTP 头、cookie、权重等)向部分用户发布新版本。A/B测实际上是一种基于数据统计做出业务决策的技术。在 Kubernetes 中并不原生支持,需要额外的一些高级组件来完成改设置(比如Istio、Linkerd、Traefik、或者自定义 Nginx/Haproxy 等)
- AB测试 (所有的请求必须走代理网关进行流量拦截,进行转发来实现AB测试 参考: ingress-nginx实现灰度发布 )
改动点:
滚动更新(rolling-update):yml配置下ok
蓝绿(blue/green):使用argo,yml修改,jenkins抽取通用参数执行相关命令。
金丝雀(canary):使用argo,yml修改,jenkins抽取通用参数执行相关命令。
A/B测(a/b testing):
1.所有请求走网关,类似istio的sidecar来实现流量拦截转发(如原来内部请求通过svc的需要改下每个svc对应一个ingress))
2 https://github.com/xiaomin0322/my-argocd-ab
来源:oschina
链接:https://my.oschina.net/xiaominmin/blog/4277201