How to explain GitOps in plain language

0



First, DevOps took the IT world by storm. Now GitOps is attracting similar interest and acceptance. There is a relationship between the two: the latter can be viewed as a more specific version of the former.

“If DevOps is a way of life, GitOps dictates how to practice it.”

“If DevOps is a way of life, GitOps dictates how to practice it,” says EG Nadhan, chief architect and strategist at Red Hat North America. “GitOps advocates a cloud-native or microservices-centric vision from the start.”

It also prescribes a basic tool, and it’s already in the name: the Git version control system. As Don Schenck, Director of Developer Experience at Red Hat, recently wrote, GitOps basically means “save everything in Git”.

Schenck explains that this is of course a very simplified definition. But that’s actually the basis: “You store your code and your infrastructure and build configuration information in your Git repository,” says Schenck. “Tools like OpenShift Pipelines, ArgoCD and Kustomize work with and within this concept to make things happen and bring everything together.”

(Check out Schenck’s blog post – “Why Should Developers Care About GitOps?” For more on the Developer POV.)

We’re here to provide IT leaders and their teams with a deeper understanding of GitOps: What is it? Why is it important? And how do you explain it to others, especially if they are not fluent in cloud-native and Kubernetes? Let’s start with a handful of clear definitions that you can use.

[ Learn more: Read How does Red Hat OpenShift enable GitOps? and download the ebook: DevOps with OpenShift. ]

What is GitOps?

“GitOps is a prescriptive, controlled way of practicing DevOps that is unified around a single repository of artifacts for everyone on the development and operations teams in the software development lifecycle.” –EG Nadhan, Chief Architect and Strategist, Red Hat North America

“GitOps consists of [a] Set of automation practices and tools that enable effective infrastructure management and continuous delivery for cloud-native applications. ”- Jitendra Thethi, VP of Research and Innovation, Capgemini Engineering

“GitOps is a pattern where a source code control system (like Git) is used as a reliable source of information about the infrastructure and all changes can be applied immediately after a pull request (classic pipeline for Git). GitOps is a pattern for Infrastructure as Code that is used to control, maintain and manage all resources (preferably cloud resources) and to collect information about infrastructure, services, applications and deployments. In addition, as a separate process, GitOps can be part of a number of DevOps practices and is aimed at closer interaction with developers. ”- Raman Khvashcheuski, DevOps director at Exadel

“GitOps is confirmation that everything is (or should be) defined as code. With all the code in Git, Git becomes the source of truth (or, to be more precise, the desired state of the entire system). If Git is the source of the truth, you can’t manually perform operations by running random commands. This would mean that Git would cease to be the only source of truth. Instead, the only goal of humans (operations) is to define the desired state as code and store it in Git. Then let the machines synchronize that with the current state. Such a synchronization must be continuous so that the two states are (almost) always synchronous. In other words, GitOps is about defining everything as code, storing that code in Git, and letting the machines see the drift between the desired and actual state – and making sure that drifts are fixed as soon as possible, what leads to the two states are almost always in sync. ”- Viktor Farcic, Open Source Program Manager & Developer Relations at Shipa

[ How can operators help your team? Get the free eBook: O’Reilly: Kubernetes Operators: Automating the Container Orchestration Platform. ]

Why is GitOps important? What are the benefits of GitOps?

GitOps can simplify a complex set of technical decisions for cloud-native development and infrastructure.

Perhaps the best way to add context to these definitions – and also to think about how best to explain and evangelize GitOps if necessary – is to think about what makes it important.

Here’s a good starting point like any other: GitOps can facilitate a sometimes overwhelmingly complex set of technical decisions for cloud-native development and infrastructure. Just take a look at the CNCF Cloud Native Landscape – you practically need a jumbotron to get everything on a single screen.

GitOps simplifies cloud-native decisions

The choice is great, but it can also be overwhelming, especially for teams that are already overwhelmed or lack extensive cloud-native experience.

