There is a lot of terminology these days, between DevOps, SecOps, DevSecOps, and GitOps. It can be hard to keep track of everything and the benefits of each approach. Let's explore GitOps.
What is GitOps?
GitOps is a set of best practices designed to help manage infrastructure and application configuration using Git. Git is an open source version control system.
GitOps is built around the Developer experience. But it can help the Operations teams manage infrastructure. Using the same processes and tools that Developers use for software development. When using GitOps, Git is the central tool but all other tools can be chosen as needed.
GitOps uses a central Git repository that contains the entire state of the system. It uses Git pull requests to automatically manage and deploy infrastructure or software.
The Git repository gives you a trail of changes that can be auditable.
Why do you need GitOps?
The main benefit of GitOps is about accountability and automation. Using version control for your infrastructure and software makes it traceable.
Want to find out why changes to the network were made? Or when a version of software was rolled out to a certain environment or customer? You have that trace log within your Git repository.
Automation is the second key benefit, once you have your changes approved, you kick off the deployment of those changes right away. In a repeatable consistent manner.
GitOps vs DevOps?
There is a lot of overlap between GitOps and DevOps but there are a lot of differences as well.
DevOps is a culture that focuses on Continuous Integration (CI)/Continuous Delivery (CD) but isn't attached to any tool. Where as GitOps is an approach that focuses on deployment of infrastructure and software using Git as the main tool.
GitOps focusses mainly on doing DevOps correctly where as DevOps's main focus on automation and frequent deployments.
GitOps also focusses on correctness, and is quite a strict approach, where as DevOps is less strict and is open to more flexibility.
How GitOps integrates with DevOps
Because there are a lot of shared principles between GitOps and DevOps, it can be quite easy to adopt a GitOps workflow into your DevOps practices.
Git is one of the most popular, if not the most popular, version control tool. So as more companies adopt the use of that tool the easier it is to adopt the overall workflow of GitOps.
Storing all your configuration and system states within Git and as Infrastructure as Code can significantly increase productivity. Being able to roll out changes quickly or roll back from changes quickly.
Is GitOps just for Kubernetes?
No it's isn't just for Kubernetes. GitOps is often associated with Kubernetes because it's configuration can be entirely declarative in the form of YAML manifests. And lends itself very well to being stored inside version control.
If you are looking to learn more about Git, or learn some tips and tricks that can help enhance your knowledge, check out my Git for everyone series of blogs.