Argo Rollouts¶
Argo Rollouts 是一个 Kubernetes 控制器 和 一组 Kubernetes CustomResourceDefinition (CRD) 扩展 ,为Kubernetes提供了高级的部署能力,例如 蓝绿,金丝雀,金丝雀分析,实验以及渐进式提交的能力。
(可以选择)Argo Rollouts和 Kubernetes Ingress控制器 以及 service meshes 集成,利用其流量整形(traffic shaping)能力实现在更新期间逐渐将流量转移到新版本。(你可以理解成提供了一种比较巧妙的方式实现负载均衡)
此外,Rollouts可以查询和解释来自不同providers的metrics,这样就可以验证关键KPIs以及在更新期间提供自动化提示(promotion)或回滚(rollback)。(你可以理解成提供了对各种监控指标metrics的检查,以及自动交互,帮助管理者判断和回滚发布)
Argo Rollouts
vs. Kubernetes原生RollingUpdate
¶
Kubernetes原生RollingUpdate
¶
原生的Kubernetes Deployment 对象在更新过程中支持提供基本的安全保障集(就绪探针, readiness probes),也就是 RollingUpdate
策略。然而这种滚动更新策略有一席限制:
rollout的速度控制非常少
无法控制新版本的流量
就绪探针(readiness probes)不适合更深入、压力或者一次性监测
无法查询外部指标(query external metrics)来验证更新 (这个功能很重要,生产环境中系统自身监控反应不出问题,但是外部依赖这个系统的平台可能已经出现了故障)
可以停止进度,但是无法自动中止和回滚更新
由于这些原因,在大规模高容量的生产环境,滚动更新通常被认为更新风险太大: 无法控制爆炸半径,并且可能由于过于激进rollout导致故障,并且在失败时不能提供自动回滚
Argo Rollouts
增强¶
蓝绿更新策略
金丝雀更新策略
细粒度、加权流量转移
自动回滚和提示(promotions)
手动判断
可定制的业务KPI指标查询与分析
入口控制器集成:NGINX、ALB
服务网格集成:Istio服务网格 、Linkerd、SMI
指标提供者(metrics provider)集成:Prometheus、Wavefront、Kayenta、Web、Kubernetes