Files
flagger/docs/README.md
2019-08-19 17:28:50 +03:00

94 lines
4.4 KiB
Markdown

---
title: Flagger
meta:
- name: "keywords"
content: "gitops kubernetes flagger istio linkerd appmesh"
- name: "twitter:card"
content: "summary_large_image"
- name: "twitter:title"
content: "Flagger"
- name: "twitter:description"
content: "Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)"
- name: "twitter:image:src"
content: "https://flagger.app/flagger-overview.png"
home: true
heroText: Flagger
tagline: Progressive Delivery Operator for Kubernetes
actionText: Get Started →
actionLink: https://docs.flagger.app
features:
- title: Safer Releases
details: Reduce the risk of introducing a new software version in production by gradually shifting traffic to the new version while measuring metrics like HTTP/gRPC request success rate and latency.
- title: Flexible Traffic Routing
details: Shift and route traffic between app versions using a service mesh like Istio, Linkerd or AWS App Mesh. If you're not using a service mesh then an ingress controller like NGINX or Gloo can also be used.
- title: Extensible Validation
details: Besides the builtin metrics checks, the application analysis can be extended with custom Prometheus metrics and webhooks for running acceptance tests, load tests, or any other custom validation.
footer: Apache License 2.0 | Copyright © 2019 Weaveworks
---
## Progressive Delivery
Flagger was designed to give developers confidence in automating production releases with progressive delivery techniques.
::: tip Canary release
A benefit of using canary releases is the ability to do capacity testing of the new version in a production environment
with a safe rollback strategy if issues are found. By slowly ramping up the load, you can monitor and capture metrics
about how the new version impacts the production environment.
[Martin Fowler](https://martinfowler.com/bliki/CanaryRelease.html)
:::
Flagger can run automated application analysis, testing, promotion and rollback for the following deployment strategies:
* **Canary** (progressive traffic shifting)
* [Istio](https://docs.flagger.app/usage/progressive-delivery),
[Linkerd](https://docs.flagger.app/usage/linkerd-progressive-delivery),
[App Mesh](https://docs.flagger.app/usage/appmesh-progressive-delivery),
[NGINX](https://docs.flagger.app/usage/nginx-progressive-delivery),
[Gloo](https://docs.flagger.app/usage/gloo-progressive-delivery)
* **A/B Testing** (HTTP headers and cookies traffic routing)
* [Istio](https://docs.flagger.app/usage/ab-testing),
[NGINX](https://docs.flagger.app/usage/nginx-progressive-delivery#a-b-testing)
* **Blue/Green** (traffic switching)
* [Kubernetes CNI](https://docs.flagger.app/usage/blue-green)
Flagger can be configures to send notifications to a
[Slack](https://docs.flagger.app/usage/alerting#slack) or
[Microsoft Teams](https://docs.flagger.app/usage/alerting#microsoft-teams) channel.
It will post messages when a deployment has been initialised,
when a new revision has been detected and if the canary analysis failed or succeeded.
## GitOps
![GtiOps with Flagger and FluxCD](/flagger-gitops.png)
You can build fully automated GitOps pipelines for canary deployments with Flagger and
[FluxCD](https://github.com/fluxcd) (CNCF sandbox project).
::: tip GitOps
GitOps is a way to do Kubernetes cluster management and application delivery.
It works by using Git as a single source of truth for declarative infrastructure and applications.
With Git at the center of your delivery pipelines, developers can make pull requests
to accelerate and simplify application deployments and operations tasks to Kubernetes.
[Weaveworks](https://www.weave.works/technologies/gitops/)
:::
GitOps tutorials:
* [Progressive Delivery for Istio with Flagger and Flux](https://github.com/stefanprodan/gitops-istio)
* [Progressive Delivery for Linkerd with Flagger and Flux](https://helm.workshop.flagger.dev)
## Getting Help
If you have any questions about Flagger and progressive delivery:
* Read the Flagger [docs](https://docs.flagger.app).
* Invite yourself to the [Weave community slack](https://slack.weave.works/)
and join the [#flagger](https://weave-community.slack.com/messages/flagger/) channel.
* Join the [Weave User Group](https://www.meetup.com/pro/Weave/) and get invited to online talks,
hands-on training and meetups in your area.
* File an [issue](https://github.com/weaveworks/flagger/issues/new).
Your feedback is always welcome!