At the heart of GitOps is an model of ‘Operations by Pull Request’, explained in this video presentation from Alexis Richardson, Founder and CEO of Weaveworks,
and in their blog:
“What exactly is GitOps? By using Git as our source of truth, we can operate almost everything. For example, version control, history, peer review, and rollback happen through Git without needing to poke around with tools like kubectl.
- Our provisioning of AWS resources and deployment of k8s is declarative
- Our entire system state is under version control and described in a single Git repository
- Operational changes are made by pull request (plus build & release pipelines)
- Diff tools detect any divergence and notify us via Slack alerts; and sync tools enable convergence
- Rollback and audit logs are also provided via Git “
Alex explains the role of the Weaveworks technology:
Our product Weave Cloud provides tools for cloud native applications using GitOps patterns. The core of our GitOps machinery is the CICD tooling. For us, the critical piece is continuous deployment (CD) and release management. This is based on our open source project Weave Flux which supports Git-cluster synchronisation, and so is designed for version controlled systems and declarative application stacks.
“In the “GitOps” model, we use Git to solve for divergence and convergence, aided by a set of “diff” and “sync” tools that compare intended with actual state. A full write up is here.”
The GitOps Pipeline
In their blog The GitOps Pipeline Weaveworks explain that:
“GitOps is a way to do Continuous Delivery. It works by using Git as a source of truth for declarative infrastructure and applications. Automated delivery pipeline automatically roll out changes to your infrastructure when changes are made to Git.
But the idea goes further – using tools to look at the actual production state, and tell you when what’s source code doesn’t match the real world, giving you the ability to spot the differences and fix problems accordingly. In other words GitOps extends pipelines with a feedback loop for observing and controlling the system.”
“To do this, GitOps aims to make developers more productive by applying familiar tools to the hard things: operations management and monitoring. Every developer can use Git and make pull requests; now they can use Git to accelerate and simplify operational tasks for Kubernetes etc. The benefits are far reaching:
- a model for cloud native CICD pipelines;
- faster mean time to deployment and mean time to recovery,
- actionable alerting,
- stable rollbacks (ie., revert/rollback/fork as per Git);
- and an overall coherent approach to understanding, observing and managing apps.”
Weave Flux enables GitOps deployment and natively understands how to manage deployments on Kubernetes, automating the staging and release of containers to Kubernetes, as well as services, deployments, network policies and even Istio routing rules.
It can be seen as a leaner, Kubernetes-native alternative to Spinnaker.