GitOps is a pattern to manage the flow of work from development to production through Git operations. The concept behind GitOps is quite straightforward:
GitOps offers simplified operations, better developer experience, and better visibility of what is happening on the system. The most popular GitOps tools today are ArgoCD and Flux. As the adoption of GitOps is increasing, best practices around the approach and the tools are also forming rapidly.
Basically, GitOps is here to solve the “how do I make my platform reflect what I have in Git'' problem. It removes the need to interact with the platform directly and put the interaction with Git repositories instead. However, there is more than GitOps can offer for an organization beyond everything as code approach, especially that would like to adopt DevOps culture and practices.
Benefits of GitOps:
As listed above, having a GitOps approach in place means not only that you care about Git hashes and pull requests but also have visibility on the products and more importantly the teams too. Applying GitOps to onboarding and scaling your IT Delivery capability can massively accelerate your responsiveness to the market or global events. A GitOps approach can provide a better experience for creating repeatable environments and tooling for new teams as well as existing ones. It can also deliver a better production experience for migrating existing applications and quick adoption for dynamic team structures.
In the Cloud Native world, Continuous Delivery is the practice where every commit is automatically sent to production without any human intervention. Therefore GitOps approach is the perfect match for CD.
As a team, you should discuss and agree on what you mean by GitOps in practice. Define the structure of Git repositories and where to store which configuration files. Then have the right tool in place for your needs. Of course, there are multiple ways to set repositories. Here is a high-level example flow for a CI/CD pipeline utilizing one configuration repository and a separate source code repository:
The Open Practice Library is a collection of microservices and a front-end application, spread across multiple Git repositories. These microservices are defined as manifests and manifest changes are automatically triggered to release versions of the Open Practice Library via GitHub Actions in the various code repos. It is watched by ArgoCD, automatically updating apps running in Red Hat OpenShift Container Platform with any manifest changes.