Book Image

Repeatability, Reliability, and Scalability through GitOps

By : Bryan Feuling
Book Image

Repeatability, Reliability, and Scalability through GitOps

By: Bryan Feuling

Overview of this book

The world of software delivery and deployment has come a long way in the last few decades. From waterfall methods to Agile practices, every company that develops its own software has to overcome various challenges in delivery and deployment to meet customer and market demands. This book will guide you through common industry practices for software delivery and deployment. Throughout the book, you'll follow the journey of a DevOps team that matures their software release process from quarterly deployments to continuous delivery using GitOps. With the help of hands-on tutorials, projects, and self-assessment questions, you'll build your knowledge of GitOps basics, different types of GitOps practices, and how to decide which GitOps practice is the best for your company. As you progress, you'll cover everything from building declarative language files to the pitfalls in performing continuous deployment with GitOps. By the end of this book, you'll be well-versed with the fundamentals of delivery and deployment, the different schools of GitOps, and how to best leverage GitOps in your teams.
Table of Contents (17 chapters)
Section 1: Fundamentals of GitOps
Section 2: GitOps Types, Benefits, and Drawbacks
Section 3: Hands-On Practical GitOps

Declarative execution and declarative state

To start the groundwork for the GitOps process, the teams had to understand what repository structure the different teams were using. GitOps tools tie individual Git repository branches to specific environments. Since the developers are deploying to three or four environments, the GitOps tool of choice would need to be configured to support these environments. Adding to this requirement, the deployment pipeline needed to sequentially deploy to the different environments. The DevOps teams would need to figure out how best to trigger the deployments automatically.

The next major step was to get the correct pull request approval process to be executed. This would allow the Kubernetes manifests in one branch to merge with the Kubernetes manifests in another branch to trigger the deployment. The linking of the tool in the right cluster to the desired repository branch would need to be automated leveraging the GitOps tooling API, effectively...