Why GitOps is so exciting?

Written by abhishek-dubey | Published 2020/02/18
Tech Story Tags: devops | development | gitops | cloud-native | git | kubernetes | automation | programming

TLDR GitOps entails using Git and Pull/Merge Request to manage all stages of software development. Git is a methodology that uses Git as a single source of truth for declarative infrastructure and applications. It states everything should be kept in the form of code be it the application or any other component which application needed. It states Git is always right. The master branch reflects the state of the system. Build, Test and Deploy will happen automatically relying on the truth in the repository. Infrastructure creation and application deployment will be part of this.via the TL;DR App

Initially, we have seen DevOps, DevSecOps and many other ops but nowadays a new terminology “GitOps” is getting famous. Its fame has reached to this level that it was a trending topic at KubeCon.
So just like everyone I also got curious about it and started reading about it and then thanks to my company I also got the chance to implement it for one of our projects.
Also, a lot of people think that GitOps is only for containers and its orchestration tools. This isn’t true because GitOps is a philosophical approach, yes I agree GitOps are primarily used in the containerized workflow because of its high level of agility but we can use GitOps in the non-containerized environment as well using plane CI-CD tools like Jenkins.

What is GitOps?

In a nutshell, GitOps entails using Git and Pull/Merge Request to manage all stages of software development. Whereas the developer has used Git to manage application source code, GitOps uses Git to share information and coordinate activities like infra provisioning, application deployment.
Also, we can say that GitOps is a methodology that uses Git as a single source of truth for declarative infrastructure and applications.

GitOps Feature set

GitOps provides a lot of features we cannot list down all features but yes we can highlight some important features of it.
  • Single Source of Truth:- The first and most important principle of GitOps. It states Git is always right. You can understand the whole system just by looking at Git because it has all the ingredients right there.
  • Everything as a Code:- It states everything should be kept in the form of code be it the application or any other component which application needed. In most cases, infrastructure is also defined in the form of code. For example:- Cloud VMs, Docker containers, Kubernetes Deployments.
  • CI/CD Automation:- This is the feature where the magic happens. Build, Test and Deploy will happen automatically relying on the truth in the repository. Infrastructure creation and application deployment will be part of this according to the infrastructure and configuration as a code.

Why GitOps?

One of the major benefits of using GitOps is its self-healing nature. Since git is the source of truth for the whole system, at any time if someone unintentionally modified the system it will be reverted back to keep sync with git.
Also, rollback is also quite easy in this scenario. In most cases, the master branch reflects the state of the system. If there is any kind of failure in the application and it needs to be rollbacked, it can be simply done by the reverting to the previous git state.
It also solves the issue of audit trail and transparency because everything is done via Pull Request. If something doesn’t work you have a single place to look for i.e. commit history.

Conclusion

Since GitOps has become so much popular, the open source communities are developing the tools for the same. As these tools get matured, GitOps implementation would be much easier.
Now I am assuming that you are also fascinated by GitOps.
Soon I will be writing a blog on GitOps implementation on Kubernetes using Jenkins.
Thanks for reading, I’d really appreciate any and all feedback, please leave your comment below if you guys have any feedback.
Cheers till next time!!

Written by abhishek-dubey | A DevOps Engineer currently working with the OpsTree
Published by HackerNoon on 2020/02/18