GitOps is the idea of using Git as the control mechanism, and one source of the truth, for making any kind of changes to system configurations. This idea goes beyond just recording configuration changes in Git. For example, at the level of managing a Kubernetes cluster, you could think of it as “changing-kubernetes-configurations-via-code.”
Instead of using the application’s command line to make a change, the user commits an update to Git with a specification of the change they want (usually via a Pull Request or similar mechanism). Once the change is approved and merged in, the change that was specified is automatically made in the cluster configuration. This brings it into line with the change that was pushed.
Why Everything-as-Code is useful?
It provides you with all of the usual source management benefits of doing operations via code – the benefits that are hard/impossible to get if a user just makes the changes from the command line.
These benefits include:
- Oversight via code reviews,
- Easy rollback (of cluster configurations) via Git functionality such as reset/revert,
- Managing history by tracking the actions in Git, etc.
- GitOps also provides notification via alerts when there is drift in the cluster, or if the configuration gets out of sync.
- The other advantage it provides is managing these kinds of operations via an interface (Git) that is more familiar to everyone these days – and typically part of standard workflows.
GitOps is being “built-in” into many applications these days. Anything that needs to manage change configurations in complex systems should consider using it.