Guest Writer
What is GitOps and Why Should Developers Care?
GitOps is a practice that involves the management of infrastructure and application configurations using Git. It is a game-changer in the DevOps ecosystem as it is a combination of IaC (infrastructure as code) and Git which makes it easy to implement and learn.
In this article, you’ll learn what GitOps is, how it came into existence, and why you should pay close attention and care about it.

What is GitOps?
GitOps is an architectural design pattern for many Infrastructure and Cloud-Native applications pioneered in 2017 by the folks at Weaveworks. It involves using Git as the main and only source of truth for a codified infrastructure and implementing a continuous deployment system.
Since its inception, GitOps has become one of the major ways large and small software development teams have been managing and delivering code. The concept of having a single source of truth for your code makes it way easier to improve software development processes — it is efficient and it makes the process of provisioning the development environment even better.
Before GitOps, developers found it quite stressful to organize, provision and manage their environments and servers on-demand. It was possible to do this before by writing tons of shell scripts, but the process was hanging by a thread because the amount of infrastructure that could be provisioned on-demand was quite limited.
Thinking about the whole process before GitOps, I appreciate it even more. Imagine having to handle your entire code to production process manually — that’s a lot of pain, time, and resources wasted.

GitOps vs IaC — Are they the same?
Before GitOps came into play, IaC (Infrastructure as Code) was the major approach used by software development teams to deliver their code. It prevailed in the sysadmin space as it helped organizations and developers solve the hard problem of manually having to manage and configure all of the hardware and software that was needed for the applications to run.
A lot of people get confused when trying to distinguish between IaC and GitOps; even I was confused for a while, but after a lot of research and discussions with people, I’ve come to discover that the major difference between them is their nature.
I say their nature because IaC is describing all your infrastructure as configuration files so that you can easily manipulate it when needed. GitOps on the other hand is a workflow of how you deliver your application code. It consists of several other components like Git, reviews, collaboration, IaC etc. GitOps is more of a workflow rather than a defined action.
The GitOps Ecosystem
Since its inception, a lot of important software tools have been made to showcase GitOps and make it readily available to software developers. Here are some key players in the GitOps ecosystem:
- Kubernetes: Kubernetes is an open-source system for automating deployment, scaling, and managing containerized applications. In Kubernetes, GitOps is used to carry out cluster management and application delivery and makes it easier to determine if there’s a difference in the code available and what’s running in the cluster. Kubernetes heavily relies on GitOps for its declarative infrastructure and it is a key player in the advancement of GitOps usage in the ecosystem.
- Gitlab: Gitlab is a complete DevOps platform for delivering software applications. Gitlab as a platform is built entirely with GitOps in mind. It can become an essential part of your GitOps workflow for handling your git repository, automating pull requests and continuous delivery.
- AgroCD: AgroCD is a deployment system based on the GitOps principle used in applications running on Kubernetes clusters. AgroCD makes use of the GitOps pattern of using Git as the single source of truth for defining the desired application state.
- Ambassador Edge Stack: Ambassador Edge Stack is a Kubernetes-native API Gateway that delivers the scalability, security, and simplicity for some of the world’s largest Kubernetes installations. With Ambassador Edge Stack you can build an entire continuous delivery workflow via GitOps for your Kubernetes clusters with the sets of APIs available.
- Istio: Istio is a service mesh that has been around for a few years. It is a dedicated layer mainly for all service to service integration within a micro-service architecture. I think of it as an essential part of GitOps because it helps developers manage the behaviour of their services through files that are kept in Git.
- Terraform: Terraform is an open-source infrastructure as code software that allows developers to manage hundred of cloud services from their terminal. With Terraform, you can enable a push-based GitOps approach for your development workflow.
Other key players and implementations are available but the above mentioned are very key in the adaptation of GitOps in cloud native applications.
Why Should Developers Care About GitOps?
In this part of the article, I’ll share my thoughts on why you should care about GitOps. What I will not do is try to sell GitOps to you as a means to fix your infrastructure provisioning process.
Now, let’s assume you have to manually manage a complex system of several Kubernetes clusters — from applying changes to provisioning and controlling environments. Think about the pain that comes with doing that. What if you could automate all of these processes, every single one of your infrastructure processes? Well, with GitOps, you can do all of that and more!
Here are several advantages of GitOps and why it’s worth caring about:
- The main reason why you should care about GitOps is how much improvement it brings to the overall customer experience. I’m tagging this as the main reason because we build products for our customers (consumers) to have the utmost importance. GitOps can accelerate the way you ship new features, bug fixes, and improvements to your product to customers with the entire git-based approach and automated deployment capabilities. With this, your code goes from development to production as fast as possible.
- Reliability is another very important advantage of GitOps. Since everything is declarative through code, testing your code before it goes live becomes easier to enforce, and whenever rolling back of breaking changes is needed, it can also be done faster.
- Onboarding new engineers become easier and seamless with GitOps because you can provide a hierarchy of how changes are approved, who can deploy to production, and enforcement of review and approval processes before code is shipped.
- GitOps cares about the state of your cloud native applications. Integrating GitOps processes, practices, and tools in your cloud native applications can provide you with a more organized architecture for your application and improve your entire deployment process.
Simple Use Cases for GitOps
There are various use cases for how GitOps can be used or integrated into our development processes. Here are a few:
- By using GitOps in a cloud-native environment, you can now write security policies and enforce them at commit time. This provides an avenue for early testing of application code and feedback about changes that may create security issues at the end of the deployment pipeline.
- The GitOps workflow can also be used to automate the updating of product documentation. When there’s a new change to be made, the entire updating and deployment of the new changes can be automated to ensure fast delivery of the new changes.
- GitOps can be used to build static websites, optimize the build image and deploy the website on a web server.
Practical Steps on How to Adopt GitOps
Adopting GitOps for continuous delivery and integration can be very straightforward if you follow the recommended standards.
In this part of the article, I’ll share practical steps to adopt GitOps into your development workflow based on my experience.
- First, create a Git Repository in your application’s directory. Then commit all the necessary application files, and push them to the repository. This way whatever changes your make on your local can be pushed to a remote Git repository.

