Red Hat blog
ArgoCD and GitOps are the topics for Technically Speaking, Episode 12, in which Red Hat CTO Chris Wright has a conversation with Ed Lee, Chief Architect of Development Platform for Intuit, about DevOps and GitOps, the birth of the ArgoCD open source project, and more.
So, what is GitOps, and how does ArgoCD help?
What is GitOps?
GitOps is a set of DevOps practices that are used to manage infrastructure and application configurations using the Git open source version control system as a “single source of truth,” and is widely used with Kubernetes.
Kubernetes is one of the most popular open source projects in the world, and it has helped change how software is managed. In the process, however, it also introduced a lot of new complexity for developers and systems administrators alike.
The need to declaratively manage Kubernetes clusters and application delivery is what is driving GitOps on Kubernetes.
At its core, GitOps maintains that a system must have its desired state expressed declaratively, and that the desired state is versioned and immutable, pulled automatically, and continuously reconciled.
GitOps provides an array of benefits, including standardizing workflows, simplifying tool sets, reducing potential variables and errors, increasing developer productivity, and more.
But, as Intuit discovered, there was no purpose-built enterprise toolset for GitOps on Kubernetes, which led them to developing ArgoCD as an internal project.
What is ArgoCD?
Implemented as a Kubernetes controller, ArgoCD continually monitors running applications to verify that the live state matches the desired state, as defined in Git. If an application’s live state deviates from the desired state, ArgoCD reports the differences and allows the live state to be automatically synced to match the desired state. Additionally, any changes made to the “single source of truth” can automatically be applied to the target environments.
Put simply, ArgoCD is an easy to use tool that allows development teams to deploy and manage applications without having to learn a lot about Kubernetes, and without needing full access to the Kubernetes system. This hugely simplifies the process of running applications in Kubernetes, ultimately leading to better security and increased developer productivity.
ArgoCD origin story
When Intuit decided to adopt Kubernetes, they realized they had to think about how they wanted DevOps to work in the organization. “When we were looking at doing DevOps, it didn’t seem right to just give developers access to Kubernetes clusters and tell them, ‘here, go plan and run your own applications.’,” said Lee.
Instead, Intuit decided to create a set of tools and an environment that their development teams could safely use to become productive very quickly, without having to become Kubernetes experts. And this is how ArgoCD was born.
Why open source?
Intuit realized that ArgoCD addressed a common problem in the industry, so they decided to open source the project. They had already launched another successful open source project called Argo, and ArgoCD seemed like it would be a natural complement to that suite. Of course, by open sourcing ArgoCD, other users could then contribute to the project, helping to further improve and develop the tool.
Intuit found that developing in the open with the community enabled the project to grow broader and more complete, because other people were willing and able to spend time and resources to flesh out additional use cases for the tool.
As Wright says in the introduction to this episode, “Opening a project up to a larger community not only makes logical sense because more people can address problems faster, but it also fosters the creativity and innovation we find in diverse communities. When we scratch our own itch, we may pave the way for additional innovation and even breakthroughs in the technology involved.”
What’s next for ArgoCD?
One thing the ArgoCD project is working on is Argo Rollouts, a Kubernetes controller and a set of custom resource definitions (CRDs) which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation and progressive delivery features to Kubernetes.
Argo Rollouts is meant to integrate with ingress controllers and service meshes, allowing traffic to be gradually shifted to the new version during an update. This is in contrast to the native Kubernetes
RollingUpdate strategy which has several limitations that make it riskier to use in large scale, high-volume production environments.
View the full video
If you’d like to learn more about ArgoCD and hear the rest of the conversation between Wright and Lee, you can view the full episode here:
About the author
Deb Richardson is a Contributing Editor for the Red Hat Blog, writing and helping shape posts about Red Hat products, technologies, events and the like. Richardson has over 20 years' experience as an open source contributor, including a decade-long stint at Mozilla, where she launched and nurtured the initial Mozilla Developer Network (MDN) project, among other things.