diff --git a/CHANGELOG.md b/CHANGELOG.md index f63b63f7..c09358e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project are documented in this file. +## 0.17.0 (2019-07-08) + +Adds support for Linkerd (SMI Traffic Split API), MS Teams notifications and HA mode with leader election + +#### Features + +- Add Linkerd support [#230](https://github.com/weaveworks/flagger/pull/230) +- Implement MS Teams notifications [#235](https://github.com/weaveworks/flagger/pull/235) +- Implement leader election [#236](https://github.com/weaveworks/flagger/pull/236) + +#### Improvements + +- Add [Kustomize](https://docs.flagger.app/install/flagger-install-on-kubernetes#install-flagger-with-kustomize) installer [#232](https://github.com/weaveworks/flagger/pull/232) +- Add Pod Security Policy to Helm chart [#234](https://github.com/weaveworks/flagger/pull/234) + ## 0.16.0 (2019-06-23) Adds support for running [Blue/Green deployments](https://docs.flagger.app/usage/blue-green) without a service mesh or ingress controller diff --git a/README.md b/README.md index 330f18e8..3279e711 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) @@ -67,7 +68,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 @@ -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_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: | :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/artifacts/flagger/deployment.yaml b/artifacts/flagger/deployment.yaml index cf6183ed..e387b095 100644 --- a/artifacts/flagger/deployment.yaml +++ b/artifacts/flagger/deployment.yaml @@ -22,7 +22,7 @@ spec: serviceAccountName: flagger containers: - name: flagger - image: weaveworks/flagger:0.16.0 + image: weaveworks/flagger:0.17.0 imagePullPolicy: IfNotPresent ports: - name: http diff --git a/charts/flagger/Chart.yaml b/charts/flagger/Chart.yaml index aecba758..959f0b00 100644 --- a/charts/flagger/Chart.yaml +++ b/charts/flagger/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: flagger -version: 0.16.0 -appVersion: 0.16.0 +version: 0.17.0 +appVersion: 0.17.0 kubeVersion: ">=1.11.0-0" engine: gotpl description: Flagger is a Kubernetes operator that automates the promotion of canary deployments using Istio, App Mesh or NGINX routing for traffic shifting and Prometheus metrics for canary analysis. diff --git a/charts/flagger/values.yaml b/charts/flagger/values.yaml index 185b0a53..7adea618 100644 --- a/charts/flagger/values.yaml +++ b/charts/flagger/values.yaml @@ -2,7 +2,7 @@ image: repository: weaveworks/flagger - tag: 0.16.0 + tag: 0.17.0 pullPolicy: IfNotPresent metricsServer: "http://prometheus:9090" 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..244fb773 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?** @@ -375,10 +377,10 @@ In order for Flagger to be able to call the load tester service from outside the apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: - name: flagger-namespace - namespace: flagger + name: flagger-loadtester + namespace: test spec: - host: "*.flagger.svc.cluster.local" + host: "flagger-loadtester.test.svc.cluster.local" trafficPolicy: tls: mode: DISABLE @@ -386,8 +388,8 @@ spec: apiVersion: authentication.istio.io/v1alpha1 kind: Policy metadata: - name: loadtester-mtls-disabled - namespace: flagger + name: flagger-loadtester + namespace: test spec: targets: - name: flagger-loadtester 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 diff --git a/kustomize/base/flagger/kustomization.yaml b/kustomize/base/flagger/kustomization.yaml index 620bece3..1eb01eac 100644 --- a/kustomize/base/flagger/kustomization.yaml +++ b/kustomize/base/flagger/kustomization.yaml @@ -8,4 +8,4 @@ resources: - deployment.yaml images: - name: weaveworks/flagger - newTag: 0.16.0 + newTag: 0.17.0 diff --git a/pkg/version/version.go b/pkg/version/version.go index c3168c4a..7ee4a5f4 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -1,4 +1,4 @@ package version -var VERSION = "0.16.0" +var VERSION = "0.17.0" var REVISION = "unknown"