For over a decade, software companies have been trying to move away from the waterfall approach to application development to the DevOps approach. Instead of throwing code over a wall to a separate engineering team and never seeing it again, they would prefer to have small teams of developers work together to handle everything themselves—from building and testing to deploying.
The move to DevOps requires technical and cultural changes at an organizational level. A new set of tools that can abstract the complexity of the steps previously handled by large teams must be adopted. The monolithic application should be split up into microservices that can each be owned by a single team. Organizational leaders must also create a new culture that celebrates iterating and failing fast.
Moving to DevOps is almost always worth the effort. It allows developers to roll out changes and updates very quickly in response to users’ feedback without taking down the whole application and improves development metrics by orders of magnitude in some cases.
However, developers using the DevOps approach can find the operations side tricky when they’re trying to spin up infrastructure on modern, cloud-native technologies. They need a way to confidently and securely deploy changes to Kubernetes that doesn’t require them to become experts in the orchestration tool. That’s where GitOps comes in.
GitOps helps DevOps teams be more autonomous and productive by enabling continuous deployment through the tools they work in every day. Changes are automatically applied to the cluster once a Pull Request is approved and merged. Changes are handled by reconcilers that look for discrepancies between what is described in Git (the desired state) with what is currently running in the clusters.
The foundation of GitOps is based on the declarative nature of Kubernetes and its automatic deployment of committed files. GitOps leverages these attributes according to the four following principles:
1. The system’s entire infrastructure must be described in Git.
2. Once the system is described, it can be versioned in Git.
3. After a PR is merged, the changes are automatically applied.
4. Software agents continuously monitor the Git repo.
Kubernetes is just one example of many modern, cloud-native tools that are declarative and can be treated as code.
GitOps doesn’t require cluster credentials or manual intervention to make a change to the system. As a segregated environment, the system can only be changed through Git, thereby reducing user error and speeding up time to deployment.
After a decade of DevOps refinement, it’s become clear that the ops portion is the least understood by developers. As a result, many teams don’t realize the full benefits of their DevOps environment because the operational complexity of the infrastructure holds them back.
Using GitOps best practices for infrastructure deployment, monitoring, and managing Kubernetes, teams can increase their overall output 2-3 times and easily meet security and compliance regulations.
GitOps ensures the correctness of the Kubernetes clusters, so that teams can:
Increase overall output 2-3 times by using Git to manage Kubernetes more rapidly.
Establish an end-to-end CI/CD workflow driven by pull requests and fully reproducible through Git.
Use Git as the single source of truth to revert/rollback and fork in the case of a catastrophic event.
Leverage Git’s correctness and strong cryptography and security guarantees to track and manage changes across the entire cluster.
Build an audit log of all cluster changes and attribution that meets SOC 2 compliance just by using Git.
Weaveworks invented and honed GitOps to accelerate and automate the installation of production-grade Kubernetes. The Weave Kubernetes Platform (WKP) works with Amazon Elastic Kubernetes Service (Amazon EKS).
WKP includes enterprise-grade features that extend the richness of GitOps using a model-based system to configure and define clusters and components. The underlying architecture of WKP is based entirely on GitOps best practices, reducing complexity of configuration management for complete Kubernetes platforms. By keeping the configuration in Git, developers and operators can use WKP to easily define, administer, and install repeatable platforms with all their add-ons and components through a simple Git clone.
Amazon EKS is a fully managed Kubernetes service used by Fortune 100 companies to run their most sensitive and mission critical applications because of its security, reliability, and scalability. Amazon EKS is deeply integrated with other AWS services such as Amazon CloudWatch, Auto Scaling Groups, AWS Identity and Access Management (IAM), and Amazon Virtual Private Cloud (VPC), providing a seamless experience to monitor, scale, and load-balance applications.
The service runs upstream Kubernetes and is certified Kubernetes conformant meaning it leverages all the benefits of open source tooling from the community and enables migration from standard Kubernetes applications without code refactoring.
The GitOps Journey at Mettle by NatWest
Time spent coding
“Leveraging GitOps has allowed us to create a self-service platform for engineers so they can concentrate on delivering business value through innovation, without the full need for Platform Team assistance.”
- Steve Wade, Platform Lead
Mettle, the digital business banking innovation by Natwest, provides free business accounts for startups, small businesses, limited companies, and sole traders. The FinTech runs Kubernetes on Amazon Elastic Cloud Compute (Amazon EC2) instances using Amazon EKS. To keep the Mettle application running and ensure that all services are available to their customers 24x7, the engineering team needed a way to deploy new features quickly without compromising on reliability or security.
The Platform Team wanted to leverage a tool that would integrate well with the engineer’s existing pipelines and automate changes applied to the system. Choosing Weave Flux allowed their engineers to focus on building assets, testing them in specific environments while the software agent handled how those assets got deployed to Kubernetes.
GitOps empowers platform teams and developers to deploy confidently and securely to Kubernetes. Increase the velocity of your DevOps teams with GitOps using the Weave Kubernetes Platform on AWS.