ArgoCD vs FluxCD vs Jenkins X: Which GitOps implementation tool suits you the best?
With GitOps practices gaining momentum, several players forayed into the game with new tooling, initiatives and philosophies.
This article will take you through the three most popular GitOps tools ArgoCD, FluxCD and Jenkins X; and draws comparisons between them.
Let’s start with a quick overview –
GitOps is a distributed version control paradigm in which all the resources and manifests are defined in the git.
So far, open-source projects like Jenkins X, ArgoCD, and Flux have been driving GitOps. With the GitOps space still being in its infancy, these open-source projects have developed their native approaches to implementing GitOps.
Let's discuss each of these tools in detail –
ArgoCD is a declarative CD tool for Kubernetes. As a part of the Argo family, ArgoCD has been incubated within the CNCF. All the resources are defined in the Git repo as Argo can directly interact with the deployments. The CLI and respective UI offer a comprehensive toolset that facilitates the deployment of git-defined resources to the Kubernetes cluster.
It focuses on managing application deployments, with an outstanding feature set covering several synchronization options, user-access controls, status checks, and more.
Additionally, ArgoCD also has a friendly modern web UI, where the users can check the status of their application deployments. At the same time, administrators can manage both projects and user access.
Argo CD is installed and managed in a native Kubernetes way.It runs in its own namespace on Kubernetes, with all configurations saved in Config Maps, Secrets, and Custom Resources.
- It offers multi-tenancy through the concept called Projects.
- It can sync Kubernetes clusters while also being able to handle external clusters.
- It addresses the GitOps challenge of resources drifting from the configuration. Just like Flux, ArgoCD also detects drifted resources.
- ArgoCD can remove obsolete resources during the sync process.
Though Weaveworks takes the credit for developing Flux, it is currently a CNCF project. Similar to ArgoCD, Flux too is a continuous delivery tool for Kubernetes.
Flux CD, a GitOps operator for Kubernetes, synchronizes the state of manifests in a Git repository to what is running in a cluster. Flux CD runs in the cluster to which the updates are applied.
While the principle of defining the deployment resources in Git is similar to that of ArgoCD, the rollout is based on pull requests rather than having direct interactions with the Kubernetes cluster.
Using the flux bootstrap command, you can install Flux on a Kubernetes cluster and configure it to manage itself from a Git repository.
- It deploys new versions of container images automatically.
- It allows the re-application of drifted resources.
- It maintains garbage collection and deletes objects that didn't sync in the previous phrase.
Flux has a simple design that supports only one repository – this is both an advantage and a disadvantage. While it makes it easy to understand and use, it turns into a limitation when there is more than one cluster.
Leaving the architecture of the master-worker node behind, Jenkins X has been developed as a Kubernetes-native CI/CD engine. This open-source full CI/CD solution is built around GitOps and uses Tekton. While the name may give hints that Jenkins X could be the next version of Jenkins, Jenkins X has very few similarities with Jenkins and has a different direction.
It's important to note that besides the GitOps-based deployment capabilities, Jenkins X also covers a broader spectrum of the development cycle, including the build-and-test phases from CI pipelines and build-and-store container images.
Jenkins X sets up Kaniko and Skaffold to build container images, and Helm charts are used for packaging the Kubernetes manifests.
- Managed by a GitOps workflow.
- Supports multiple clusters.
- Quickstart for new projects.
- Default build pipelines can be triggered after events from an application repository.
- Provisioning of Git repositories.
- The ChaOps feature enables operations and development activities to be managed through a chat thread.
- Preview environments.
The lack of multi-tenancy is the biggest drawback it has.
ArgoCD vs FluxCD vs Jenkins X: Comparison
Argo CD and Flux CD are basically CD(Continues Delivery) tools. On the other hand, Jenkins X is a complete CI/CD (Continuous Integration and Continuous Delivery) tool.
Since Jenkins X is a CI/CD tool, you don't have to set up a CI pipeline. However, setting up a CI pipeline separately is mandatory when using the other tools.
Argo CD is installed and managed in a Kubernetes native way. It is easier to manage than the other two tools - Jenkins X and Flux CD.
Argo CD supports multi-tenancy. On the other hand, Flux CD and Jenkins X do not support multi-tenancy applications by default.
The table below draws a deeper comparison between the tools.
While all the three tools discussed above have their own capabilities, each of them is also associated with a set of cons. So, choosing the right tool is dependent entirely on the use case.