VOOZH about

URL: https://thenewstack.io/the-problems-with-gitops-and-how-to-fix-them/

⇱ The Problems with GitOps — And How to Fix Them - The New Stack


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
It seems that you've previously unsubscribed from our newsletter in the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become a TNS follower on LinkedIn.

Check out the latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of 2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
NEW! Try Stackie AI
From clobbered drafts to real-time sync
Apr 14th 2026 10:00am, by David Moore
TypeScript 6.0 RC arrives as a bridge to a faster future
Mar 14th 2026 9:00am, by Darryl K. Taft
Mastra empowers web devs to build AI agents in TypeScript
Jan 28th 2026 11:00am, by Loraine Lawson
2020-11-23 12:00:19
The Problems with GitOps — And How to Fix Them
contributed,sponsor-codefresh,sponsored,sponsored-post-contributed,
CI/CD / DevOps

The Problems with GitOps — And How to Fix Them

GitOps is a way to manage the state of systems, through definitions of the desired state stored in Git. But for this post, we’ll focus on what needs fixing.
Nov 23rd, 2020 12:00pm by Viktor Farcic
👁 Featued image for: The Problems with GitOps — And How to Fix Them
Codefresh sponsored this post.

Codefresh sponsored this post.

Viktor Farcic
Viktor Farcic is a Principal DevOps Architect at Codefresh, a member of the Google Developer Experts and Docker Captains groups, and a published author.
GitOps is a way to manage the actual state of systems, through definitions of the desired state stored in Git. You probably already know what GitOps is and all its benefits. If you don’t, please watch What Is GitOps And Why Do We Want It?. For this post, we’ll ignore the good and focus on the bad and the ugly. In a follow-up post, I will argue that GitOps as an idea is great, but that we are not even close to having that idea be useful in a practical sense. I will even go as far as to say that there is a lot of work to be done and that we need to hit the reset button. For now, let me focus on the issues we are facing with GitOps. Let me give you a summary of the issues:
  • GitOps is misunderstood.
  • GitOps is NOT only about Kubernetes.
  • GitOps tools are NOT promoting GitOps principles.
  • We are often not even able to apply GitOps principles in GitOps tools.
  • We do NOT have the tools that reflect changes happening inside clusters in Git.
  • Observability is immature.
  • There are no well-established patterns.
  • The connection between Continuous Delivery and GitOps is not yet well established.
  • Running GitOps at scale is challenging.
  • Managing secrets is a big issue.
Let’s now go down the rabbit hole and see the pain we are facing when adopting GitOps.

GitOps Is Misunderstood

There is a misunderstanding of what GitOps is. Like many other popular waves, software companies are riding this one and putting the “GitOps” sticker on their products. Just as every tool is a DevOps tool today, no matter what that tool does and even what DevOps is, many are being (re)branded as GitOps tools today. Companies are trying to sell us the idea that whatever their tool is doing is what GitOps is. As a result, we are debating what it is and what it isn’t, while in reality it is a simple concept based on a few easy to explain principles. Everything is defined as code; code is stored in git; git contains the desired state; machines are converging the actual into the desired state. That’s it. That’s all there is to it. It’s hard to get there, but it’s straightforward to explain what it is; and if that explanation is accepted, it’s even easier to distinguish those tools that are helping us achieve GitOps and those that aren’t.

GitOps Is NOT Only About Kubernetes

I’m more disappointed with some of the originators of the ideas behind GitOps. For example, the definition that says that “GitOps is a way to do Kubernetes cluster management and application delivery” is misleading. GitOps is not only a way to do “Kubernetes cluster management.” The fact that Kubernetes adoption is enormous does not mean that it is the only thing everyone cares about. GitOps is about something else, and that something is much broader than Kubernetes. Even those who fully embraced Kubernetes do not claim that everything is Kubernetes. There are nodes to be managed. There is networking. There are third-party services. Serverless is becoming more widely used. And so on and so forth. The fact that someone has a solution focused on Kubernetes does not mean that GitOps is only about the state inside a Kubernetes cluster. It is the way of working. It is the approach to defining what should be the state of something, whatever that something is. Even if you do rely a hundred percent on Kubernetes, it will not appear out of thin air and it will not be managed by itself. GitOps should help with that and not be something limited to a very narrow scope. The previous two issues could be classified as bad, and now it is getting ugly.

GitOps Tools Are NOT Promoting GitOps Principles

GitOps tools, even those that represent the shining beacons in the industry, are not truly promoting GitOps. Let me repeat that. GitOps tools are not promoting GitOps principles. Even when they do, many somehow think that it applies to others and that they are the exception. To demonstrate that, we can take a look at the “default” instructions for installing two of the most popular GitOps tools: Flux and Argo CD. Before we continue, let me stress that I think that both tools are excellent. This is not an attempt to “thrash” them, but rather to show that we are still in the very early stages of GitOps adoption and that it is not yet engraved in our minds. First, Flux did not initially try to provide any declarative definition for the installation, at least not from the initial installation page. There was no attempt to guide us towards having something defined as code and stored in git before being applied to the cluster. All that changed recently when Flux v2 was introduced. The tool changed the installation process and now it creates a git repo, pushes Flux manifests, and only then installs Flux. From there on, any change to Flux can be done by making changes to the associated repository. Well done Flux! With Argo CD, we can take the install.yaml manifest, store it in git, and then apply it to the actual state. We could easily hook it into any CD tool and create a webhook that notifies it whenever that definition changes. On the first look, it seems that Argo CD is, at least, giving a semblance of following the principles of GitOps by giving us a YAML file that we can store in a git repository before applying it. But, that seems to be more likely a lucky accident that it chose to be defined in a declarative YAML format that can be stored in git. The truth is that, as soon as we scroll down that same page, we find examples like the following.
```bash
kubectl patch svc argocd-server \
-n argocd \
-p '{"spec": {"type": "LoadBalancer"}}'
```

If we scroll further down, we can find things like the following command to add a cluster to its registry.
argocd cluster add docker-for-desktop
I’ll skip, for now, the discussion of whether using those tools is truly GitOps. In this context, Argo CD is not adhering to “the entire system described declaratively” principles from the get-go. It is not trying to “push” the users towards the idea that the desired state should be stored in git. The first contact with Argo CD and, until recently, with Flux, tools tells us, “we are the exception; those rules apply to others, but not to us.” Truth be told, the same can be said for most of the tools on the market, including those marketing themselves as GitOps. I picked the above two mostly because they are excellent and popular, not because they are worse than others. In this article we have explored the first three GitOps issues in my shortlist. I’ll discuss the rest in two follow-up articles.

Feature image via Pixabay.

Codefresh is a modern CI/CD platform designed for software development teams building and deploying cloud native applications using Docker, Serverless, and Kubernetes. Build your perfect end-to-end pipeline today with a free account at codefresh.io.
Learn More
The latest from Codefresh
TRENDING STORIES
Viktor Farcic is a developer advocate at Upbound, a member of the Google Developer Experts, CDF Ambassadors, and GitHub Stars groups, and a published author. He is a host of the YouTube channel "DevOps Toolkit" and a co-host of “DevOps...
Read more from Viktor Farcic
Codefresh sponsored this post.
SHARE THIS STORY
TRENDING STORIES
TNS owner Insight Partners is an investor in: Docker.
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.