“In a world with an abundance of choices for tools and platforms, GitOps centers – and simplifies – activities around a single tool of choice: Git,” says Nadhan. “This approach shifts the focus to practicing the art of DevOps without being distracted by administrative and environmental details around tool selection.”

[ Still learning about cloud-native? Download our cheat sheet: What’s the difference between a pod, a cluster, and a container? ]

GitOps is also a prescriptive way of making some of the higher promises of DevOps and cloud-native technologies accessible and accessible to a wide variety of organizations and teams.

“What makes GitOps so important is that it now provides a specific framework to achieve goals that were known long before GitOps was introduced,” says Farcic. “Defining everything as code is not new. The code is also not stored in a code repository (Git). It also doesn’t ensure that our systems are in sync with what’s in Git. What is new is a clearly defined process of how this can be achieved. “

GitOps includes automation and enforcement

GitOps is a mix of automation and enforcement – which sounds a little mean or scary, but is actually a good thing that creates harmony between the desired state of your system and the actual state.

This continuous synchronization between the target and the current state makes modern software pipelines and infrastructures – think of cloud-native and hybrid cloud environments – much easier to manage.

“You constantly call up information stored in Git and compare this information – the desired state – with the state of the system – the actual state,” says Farcic. “If there is a drift – a difference between the two states – you can take the necessary actions to bring the actual state into the desired state and thus make both the same.”

This continuous synchronization between the target and actual state, in turn, makes modern software pipelines and infrastructures – think of cloud-native and hybrid cloud environments – far more manageable than would otherwise be the case. This helps make systems more stable, reliable, and scalable – again, think of GitOps as a specific implementation of the broader promise of DevOps.

“GitOps is part of DevOps practices and can improve stability and make infrastructure predictable because all changes are documented,” says Khvashcheuski. “Developers can view the history of all changes and restore the previous state if a problem is detected or the infrastructure or service has been damaged. In addition, GitOps can help scale the infrastructure and automate many manual processes in order to minimize routine tasks and errors. GitOps is widely used to create a guaranteed and consistent infrastructure for different environments. All of these points make GitOps important for modern infrastructures and pipelines. “

[ Related read: Kubernetes: 6 open source tools to put your cluster to the test. ]

GitOps can increase delivery speed

Speed ​​is another widely cited benefit of DevOps, embodied in faster, more frequent deployments than a traditional monolithic pipeline. GitOps again offers a specific way to achieve this potential.

“GitOps enables engineers to manage continuous deployments and infrastructure management as code to drive automation, achieve repeatability, reduce downtime, and eliminate human intervention as part of continuous release cycles,” says Thethi.

Thethi adds that the easiest way to explain GitOps to others – especially non-tech ones – is to simply point them to their favorite apps and services. GitOps (or something like that) is one way of making these apps available to us.

“Your favorite apps and websites are used by hundreds and thousands of [computers] all over the world and new features are made available to us all the time, ”says Thethi. “To make this an efficient process, all of these activities are automated and mostly driven by code. [GitOps enables] the management of code to control such a huge infrastructure and ensure your application is deployed in the most powerful way possible. “

Does GitOps suit your team?

So is GitOps right for you and your team? “Probably” could be the most reasonable answer – there’s a reason GitOps has become so popular. Unless your company has a cloud footprint and has no plans to roll out containers and other cloud-native technologies – in which case you’re probably not reading this article – GitOps is worth a review for practicing DevOps principles and more from you automate pipeline and infrastructure.

One of the most important factors, according to Red Hat’s Nadhan, is how cloud-native your business will be – and how quickly.

“If you are a company with the short-term goal of accelerating the introduction of container platforms in the cloud, you should choose GitOps,” says Nadhan. “If you are a company dealing with the need to revitalize your people with a changed mindset and need to coexist with more traditional applications, start with DevOps and finally choose GitOps for select workloads.”

[ Want cloud-native app advice? Get the eBook: O’Reilly: Kubernetes patterns for designing cloud-native apps. ]



Share.

Leave A Reply