Content area
Full Text
The last decade of programming has seen a number of revolutionary transformations. One has arisen from a cluster of practices around devops, which aligns development and operations teams into a shared work process, and continuous integration and continuous delivery (CI/CD), in which devops teams deliver constant incremental updates to a codebase. Another transformation has come from the related move from monolithic codebases to cloud-based microservices running in containers managed by orchestration platforms like Kubernetes.
Container-based applications running on clustered systems or in the cloud can be complex and difficult to provision and manage, even with a platform like Kubernetes orchestrating things. GitOps is an emerging set of practices that aims to simplify this management task by applying techniques from the worlds of devops and CI/CD.
The key to GitOps is the idea of infrastructure as code, which takes the same approach to provisioning infrastructure as devops uses to provision applications. So, not only the application but also the underlying host machines and networks are described in files that can be treated as any other code within a version control system, with automated processes then working to converge the real-world application with the one described in those files.
In GitOps parlance, the code in the version control system is the single source of truth about what the application should look like in production.
GitOps defined
Weaveworks is the company that has done the most to popularize the concept of GitOps. We’ll go into the details of Weaveworks’s role in a bit, but first, let’s take a look at the company’s definition of GitOps, which is twofold:
* An operating model for Kubernetes and other cloud native technologies, providing a set of best practices that unify deployment, management, and monitoring for containerized clusters and applications.
* A path towards a developer experience for managing applications; where end-to-end CI/CD pipelines and Git workflows are applied to both operations and development.
In other words, GitOps is a specific set of practices designed to manage Kubernetes and similar platforms, which also lends itself to possible wider application as more and more development shops adopt devops practices and migrate code to the cloud. But to understand the secret sauce of GitOps and the problems it solves, we need to talk...