GitOps has been around for a few years, kicked off by Weaveworks back in 2017. In short, the concept revolves around a Git repository that serves as the single source of truth for the state of a system, while an automated process ensures that the system and source of truth match. Similar in spirit to Agile feature branching, GitOps takes a hard line approach to the master branch only being touched when a change or feature is merged from another branch that has been coded, tested, and hardened.
GitOps takes things further, though. Targeted specifically at cloud native apps, GitOps revolves around containerized apps and controlling their lifecycle with tools like Terraform to provision Kubernetes clusters and Helm to deploy applications into those clusters.
Whether you’re a developer, DevOps practitioner, architect, or product manager, GitOps should be on your radar. In this post, I’ll provide a quick introduction to GitOps, cover top tools, and share a little-known way to test the waters and get buy-in before going all in.
With GitOps, all system configuration, infrastructure, and other details needed to host that application are stored in your Git repository, in addition to the source code for your application. All of this information is used to provision and configure Kubernetes clusters and package, containerize, and deploy applications into those clusters. Key to the success of these practices is ensuring that the master branch in Git always contains a stable representation of both the code and the infrastructure.
By enabling developers and operators to collaborate effectively, GitOps can help you deliver applications and services to users faster. Using this approach, teams can safely deliver new versions of their applications weekly, daily, or even every single time a PR is merged into master. If a breaking change is introduced, it can be mitigated simply by reverting back to a prior version in Git, which is then automatically packaged and deployed into the appropriately configured cluster. Here’s a summary of the top benefits of GitOps:
- Enjoy ease of adoption – Since Git is a familiar tool for most developers, it’s easy for them to get up to speed and become cross functional contributors.
- Improve reliability – Software agents inform you when what is currently running in clusters doesn’t match what’s described in the desired state (the Git).
- Innovate and ship faster – According to Weaveworks, teams can ship 30-100 times more changes per day, increasing overall development output 2-3 times.
GitOps Is Getting Even Better
GitOps is the nirvana state for most organizations, but there are several ways to get there. Some of the top tools include Weaveworks Flux, the GitOps Kubernetes operator from the creators of GitOps, and Argo CD, a GitOps operator for Kubernetes with a web interface.
In August 2020, Weaveworks announced Flux v2, a successor to Flux designed to be more capable and more aligned with Kubernetes’ best practices for operations and observability. For existing Flux users, it will address requests such as support for syncing multiple Git repositories and will offer up the GitOps Toolkit, a set of components for building GitOps-based delivery and automation. Weaveworks’ Stefan Prodan and Hidde Beydals recently presented on the roadmap to Flux v2 at KubeCon + CloudNativeCon Europe 2020:
How to Champion GitOps Within Your Organization
Beyond identifying the right tool, adopting a standardized GitOps workflow requires some serious work, especially if you haven’t even made the jump to containerized apps. This can make securing buy-in across your organization a challenge. Luckily, Microsoft recently began promoting what I consider to be a bridge technology to the full GitOps world.
By eschewing the need for explicit containerization, Static Web Apps allow developers to quickly build out full stack Azure web applications that are entirely driven by GitHub repos, all while letting Azure handle most of the infrastructure concerns. This can be a stepping stone to full GitOps with containers and, by extension, faster deployment and innovation for your organization.
GitOps practices have gained a lot of momentum and are enabling development teams to deliver more often, and more reliably, than ever before. Have you taken the plunge yet, or does Static Web Apps sound like a good starting point? Reach out for a free consultation and discover how 3Cloud can help.