Initially, we had the DevOps framework in which Development and Operation team collaborated to create an agile development ecosystem. Then a new wave came with the name of “DevSecOps” in which we integrated the security into the existing DevOps process. But nowadays a new terminology “GitOps” is getting famous because of its “Single Source of Truth” nature. 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.
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.
Since GitOps has become so much popular, the opensource 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!!
Opstree is an End to End DevOps solution provider
5 thoughts on “Why GitOps is so exciting?”
Its really interesting to know about gitops, is it possible to share how you implemented gitops in your project. Looking forward on gitops deployment on k8
LikeLiked by 3 people
Sure I will write a blog for using GitOps with Kubernetes
Can Gitlab be used to implement gitops as it has built in CI/CD pipeline, registry and container orchestration support?
LikeLiked by 1 person
Yes, any CI tool can be used to fulfill the requirement of GitOps, because it is an approach which can be achieved by any CI/CD tool.