I'm not always up to date on the latest trends, but while learning about Terraform and Kubernetes, I came across what feels like yet another (not instantly very intuitive) buzzword: "GitOps".<p>I really like the concept of Infrastructure as Code (IaC), but from what I understand, GitOps seems to focus on the part where a build tool or task runner monitors the latest pull request in the repository. It then communicates with the control plane or another infrastructure state store to initiate any changes based on the latest update. Is that right and that's all there is to it?<p>If so, isn’t this already covered under the umbrella of IaC? Do we really need a new term for this, or is it just me with these never ending, what feel like, buzzwords springing up ongoingly?<p>Maybe I’m missing something here.
As you point out, GitOps is focused on a particular technique, so it does make sense that it has its own term to distinguish it.<p>The term is defined <a href="https://opengitops.dev/" rel="nofollow">https://opengitops.dev/</a><p>GitOps focuses on deploying applications rather than deploying infrastructure, although some tools (ACK and Crossplane for two) use a variation of GitOps called "Infrastructure as Data" to apply infrastructure code to IaaS infrastructure.<p>In both cases, the point isn't really that code is in Git (most IaC and application code is stored in Git these days), and it's doesn't involve monitoring pull requests. At root it's running a continuous loop to reconcile what's deployed with the current version of the code.<p>A PR will normally trigger an update, but indirectly, by modifying the code and so making a mismatch between the code and the deployment. The reconciliation loop finds the difference and, well, reconciles it by running the deployment.<p>"Git" is an implementation detail, as is the fact that it's almost always implemented using Kubernetes controllers. Check out the site, it's not really ambiguous, just often misunderstood.
I would say they are similar but the focus is more on controlling everything through Git rather than IaC which leaves this ambiguous and can require updating the Git repo and then visiting a dashboard to press a button to check the repo and apply it.<p>Once you dig deep enough into many tech buzzwords you'll find that that different people can mean slightly different things with the same words. Some may consider special PR comments to control infrastructure operations as a form of GitOps because what would otherwise be a button in a dashboard now lives alongside the Git history in GitHub.