GitOps promised a better way to run infrastructure. Put everything in Git. Use pull requests instead of tickets. Let automation handle deployments. In theory, it’s clean, auditable, and safe.
In practice, many GitOps implementations end up recreating the same operational bottlenecks they were meant to eliminate, just with YAML and CI pipelines instead of runbooks and change tickets.
If GitOps feels complicated, fragile, or overly procedural in your organisation, that’s not because GitOps “failed.” It’s because most teams stopped halfway through the idea.
In this article, I’ll walk through a GitOps model that’s a bit different from what you usually see. It leans hard on declarative configuration, treats intent as data in Git, and lets reconciliation, not pipelines, decide what actually runs in production. In this article, Configuration as Data (CAD) and Config Sync (it will work the same with Flux or ArgoCD) set the stage for a simpler and more predictable way to run platforms.
At its heart, GitOps is still operations done the developer way.
Instead of filing tickets or manually touching systems, engineers make changes in Git repositories. Those changes go through pull requests, automated validation, and controlled promotion across environments. Git is the source of truth, and automation ensures reality matches what’s declared.
The familiar pillars still apply:
So what changes in a modern GitOps model isn’t what GitOps is, it’s how we apply it.

This works… until it doesn’t.
At scale, teams want:
That’s where Configuration-as-Data comes in.
Configuration-as-Data treats configuration not as templated text, but as structured, versioned data that describes intent.
Instead of asking pipelines to “deploy version X to environment Y,” we declare:
Environment Y should run version X of this component.
…Everything else is reconciliation.
Key ideas behind CAD:
This approach dramatically simplifies GitOps workflows, and that’s where tools like Config Sync, Flux and ArgoCD shine.
Config Sync is a GitOps reconciler that continuously applies configuration from Git to Kubernetes clusters. Rather than relying on CI/CD pipelines to push changes, clusters pull their desired state directly from Git.
Some of the key properties of Config Sync are:
Most importantly, Config Sync enables a clean separation between:
Let’s walk through a concrete example of how this works in practice. Below is the process of how our developers at Mesoform go from nothing to deploying a Kubernetes operator.
First off, what is an operator? At its core, a Kubernetes Operator is a method of packaging and managing applications by extending the Kubernetes API. Think of it as a digital Site Reliability Engineer — it codifies human operational knowledge to automate complex, stateful tasks like backups and upgrades. This allows us to manage sophisticated software with the same consistency and automation as a simple container, ensuring our infrastructure remains self-healing and scalable.
To deploy these safely, we follow a “build once, promote many” pipeline that ensures environmental parity. Every image starts with a Git commit tag, progressing through Sandbox, Integration, and UAT registries as it passes automated validation.
For the final move to production, we re-tag the proven commit with a formal version number before pushing to our Live environment. We separate the “production” stage into 2 environments, “staging” and “live”and we tag an image with something like v0.2.1 for it to be used on staging; then, once that has been confirmed all okay, we add a v0.2.4-stable tag on the same image/commit and that is deployed to live).
This rigorous process — managed via a Config Sync RootSync controller for automated reconciliation — ensures that the version running in production is identical to the one verified by our developers, providing a reliable and auditable path to every release.
Instead of embedding environment logic in pipelines, we define it in Git:
We define 2 stages and many environments for our software development lifecycle (SDLC). We have a development stage, which consists of sandbox, integration (testing) and acceptance (testing) environments; and production, which has staging and live, as covered before. A common workflow of an engineer would be as follows:
Create a feature branch and make a change:
A pull request triggers:
Config Sync applies the change to a sandbox cluster automatically from the engineer’s feature branch, giving fast feedback without risk.
Promotion between environments is handled by changing data, not pipelines.

Each promotion is:
No hidden logic. No magic.
Once merged, Config Sync ensures clusters continuously match Git:
Operations becomes a matter of maintaining the correct configuration, not executing deployments.

Operators also follow a similar lifecycle with the added addition of code-related builds and testing (e.g. unit tests). This will be familiar to normal normal app SDLC: build, test, release, but with clearer boundaries.
This guarantees that production runs only what was intentionally approved, and nothing else.
This modern GitOps model delivers tangible benefits:

GitOps becomes less about “how we deploy” and more about how we declare intent.
GitOps isn’t just about using Git. It’s about trusting declarative systems to do the right thing.
By embracing Configuration-as-Data and tools like Config Sync, teams can move beyond pipeline-heavy GitOps and toward a cleaner, more scalable model:
Declare intent → Review changes → Merge → Reconcile continuously
No tickets. No guesswork. No surprises. It’s a mindset change:
Make configuration the product, Git the contract, and reconciliation the engine that keeps everything honest.
If your GitOps setup feels heavier than it should, you’re not alone... and you don’t have to live with it.
At Mesoform, we help platform teams move from pipeline-driven GitOps to a truly declarative, reconciliation-first model using Configuration-as-Data and Config Sync. The result: fewer bottlenecks, clearer intent, and platforms that scale without operational drag.
Contact us to learn how we can help you turn Git into a clean, auditable contract and let reconciliation do the heavy lifting.