• Stars
    star
    2,676
  • Rank 17,072 (Top 0.4 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Progressive Delivery for Kubernetes

Argo Rollouts - Progressive Delivery for Kubernetes

codecov slack CII Best Practices OpenSSF Scorecard Artifact HUB

What is Argo Rollouts?

Argo Rollouts is a Kubernetes controller and set of CRDs which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation, and progressive delivery features to Kubernetes.

Argo Rollouts (optionally) integrates with ingress controllers and service meshes, leveraging their traffic shaping abilities to gradually shift traffic to the new version during an update. Additionally, Rollouts can query and interpret metrics from various providers to verify key KPIs and drive automated promotion or rollback during an update.

Argo Rollotus Demo

Quick Start

kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml

Follow the full getting started guide to walk through creating and then updating a rollout object.

Why Argo Rollouts?

Kubernetes Deployments provides the RollingUpdate strategy which provide a basic set of safety guarantees (readiness probes) during an update. However the rolling update strategy faces many limitations:

  • Few controls over the speed of the rollout
  • Inability to control traffic flow to the new version
  • Readiness probes are unsuitable for deeper, stress, or one-time checks
  • No ability to query external metrics to verify an update
  • Can halt the progression, but unable to automatically abort and rollback the update

For these reasons, in large scale high-volume production environments, a rolling update is often considered too risky of an update procedure since it provides no control over the blast radius, may rollout too aggressively, and provides no automated rollback upon failures.

Features

  • Blue-Green update strategy
  • Canary update strategy
  • Fine-grained, weighted traffic shifting
  • Automated rollbacks and promotions
  • Manual judgement
  • Customizable metric queries and analysis of business KPIs
  • Ingress controller integration: NGINX, ALB, Apache APISIX
  • Service Mesh integration: Istio, Linkerd, SMI
  • Metric provider integration: Prometheus, Wavefront, Kayenta, Web, Kubernetes Jobs, Datadog, New Relic, InfluxDB

Supported Traffic Shaping Integrations

Traffic Shaping Integration SetWeight SetWeightExperiments SetMirror SetHeader Implemented As Plugin
ALB Ingress Controller βœ… (stable) βœ… (stable) ❌ βœ… (alpha)
Ambassador βœ… (stable) ❌ ❌ ❌
Apache APISIX Ingress Controller βœ… (alpha) ❌ ❌ βœ… (alpha)
Istio βœ… (stable) βœ… (stable) βœ… (alpha) βœ… (alpha)
Nginx Ingress Controller βœ… (stable) ❌ ❌ ❌
SMI βœ… (stable) βœ… (stable) ❌ ❌
Traefik βœ… (beta) ❌ ❌ ❌
Contour βœ… (beta) ❌ ❌ ❌ βœ”οΈ
Gateway API βœ… (alpha) ❌ ❌ ❌ βœ”οΈ

βœ… = Supported

❌ = Not Supported

βœ”οΈ = Yes

Documentation

To learn more about Argo Rollouts go to the complete documentation.

Community

You can reach the Argo Rollouts community and developers via the following channels:

Who uses Argo Rollouts?

Official Argo Rollouts User List

Community Blogs and Presentations

More Repositories

1

argo-cd

Declarative Continuous Deployment for Kubernetes
Go
17,515
star
2

argo-workflows

Workflow Engine for Kubernetes
Go
14,835
star
3

argo-events

Event-driven Automation Framework for Kubernetes
Go
2,328
star
4

argo-helm

ArgoProj Helm Charts
Mustache
1,685
star
5

gitops-engine

Democratizing GitOps
Go
1,672
star
6

argocd-example-apps

Example Apps to Demonstrate Argo CD
Jsonnet
1,516
star
7

argoproj

Common project repo for all Argo Projects
Python
595
star
8

applicationset

The ApplicationSet controller manages multiple Argo CD Applications as a single ApplicationSet unit, supporting deployments to large numbers of clusters, deployments of large monorepos, and enabling secure Application self-service.
Go
588
star
9

notifications-engine

Affordable notifications for Kubernetes
Go
271
star
10

argoproj-deployments

Deployment repository for Argoproj CI/CD
HCL
228
star
11

argo-ui

Argoproj shared React components
TypeScript
220
star
12

argo-ci

Continuous integration and delivery for Kubernetes powered by Argo workflows.
TypeScript
200
star
13

rollouts-demo

Go
182
star
14

pkg

Argo shared libraries between argo projects
Go
36
star
15

data-pipeline

Python
36
star
16

argo-schema-generator

Tool that generates a kustomize schema file for Argo CD, Argo Rollouts, Argo Workflows, and Argo Events
Go
28
star
17

argo-ml-demo

Demonstration of using an Argo workflow for an ML application
Python
28
star
18

argo-site

JavaScript
15
star
19

argo-cd-ui

TypeScript
15
star
20

homebrew-tap

Homebrew Tap for argo
Ruby
14
star
21

argo-cd-hello-world-app

A basic golang app with a travis pipeline that deploys into a k8s cluster using Argo-CD
Makefile
14
star
22

argocon21

JavaScript
8
star
23

argoproj.github.io

Generated from https://github.com/argoproj/argo-site
HTML
5
star
24

ui-lib

TypeScript
5
star
25

argo-cd-hello-world-config

Shell
4
star
26

argo-conformance-program

A standard to ensure interoperability, protect users, and prevent surprises when using commercial offerings with Argo in the name.
4
star
27

community-contrib-docs

3
star
28

argo-events-old

This repo is now obsolete. Please check out https://github.com/argoproj/argo-events
3
star
29

image-processing-demo

Python
3
star
30

kubecon-sandbox

KubeCon Sandbox for demonstrating Argo CD
Shell
3
star
31

.github

3
star
32

kubeflow-ks

Example repo that stores the ksonnet files of Kubeflow v0.3.0
Shell
2
star
33

katacoda-scenarios

Shell
1
star