The Flux project is a popular Continuous Delivery (CD) platform that runs on top of Kubernetes. It's perhaps best known as the program, which defines GitOps. Now, the Cloud Native Computing Foundation (CNCF) has promoted Flux from the CNCF Sandbox to an incubating project.
What's GitOps, you ask? GitOps, as the name suggests, is based on Git, the open-source distributed version control system. In GitOps, Git source-code is a single foundation of truth for declarative infrastructure and applications.
Typically GitOps is used with Kubernetes cluster management and application delivery. Flux, and similar GitOps platforms such as Jenkins X and Argo CD, track changes between your Git repository and what's running on your Kubernetes cluster. When there's a difference, Kubernetes automatically updates or rollbacks the running code on the cluster. Or, as Kelsey Hightower, Google developer advocate for the Google Cloud Platform and Kubernetes, puts it: "GitOps is versioned CI/CD on top of declarative infrastructure. Stop scripting and start shipping."
Flux integrates with Helm, Prometheus, and Minio, and other cloud-native programs. The program includes a software development kit (SDK) for creating additional Flux controllers so it's easy to integrate with other CNCF projects.
Flux is comprised of three major components. These are:
- GitOps Toolkit: The set of APIs and controllers that make up the runtime for Flux. It can extend Flux and be used to build new systems for CD.
- Flagger: A progressive delivery tool that automates the release process for applications running on Kubernetes (Canary releases, A/B testing, Blue/Green mirroring).
- Flux v1 and Helm Operator: The first iteration of the Flux project, is currently in maintenance mode until v2 becomes generally available. It will then be deprecated.
Flux v2 builds on its earlier success. It will provide a comprehensive GitOps solution. In addition to what v1 brought to the table, Flux v2 will sync git repositories to local or remote clusters; automate updates; be Kubernetes-native, and include Progressive Delivery. This next version of Flux is in beta and its feature roadmap is already set.
While it's only just out of the incubator, Flux has already found many users. More than 80 organizations use it in production. This includes Fidelity Investments, Starbucks, and Plex Systems. The CNCF End User Community recommends Flux in its Adopt category of its Technology Radar on Continuous Delivery. Besides Helm, Flux is the only CD, the group recommends for adoption.
"Flux was the project that gave rise to 'GitOps,' which helps teams manage the complexity of operating Kubernetes, and has potential to expand well beyond," said Michael Bridgen, Flux's creator and project maintainer in a statement. "We're excited to move into incubation as we develop that potential and build out the GitOps Toolkit and Flux version 2."
You're going to be seeing more of Flux and other GitOps programs. As Chris Aniszczyk, the CNCF's CTO, explained, "GitOps started with the simple idea of using Git as the source of truth for declarative infrastructure to evolve to an ecosystem of tools that improves the developer experience of application delivery with Kubernetes. As more organizations adopt cloud-native software at scale, the adoption of GitOps tools like Flux will naturally follow."