Course Overview
GitOps is a practice for managing systems' state through the use of version control. Simply put, GitOps combines a declarative approach with continuous integration/continuous deployment (CI/CD). This means, the end state is declared, and the underlying system figures out how to achieve that state, using CI/CD. CI/CD is a familiar development methodology that prioritizes frequent small changes (with deployments) over "big bang"–style deployments.
GitOps is prominent within Kubernetes (K8s) environments, because K8s manifests are declarative YAML, applied in a simple, consistent manner (kubectl apply
). But GitOps is gaining broader traction across many companies' technical landscapes. At Cribl, we've embraced this approach in our own operations. And we've introduced Stream capabilities to facilitate using GitOps to manage your Stream deployment.
We will be using the UI to configure everything in this course, even though we recommend – as a best practice – instead using environment variables to configure GitOps. We designed this course to help you learn the basic concepts of GitOps configuration, and we feel these are more easily explained in the UI.
By all means, review Cribl's GitOps documentation and use that methodology in a production deployment.
The Scenario
In this course, we have two Stream distributed environments: production and development. We'll set up Stream to use the prod
branch as the configuration tree for the production instance. And we'll create a dev
branch as the configuration tree for the development instance.
We'll use a simple Git flow to manage these branches: Changes we make to the development environment will be committed to the dev
branch. When we're satisfied with the changes, we'll create a pull request (PR) against the prod
branch. When that PR is merged, we'll see the changes get deployed to the production environment.
Stable, efficient, easy. Let's get started!