The biggest benefit in using Git and infrastructure-as-code (IaC) is that you can now use continuous integration and deployment. With tools like GitHub actions, you can automatically deploy and/or update infrastructure code and automatically apply it to your cloud environment. Resources that have been added to the infrastructure code are created automatically and made ready for use.
The resources that were changed are updated in your cloud environment and resources that are removed from the infrastructure code are automatically spun down and deleted. This allows you to write code, commit it to your Git repository, and take full advantage of all the benefits of the DevOps process.
GitOps uses a Git repository as the single source of truth for infrastructure definitions. Simply put, a Git repository is a “.git” folder in a project that tracks all changes made to files in a project. Infrastructure as code (IaC) is the practice of keeping all infrastructure configuration tracked and saved as code files. The actual desired state may or may not be stored as code, depending your approach and organizational policies.
GitOps uses merge requests as the change process for all infrastructure updates. The merge request (MR) is where teams can collaborate via reviews and comments. The MR could also have a formal approval for changes to take place. A merge commits to your “main” branch is a potential changelog for a later audit and/or troubleshooting when needed.
GitOps automates infrastructure updates using a Git workflow with continuous integration and continuous delivery (CI/CD). When new code is merged, the CI/CD pipeline enacts the change in the environment. Any configuration drift, such as manual changes or errors, is overwritten by GitOps automation so the environment converges on the desired state defined in the Git.
GitHub actions uses CI/CD pipelines to manage and implement GitOps automation.
GitOps isn’t a black box anymore. It just takes IaC tools you already know and wraps them in a DevOps-style workflow. This approach provides a better revision tracking, fewer costly errors, and quick, automated infrastructure deployments that can be repeated for on any environment.
By adopting GitOps in your organization, you could improve the developer experience because often-dreaded releases become fully automated. This will allow developers to focus on their code. Teams eliminate or minimize manual steps and make deployments repeatable and reliable.
You could also improve security and standardization by utilizing GitOps.
By practicing GitOps, developers have no need to manually access cloud resources and additional security checks can be put in place at the code level in CI/CD pipelines.
I hope you like the GitOps approach and please let me know, what are you working on. Or how you could relate your work to GitOps?