GitOps All The Things!:allthethings::kubernetes::git:
September 23rd, 2018
You should use GitOps for everything. Everything.
GitOps is a recent-ish term for:
- use declarative configuration for your infrastructure (e.g. Kubernetes)
- version all of your configuration in source control (I.E. Git)
- use your source control to drive your infrastructure (I.E. use CI/CD = Ops)
GitOps: versioned CI/CD on top of declarative infrastructure. Stop scripting and start shipping. https://t.co/SgUlHgNrnY— Kelsey Hightower (@kelseyhightower) January 17, 2018
Why? - Well, do you like the sound of:
- having complete history of all your infrastructure configuration
- roll-backing broken configuration as easily as clicking “revert”
- having a consistent interface to your automation (IE source control and declarative configs)
We’ve been doing this to varying degrees for years with the Kubernetes project Test Infrastructure and it works wonderfully. Since our configs are in public source control anyone can file a PR to change them or inspect the historical configuration.
When things break (and they will, it happens), having quick access to configuration history is invaluable. Being able to make fixes by sending a pull-request with configuration updates also makes for an excellent experience. Some of our tooling here has been quite rough, but as we bring things more in line with this model it is much easier to work with.
For Kubernetes as an Open-Source community we’re making strides towards a world where everything is publicly managed through declarative config. With the meta “Org” project and Peribolos we now have “Join the Kubernetes Organizations - by Pull Request”. I hope this can bring increased openness to the project by managing project membership, teams, repo configuration, and more via the same (public) GitOps model with public requests for changes and public records of all changes (via git history), and I’d encourage other organizations to take a look.
If this sounds good to you, all of the tooling being developed for this is declarative, easy to use, and open-source. If you’re interested, please reach out via email or Twitter (see my homepage), Kubernetes SIG-Testing slack, or file a GitHub Issue with test-infra.
GitOps all the things! :allthethings: