This is the first of two posts on the topic of GitOps, the next one will make a deep dive into ArgoCD.
In the era of microservices and containers, more and more apps need to be managed, and to meet user demand that require availability 24/7/365, the complexity of delivery increases rapidly. GitOps is a concept that takes DevOps best practices used in application development and applies them to infrastructure automation, including version control, CI/CD, compliance and teamwork. This can be described as a paradigm shift that empowers development teams to perform tasks that traditionally were delivered by IT operations.
Historically Git has mainly been used to maintain application code, but with GitOps we have the possibility to reuse the well known functionality of version control to maintain everything from virtual machines and network configurations to monitoring dashboards and documentation. GitOps is a concept where the state of your infrastructure and applications are described declaratively using Git.
The goal is to keep the entire system’s state, or the exact truth of what exists in it, in an immutable way in git. Together with a Kubernetes operator like ArgoCD, we can automate the process of reconciling, rollback, or in other ways manage our systems in an easy and version controlled manner.
Here are three benefits we like to address a little extra.
1. Declaratively described infrastructure
GitOps improves the concept of IAC (Infrastructure as Code) by not limiting what type of resources that can be managed, and at the same time enabling automation. A declarative approach makes it easier to develop and maintain these resources.
2. Integration with Kubernetes
GitOps fits well into the Kubernetes eco system since they are both based around declarative principles. By implementing GitOps we can extend the Kubernetes environment outside the cluster itself. With the benefit of the Kubernetes Operator pattern and everything else that Kubernetes natively delivers.
3. Productive, stable and reliable
By utilizing GitOps, and more specifically git, we move infrastructure development closer to what developers are already comfortable with. Pull requests, automated pipelines with regression tests, codeowner structure etc. are all tools that are made accessible by moving to git. It also enables improved release frequency, which keeps infrastructure up to date and adds the possibility to easily rollback fault releases.
You will be able to read more on how to use GitOps with ArgoCD in the upcoming post.