All notable changes to this project are documented in this file.
Adds wrk to load tester tools and the App Mesh gateway chart to Flagger Helm repository
Adds support for exposing canaries outside the cluster using App Mesh Gateway annotations
- Expose canaries on public domains with App Mesh Gateway #358
- Use the specified replicas when scaling up the canary #363
Fixes promql execution and updates the load testing tools
Adds support for A/B Testing and retry policies when using App Mesh
- Implement App Mesh A/B testing based on HTTP headers match conditions #340
- Implement App Mesh HTTP retry policy #338
- Implement metrics server override #342
- Add the app/name label to services and primary deployment #333
- Allow setting Slack and Teams URLs with env vars #334
- Refactor Gloo integration #344
- Generate unique names for App Mesh virtual routers and routes #336
Adds support for canary and blue/green traffic mirroring
Adds support for App Mesh conformance tests and latency metric checks
- Add support for acceptance testing when using App Mesh #322
- Add Kustomize installer for App Mesh #310
- Update Linkerd to v2.5.0 and Prometheus to v2.12.0 #323
- Fix slack/teams notification fields mapping #318
Adds support for confirm-promotion webhooks and blue/green deployments when using a service mesh
- Canary promotion improvements to avoid dropping in-flight requests #310
- Update end-to-end tests to Kubernetes v1.15.3 and Istio 1.3.0 #306
- Skip primary check for App Mesh #315
Adds support for NGINX custom annotations and Helm v3 acceptance testing
- Add annotations prefix for NGINX ingresses #293
- Add wide columns in CRD #289
- loadtester: implement Helm v3 test command #296
- loadtester: add gPRC health check to load tester image #295
- loadtester: fix tests error logging #286
Adds support for tillerless helm tests and protobuf health checking
- loadtester: add support for tillerless helm #280
- loadtester: add support for protobuf health checking #280
- Set HTTP listeners for AppMesh virtual routers #272
Fixes multi-port support for Istio
- Fix port discovery for multiple port services #267
- Update e2e testing to Istio v1.2.3, Gloo v0.18.8 and NGINX ingress chart v1.12.1 #268
Fixes Blue/Green style deployments for Kubernetes and Linkerd providers
- Fix Blue/Green metrics provider and add e2e tests #261
Adds support for manual gating and pausing/resuming an ongoing analysis
- Implement confirm rollout gate, hook and API #251
- Refactor canary change detection and status #240
- Implement finalising state #257
- Add gRPC load testing tool #248
- Due to the status sub-resource changes in #240, when upgrading Flagger the canaries status phase will be reset to
Initialized
- Upgrading Flagger with Helm will fail due to Helm poor support of CRDs, see workaround
Adds support for Linkerd (SMI Traffic Split API), MS Teams notifications and HA mode with leader election
Adds support for running Blue/Green deployments without a service mesh or ingress controller
- Allow blue/green deployments without a service mesh provider #211
- Add the service mesh provider to the canary spec #217
- Allow multi-port services and implement port discovery #207
- Add FAQ page to docs website
- Switch to go modules in CI #218
- Update e2e testing to Kubernetes Kind 0.3.0 and Istio 1.2.0
- Update the primary HPA on canary promotion #216
Adds support for customising the Istio traffic policy in the canary service spec
- Generate Istio destination rules and allow traffic policy customisation #200
- Update Kubernetes packages to 1.14 and use go modules instead of dep #202
Adds support for running acceptance/integration tests with Helm test or Bash Bats using pre-rollout hooks
- Implement Helm and Bash pre-rollout hooks #196
- Fix promoting canary when max weight is not a multiple of step #190
- Add ability to set Prometheus url with custom path without trailing '/' #197
Adds support for Service Mesh Interface and Gloo ingress controller
- Add support for SMI (Istio weighted traffic) #180
- Add support for Gloo ingress controller (weighted traffic) #179
Fixes for Jenkins X deployments (prevent the jx GC from removing the primary instance)
- Do not copy labels from canary to primary deployment #178
- Add NGINX ingress controller e2e and unit tests #176
Fixes for custom metrics checks and NGINX Prometheus queries
- Fix promql queries for custom checks and NGINX #174
Adds support for NGINX ingress controller
- Add support for nginx ingress controller (weighted traffic and A/B testing) #170
- Add Prometheus add-on to Flagger Helm chart for App Mesh and NGINX 79b3370
- Fix duplicate hosts Istio error when using wildcards #162
Adds support for SuperGloo
- Supergloo support for canary deployment (weighted traffic) #151
Move Flagger and the load tester container images to Docker Hub
- Add Bash Automated Testing System support to Flagger tester for running acceptance tests as pre-rollout hooks
Adds pre/post rollout webhooks
- Add
pre-rollout
andpost-rollout
webhook types #147
- Set default
mesh
Istio gateway only if no gateway is specified #141
Adds support for App Mesh
- Reconcile Kubernetes ClusterIP services #122
Allows A/B testing scenarios where instead of weighted routing, the traffic is split between the primary and canary based on HTTP headers or cookies.
- A/B testing - canary with session affinity #88
- Update the analysis interval when the custom resource changes #91
Adds support for CORS policy and HTTP request headers manipulation
- Refactor the routing management #72 #80
- Fine-grained RBAC #73
- Add option to limit Flagger to a single namespace #78
Adds support for custom metric checks, HTTP timeouts and HTTP retries
- Allow custom promql queries in the canary analysis spec #60
- Add HTTP timeout and retries to canary service spec #62
Allows for HTTPMatchRequests and HTTPRewrite to be customized in the service spec of the canary custom resource.
- Add HTTP match conditions and URI rewrite to the canary service spec #55
- Update virtual service when the canary service spec changes #54 #51
- Run e2e testing on Kubernetes Kind for canary promotion #53
Allows skipping the analysis phase to ship changes directly to production
- Add option to skip the canary analysis #46
- Reject deployment if the pod label selector doesn't match
app: <DEPLOYMENT_NAME>
#43
Track changes in ConfigMaps and Secrets #37
- Promote configmaps and secrets changes from canary to primary
- Detect changes in configmaps and/or secrets and (re)start canary analysis
- Add configs checksum to Canary CRD status
- Create primary configmaps and secrets at bootstrap
- Scan canary volumes and containers for configmaps and secrets
- Copy deployment labels from canary to primary at bootstrap and promotion
Load testing webhook #35
- Add the load tester chart to Flagger Helm repository
- Implement a load test runner based on rakyll/hey
- Log warning when no values are found for Istio metric due to lack of traffic
- Run wekbooks before the metrics checks to avoid failures when using a load tester
Restart canary analysis if revision changes #31
- Drop support for Kubernetes 1.10
- Detect changes during canary analysis and reset advancement
- Add status and additional printer columns to CRD
- Add canary name and namespace to controller structured logs
- Allow canary name to be different to the target name
- Check if multiple canaries have the same target and log error
- Use deep copy when updating Kubernetes objects
- Skip readiness checks if canary analysis has finished
Configurable canary analysis duration #20
- Helm chart: flag
controlLoopInterval
has been removed
- CRD: canaries.flagger.app v1alpha3
- Schedule canary analysis independently based on
canaryAnalysis.interval
- Add analysis interval to Canary CRD (defaults to one minute)
- Make autoscaler (HPA) reference optional
Webhooks #18
- CRD: canaries.flagger.app v1alpha2
- Implement canary external checks based on webhooks HTTP POST calls
- Add webhooks to Canary CRD
- Move docs to gitbook docs.flagger.app
Improve Slack notifications #14
- Add canary analysis metadata to init and start Slack messages
- Add rollback reason to failed canary Slack messages
Canary progress deadline #10
- Rollback canary based on the deployment progress deadline check
- Add progress deadline to Canary CRD (defaults to 10 minutes)
First stable release
- CRD: canaries.flagger.app v1alpha1
- Notifications: post canary events to Slack
- Instrumentation: expose Prometheus metrics for canary status and traffic weight percentage
- Autoscaling: add HPA reference to CRD and create primary HPA at bootstrap
- Bootstrap: create primary deployment, ClusterIP services and Istio virtual service based on CRD spec
Initial semver release
- Implement canary rollback based on failed checks threshold
- Scale up the deployment when canary revision changes
- Add OpenAPI v3 schema validation to Canary CRD
- Use CRD status for canary state persistence
- Add Helm charts for Flagger and Grafana
- Add canary analysis Grafana dashboard