What is GitOps and why now?

The only fries I think about now

Here is where GitOps comes in.

To this day, I believe if you can continuously deliver your entire system on-demand, from the servers to the software, you should be put in a category of the Few and Distinguished. It could be done, even back then, but with what they used to call “bubble gum and duct tape”.

  • Kubernetes is mostly declarative so we should take advantage of this. Along with K8S, today’s tools leverage easier-to-understand YAML to configure your systems.
  • The pull request is used to trigger your update. You get the benefit of a peer review and existing change management processes.
  • There is an automated delivery system that is responsible for applying the change. Manual changes are unnecessary and bad practice, especially if people are logging into servers.
  • No kubectl. RBAC for user-level access control isn’t trivial. (Check out the AirwaveTech article on how to help with this)
  • The desired state of your entire stack is housed in source code. Various offerings of git allow extensibility for building custom solutions.
  • Gain new abilities: Predictability, Repeatability, Rapid Recoverability. This is what happens when you have the 3Ps.
  • Push VS Pull. Are you manually pushing a button or is the system automatically applying the changes? Think of this as being analogous to continuous delivery VS continuous deployment, with pull equating to automatically deploying software.
a very simplified GitOps Pipeline
  • Host / VM changes
  • Kubernetes changes (what most people think of when you say GitOps)
  • Software deployments to Kubernetes

To sum it up…

Whether you are managing Kubernetes itself, the layers above, or below it, it makes sense to set your desired state in a persisted place. Some folks used to do it with scripts and Cron, others used to keep it in a DB. Today, it’s git and YAML. Regardless of how you do it, with a system that can be as complex as Kubernetes you won’t want ad-hoc changes performed on the fly anyway. You want to make sure you are practicing some form of change control. If you are already using git, why reinvent the wheel?



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store