From 71137ba3bb116f9d198c498a78434c103e42a041 Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Thu, 6 Dec 2018 14:00:12 +0700 Subject: [PATCH] Release 0.1.2 --- artifacts/flagger/deployment.yaml | 2 +- charts/flagger/Chart.yaml | 2 +- charts/flagger/values.yaml | 2 +- docs/README.md | 20 +++++++++++++++++++- docs/flagger-0.1.2.tgz | Bin 0 -> 3454 bytes docs/grafana-0.1.0.tgz | Bin 6856 -> 6854 bytes docs/index.yaml | 22 +++++++++++++++++----- pkg/version/version.go | 2 +- 8 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 docs/flagger-0.1.2.tgz diff --git a/artifacts/flagger/deployment.yaml b/artifacts/flagger/deployment.yaml index 858caee3..3ca1f797 100644 --- a/artifacts/flagger/deployment.yaml +++ b/artifacts/flagger/deployment.yaml @@ -22,7 +22,7 @@ spec: serviceAccountName: flagger containers: - name: flagger - image: quay.io/stefanprodan/flagger:0.1.2-alpha.0 + image: quay.io/stefanprodan/flagger:0.1.2 imagePullPolicy: Always ports: - name: http diff --git a/charts/flagger/Chart.yaml b/charts/flagger/Chart.yaml index 9e02cd39..a86cffdc 100644 --- a/charts/flagger/Chart.yaml +++ b/charts/flagger/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: flagger version: 0.1.2 -appVersion: 0.1.2-alpha.0 +appVersion: 0.1.2 description: Flagger is a Kubernetes operator that automates the promotion of canary deployments using Istio routing for traffic shifting and Prometheus metrics for canary analysis. home: https://github.com/stefanprodan/flagger diff --git a/charts/flagger/values.yaml b/charts/flagger/values.yaml index 6637bd8e..c5b5b1b0 100644 --- a/charts/flagger/values.yaml +++ b/charts/flagger/values.yaml @@ -2,7 +2,7 @@ image: repository: quay.io/stefanprodan/flagger - tag: 0.1.2-alpha.0 + tag: 0.1.2 pullPolicy: IfNotPresent controlLoopInterval: "10s" diff --git a/docs/README.md b/docs/README.md index 547d2b4c..00bb9c2b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -367,7 +367,25 @@ helm upgrade -i flagger flagger/flagger \ Once configured with a Slack incoming webhook, Flagger will post messages when a canary deployment has been initialized, when a new revision has been detected and if the canary analysis failed or succeeded. -![flagger-slack](https://raw.githubusercontent.com/stefanprodan/flagger/master/docs/screens/slack-notifications.png) +![flagger-slack](https://raw.githubusercontent.com/stefanprodan/flagger/master/docs/screens/slack-canary-success.png) + +A canary deployment will be rolled back if the progress deadline exceeded or if the analysis +reached the maximum number of failed checks: + +![flagger-slack-errors](https://raw.githubusercontent.com/stefanprodan/flagger/master/docs/screens/slack-canary-failed.png) + +Besides Slack, you can use Alertmanager to trigger alerts when a canary deployment failed: + +```yaml + - alert: canary_rollback + expr: flagger_canary_status > 1 + for: 1m + labels: + severity: warning + annotations: + summary: "Canary failed" + description: "Workload {{ $labels.name }} namespace {{ $labels.namespace }}" +``` ### Roadmap diff --git a/docs/flagger-0.1.2.tgz b/docs/flagger-0.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..86db16f2d45f3cb3157835b16f0a5bf81e894cb7 GIT binary patch literal 3454 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 literal 0 HcmV?d00001 diff --git a/docs/grafana-0.1.0.tgz b/docs/grafana-0.1.0.tgz index 2203b3fdc5104d398e63d6c6c7b864efdcf535cf..328951a91135f1ba31421c89fb3fdc1c1e1b1cef 100644 GIT binary patch delta 6798 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 delta 6800 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 yVWgsH=394iy0;<7UvcU