diff --git a/README.md b/README.md index 330f18e8..d606098c 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,13 @@ [![release](https://img.shields.io/github/release/weaveworks/flagger/all.svg)](https://github.com/weaveworks/flagger/releases) Flagger is a Kubernetes operator that automates the promotion of canary deployments -using Istio, App Mesh, NGINX or Gloo routing for traffic shifting and Prometheus metrics for canary analysis. +using Istio, Linkerd, App Mesh, NGINX or Gloo routing for traffic shifting and Prometheus metrics for canary analysis. The canary analysis can be extended with webhooks for running acceptance tests, load tests or any other custom validation. Flagger implements a control loop that gradually shifts traffic to the canary while measuring key performance indicators like HTTP requests success rate, requests average duration and pods health. -Based on analysis of the KPIs a canary is promoted or aborted, and the analysis result is published to Slack. +Based on analysis of the KPIs a canary is promoted or aborted, and the analysis result is published to Slack or MS Teams. ![flagger-overview](https://raw.githubusercontent.com/weaveworks/flagger/master/docs/diagrams/flagger-canary-overview.png) @@ -39,6 +39,7 @@ Flagger documentation can be found at [docs.flagger.app](https://docs.flagger.ap * Usage * [Istio canary deployments](https://docs.flagger.app/usage/progressive-delivery) * [Istio A/B testing](https://docs.flagger.app/usage/ab-testing) + * [Linkerd canary deployments](https://docs.flagger.app/usage/linkerd-progressive-delivery) * [App Mesh canary deployments](https://docs.flagger.app/usage/appmesh-progressive-delivery) * [NGINX ingress controller canary deployments](https://docs.flagger.app/usage/nginx-progressive-delivery) * [Gloo ingress controller canary deployments](https://docs.flagger.app/usage/gloo-progressive-delivery) @@ -155,19 +156,19 @@ For more details on how the canary analysis and promotion works please [read the ## Features -| Feature | Istio | App Mesh | NGINX | Gloo | -| -------------------------------------------- | ------------------ | ------------------ |------------------ |------------------ | -| Canary deployments (weighted traffic) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| A/B testing (headers and cookies filters) | :heavy_check_mark: | :heavy_minus_sign: | :heavy_check_mark: | :heavy_minus_sign: | -| Webhooks (acceptance/load testing) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Request success rate check (L7 metric) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Request duration check (L7 metric) | :heavy_check_mark: | :heavy_minus_sign: | :heavy_check_mark: | :heavy_check_mark: | -| Custom promql checks | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Traffic policy, CORS, retries and timeouts | :heavy_check_mark: | :heavy_minus_sign: | :heavy_minus_sign: | :heavy_minus_sign: | +| Feature | Istio | Linkerd | App Mesh | NGINX | Gloo | +| -------------------------------------------- | ------------------ | ------------------ |------------------ |------------------ |------------------ | +| Canary deployments (weighted traffic) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| A/B testing (headers and cookies filters) | :heavy_check_mark: | :heavy_minus_sign: | :heavy_minus_sign: | :heavy_check_mark: | :heavy_minus_sign: | +| Webhooks (acceptance/load testing) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Request success rate check (L7 metric) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Request duration check (L7 metric) | :heavy_check_mark: | :heavy_minus_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Custom promql checks | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Traffic policy, CORS, retries and timeouts | :heavy_check_mark: | :heavy_minus_sign: | :heavy_minus_sign: | :heavy_minus_sign: | :heavy_minus_sign: | ## Roadmap -* Integrate with other service mesh technologies like Linkerd v2 +* Integrate with other ingress controllers like Contour, HAProxy, ALB * Add support for comparing the canary metrics to the primary ones and do the validation based on the derivation between the two ## Contributing diff --git a/docs/diagrams/flagger-canary-overview.png b/docs/diagrams/flagger-canary-overview.png index 161a7937..c703c1c8 100644 Binary files a/docs/diagrams/flagger-canary-overview.png and b/docs/diagrams/flagger-canary-overview.png differ diff --git a/docs/diagrams/flagger-canary-steps.png b/docs/diagrams/flagger-canary-steps.png index 58621680..b27f2c10 100644 Binary files a/docs/diagrams/flagger-canary-steps.png and b/docs/diagrams/flagger-canary-steps.png differ diff --git a/docs/diagrams/flagger-overview.png b/docs/diagrams/flagger-overview.png index 161a7937..c703c1c8 100644 Binary files a/docs/diagrams/flagger-overview.png and b/docs/diagrams/flagger-overview.png differ diff --git a/docs/gitbook/SUMMARY.md b/docs/gitbook/SUMMARY.md index f3ec961f..b842f7a3 100644 --- a/docs/gitbook/SUMMARY.md +++ b/docs/gitbook/SUMMARY.md @@ -15,6 +15,7 @@ * [Istio Canary Deployments](usage/progressive-delivery.md) * [Istio A/B Testing](usage/ab-testing.md) +* [Linkerd Canary Deployments](usage/linkerd-progressive-delivery.md) * [App Mesh Canary Deployments](usage/appmesh-progressive-delivery.md) * [NGINX Canary Deployments](usage/nginx-progressive-delivery.md) * [Gloo Canary Deployments](usage/gloo-progressive-delivery.md) diff --git a/docs/gitbook/faq.md b/docs/gitbook/faq.md index edfc5332..7f404730 100644 --- a/docs/gitbook/faq.md +++ b/docs/gitbook/faq.md @@ -6,11 +6,13 @@ Flagger can run automated application analysis, promotion and rollback for the following deployment strategies: * Canary (progressive traffic shifting) + * Istio, Linkerd, App Mesh, NGINX, Gloo * A/B Testing (HTTP headers and cookies traffic routing) + * Istio, NGINX * Blue/Green (traffic switch) + * Kubernetes CNI -For canary deployments you'll need a Layer 7 traffic management solution like a service mesh (Istio, App Mesh) or an ingress controller (NGINX, Gloo). -For A/B testing you'll need a Layer 7 traffic management solution that's capable of routing requests based on HTTP headers and cookies (Istio, NGINX). +For Canary deployments and A/B testing you'll need a Layer 7 traffic management solution like a service mesh or an ingress controller. For Blue/Green deployments no service mesh or ingress controller is required. **When should I use A/B testing instead of progressive traffic shifting?** diff --git a/docs/gitbook/how-it-works.md b/docs/gitbook/how-it-works.md index 51f9a4f1..1f41f2c9 100644 --- a/docs/gitbook/how-it-works.md +++ b/docs/gitbook/how-it-works.md @@ -2,7 +2,7 @@ [Flagger](https://github.com/weaveworks/flagger) takes a Kubernetes deployment and optionally a horizontal pod autoscaler \(HPA\) and creates a series of objects -\(Kubernetes deployments, ClusterIP services and Istio or App Mesh virtual services\) to drive the canary analysis and promotion. +\(Kubernetes deployments, ClusterIP services, virtual service, traffic split or ingress\) to drive the canary analysis and promotion. ![Flagger Canary Process](https://raw.githubusercontent.com/weaveworks/flagger/master/docs/diagrams/flagger-canary-hpa.png) @@ -18,7 +18,7 @@ metadata: namespace: test spec: # service mesh provider (optional) - # can be: kubernetes, istio, appmesh, smi, nginx, gloo, supergloo + # can be: kubernetes, istio, linkerd, appmesh, nginx, gloo, supergloo # use the kubernetes provider for Blue/Green style deployments provider: istio # deployment reference