- Now that a Git repository connected to a remote repository has been set up, the code review, pull request, and merging part of GitOps now comes into play. The Git repository is very essential because it helps initiate the continuous delivery pipeline when code is pushed. This is an essential part of the GitOps process.
- Next up is to set up a container registry to build a new image for your application like GitHub Registry, Gitlab Registry or Docker hub.

- With all of the above set up, when there is a push to the Git repository, Git automatically merges, triggers the continuous delivery process, builds the pipeline, runs the necessary tests, builds a new image from the container registry, and deploys it.
- To complete the entire process, a deployment automator and synchroniser like Flux Flagger and AgroCD are needed. A deployment automator is responsible for reviewing the application images, updating the application configuration files, and automatically carries out your application deployment while a deployment synchroniser is responsible for checking and updating an out-of-date cluster.
- Flux Flagger is a tool that automatically makes sure that the current state of your Kubernetes cluster is in sync and is exactly like the configuration you’ve supplied in Git. It uses an operator in the cluster to trigger deployments inside Kubernetes, which means you don’t need a separate continuous delivery tool. It can serve as both a deployment automator and synchroniser.
- AgroCD, on the other hand, is described as a “declarative, GitOps continuous delivery tool for Kubernetes”. It is a deployment system based on the GitOps principle used in applications running on Kubernetes clusters. It can serve as both a deployment automator and synchroniser. Here’s a great article that explains GitOps in Kubernetes with ArgoCD.
Conclusion
This article has explained why GitOps practice is important and why developers should care about it. One major reason why attention should be considered and why it should be practiced, as stated in the article, is that it improves IaC (infrastructure as code) and also offers a more organized way of delivering code and managing application infrastructure.
GitOps is the future of application code delivery and managing software infrastructure. The earlier you jump on board, the better your overall software development lifecycle is. I hope this article was helpful and insightful. Thank you for reading!
Simplified Kubernetes management with Ambassador Edge Stack API Gateway
Routing traffic into your Kubernetes cluster requires modern traffic management. And that’s why we built Ambassador Edge Stack to contain a modern Kubernetes ingress controller that supports a broad range of protocols, including HTTP/3, gRPC, gRPC-Web, and TLS termination.
Ambassador Edge Stack provides traffic management controls for resource availability. Try Ambassador Edge Stack today or learn more about Ambassador Edge Stack.