argoproj/argo-rollouts

GitHub: argoproj/argo-rollouts

Kubernetes 渐进式交付控制器,提供蓝绿部署、金丝雀发布和基于指标的自动化发布控制。

Stars: 3430 | Forks: 1110

# Argo Rollouts - Kubernetes 的渐进式交付 [![codecov](https://codecov.io/gh/argoproj/argo-rollouts/branch/master/graph/badge.svg)](https://codecov.io/gh/argoproj/argo-rollouts) [![slack](https://img.shields.io/badge/slack-argoproj-brightgreen.svg?logo=slack)](https://argoproj.github.io/community/join-slack) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3834/badge)](https://bestpractices.coreinfrastructure.org/projects/3834) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/argoproj/argo-rollouts/badge)](https://api.securityscorecards.dev/projects/github.com/argoproj/argo-rollouts) [![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/argo-rollouts)](https://artifacthub.io/packages/helm/argo/argo-rollouts) ## 什么是 Argo Rollouts? Argo Rollouts 是一个 Kubernetes 控制器和一组 CRD,为 Kubernetes 提供了高级部署能力,例如蓝绿部署、金丝雀部署、金丝雀分析、实验以及渐进式交付功能。 Argo Rollouts(可选)与 ingress 控制器和服务网格集成,利用其流量整形能力在更新期间逐步将流量转移到新版本。此外,Rollouts 可以查询并解析来自各种提供商的指标,以验证关键 KPI,并在更新期间推动自动升级或回滚。 [![Argo Rollouts Demo](https://img.youtube.com/vi/hIL0E2gLkf8/0.jpg)](https://youtu.be/hIL0E2gLkf8) ## 快速开始 ``` kubectl create namespace argo-rollouts kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml ``` 请遵循完整的[入门指南](docs/getting-started.md)来演练如何创建并更新一个 rollout 对象。 ## 为什么选择 Argo Rollouts? Kubernetes Deployments 提供了 `RollingUpdate` 策略,在更新期间提供了一套基本的安全保证(就绪探针)。然而,滚动更新策略面临许多限制: * 对 rollout 速度的控制很少 * 无法控制流向新版本的流量 * 就绪探针不适合进行更深层次、压力或一次性检查 * 无法查询外部指标来验证更新 * 可以暂停进度,但无法自动中止并回滚更新 出于这些原因,在大规模高容量的生产环境中,滚动更新通常被认为是一种风险过大的更新程序,因为它无法控制爆炸半径,可能过于激进地进行 rollout,并且在失败时不提供自动回滚。 ## 功能特性 * 蓝绿更新策略 * 金丝雀更新策略 * 细粒度、加权流量转移 * 自动回滚和升级 * 人工判断 * 可自定义的指标查询和业务 KPI 分析 * Ingress 控制器集成:NGINX, ALB, Apache APISIX * 服务网格集成:Istio, Linkerd, SMI * 指标提供商集成:Prometheus, Wavefront, Kayenta, Web, Kubernetes Jobs, Datadog, New Relic, InfluxDB ## 支持的流量整形集成 | 流量整形集成 | SetWeight | SetWeightExperiments | SetMirror | SetHeader | 作为插件实现 | |-----------------------------------|------------------------------|-----------------------------|----------------------------|----------------------------|-----------------------------| | ALB Ingress Controller | :white_check_mark: (稳定) | :white_check_mark: (稳定) | :x: | :white_check_mark: (Alpha) | | | Ambassador | :white_check_mark: (稳定) | :x: | :x: | :x: | | | Apache APISIX Ingress Controller | :white_check_mark: (Alpha) | :x: | :x: | :white_check_mark: (Alpha) | | | Istio | :white_check_mark: (稳定) | :white_check_mark: (稳定) | :white_check_mark: (Alpha) | :white_check_mark: (Alpha) | | | Nginx Ingress Controller | :white_check_mark: (稳定) | :x: | :x: | :x: | | | SMI | :white_check_mark: (稳定) | :white_check_mark: (稳定) | :x: | :x: | | | Traefik | :white_check_mark: (稳定) | :x: | :x: | :x: | | | Contour | :white_check_mark: (Beta) | :x: | :x: | :x: | :heavy_check_mark: | | Gateway API | :white_check_mark: (Alpha) | :x: | :x: | :x: | :heavy_check_mark: | :white_check_mark: = 支持 :x: = 不支持 :heavy_check_mark: = 是 ## 文档 欲了解更多关于 Argo Rollouts 的信息,请访问[完整文档](https://argo-rollouts.readthedocs.io/en/stable/)。 ## 谁在使用 Argo Rollouts? [Argo Rollouts 官方用户列表](https://github.com/argoproj/argo-rollouts/blob/master/USERS.md) ## 社区博客和演讲 * [Awesome-Argo:精选的 Argo 相关优秀项目和资源列表](https://github.com/terrytangyuan/awesome-argo) * [一切皆自动化 - 如何结合 Argo Events、Workflows & Pipelines、CD 和 Rollouts](https://youtu.be/XNXJtxkUKeY) * [Argo Rollouts - 让 Kubernetes 中的金丝雀部署变得简单](https://youtu.be/84Ky0aPbHvY) * [Intuit 如何进行金丝雀和蓝绿部署](https://www.youtube.com/watch?v=yeVkTTO9nOA) * [升级你的 CD:解锁 Kubernetes 上的渐进式交付](https://www.youtube.com/watch?v=Nv0PPwbIEkY) * [使用 Argo Rollouts 和冒烟测试最大程度减少部署失败](https://codefresh.io/continuous-deployment/minimize-failed-deployments-argo-rollouts-smoke-tests/) * [利用 Argo Rollouts 和 Prometheus 指标自动从失败部署中恢复](https://codefresh.io/continuous-deployment/recover-automatically-from-failed-deployments/) * [使用 Argo Rollouts 进行 Kubernetes 蓝绿部署](https://www.youtube.com/watch?v=krDxDz4V4Tg) * [使用 Argo Rollouts 进行 Kubernetes 金丝雀部署](https://www.youtube.com/watch?v=fviYWA2mcF8) * [使用 Argo CD 和 Argo Rollouts 金丝雀发布的 GitOps 实践](https://www.youtube.com/watch?v=35Qimb_AZ8U) * [使用 Keptn 和 Argo Rollouts 进行多阶段交付](https://www.youtube.com/watch?v=w-E8FzTbN3g&t=1s) * [在 Argo Rollouts 之上使用内部 Kubernetes 金丝雀控制器进行渐进式代码发布](https://doordash.engineering/2021/04/14/gradual-code-releases-using-an-in-house-kubernetes-canary-controller/) * [Argo-Rollouts 的可扩展性如何:云运营商的视角](https://www.youtube.com/watch?v=rCEhxJ2NSTI) * [使用 Argo Rollouts 最小化 Kubernetes 中的影响](https://medium.com/@arielsimhon/minimize-impact-in-kubernetes-using-argo-rollouts-992fb9519969) * [在 Red Hat OpenShift 上使用 GitOps 进行渐进式应用交付](https://www.youtube.com/watch?v=DfeL7cdTx4c) * [使用 Argo Rollouts 对 Kubernetes Config Maps 进行渐进式交付](https://codefresh.io/blog/progressive-delivery-for-kubernetes-config-maps-using-argo-rollouts/) * [使用 Argo Rollouts 进行多服务渐进式交付](https://codefresh.io/blog/multi-service-progressive-delivery-with-argo-rollouts/) * [使用 Argo Rollouts 对有状态服务进行渐进式交付](https://codefresh.io/blog/progressive-delivery-for-stateful-services-using-argo-rollouts/)
标签:3D图, Argo Rollouts, EVTX分析, GitOps, Helm, Ingress, Istio, NGINX Ingress, 回滚, 子域名突变, 实验测试, 应用发布, 持续交付, 控制器, 日志审计, 服务网格, 流量管理, 渐进式交付, 自动化运维, 自定义请求头, 蓝绿部署, 金丝雀发布