Table of Contents
#GitOps + Kubernetes Series
- GitOps + Kubernetes Explained
- GitOps + Kubernetes: Managing Kubernetes Secrets
- Comparing Argo CD vs. Jenkins X vs. Flux vs. Spinnaker
- GitOps + Kubernetes: Adopting GitOps in Enterprises
GitOps is a concept that promotes using Git version control to manage IT infrastructure and operations. By doing so, teams can reliably version, track, and manage changes in an automated and secure manner, as well as quickly roll back any changes should an issue arise.
GitOps encompasses different components to make this work, such as using CI/CD tools to deploy infrastructure and cloud-native applications.
Most tools targeting GitOps only offer CD functionality, but some do offer full CI/CD features. This begs the question, which GitOps tool is best for your organization?
Let’s compare the four most popular GitOps tools, so you can make an informed decision:
- Argo CD
- Jenkins X
#Why These Tools?
GitOps is a relatively new way of managing Kubernetes clusters; most of the tools available are actually CI/CD tools that are still evolving to conform to GitOps principles. Tools that position themselves as specifically designed for GitOps are usually newer. This roundup covers tools like Spinnaker that have a proven track record in GitOps, as well as more recent tools such as Jenkins X, Flux, and Argo CD. None of them are perfect, but each one excels in certain use cases.
We’ll compare these four tools against the following criteria:
- Ease of use
- Kubernetes support
- Community and documentation
Let’s get down to business with one of the strongest contenders, Argo CD.
Argo CD is an open-source declarative GitOps continuous delivery tool designed specifically to run on Kubernetes. It was created by Intuit to help developers automate deploying applications to Kubernetes clusters, ensuring that they’re always running the latest version. Today, Argo CD is a Cloud Native Computing Foundation (CNCF) graduate project focused on helping developers track apps and infrastructure changes through GitOps declarative configuration principles.
Here’s some of what makes Argo CD so special:
- Ease of use. Argo CD is one of the easiest tools to use in this roundup. Its native UI is intuitive, giving you full visibility and control over your CD pipelines. Argo CD’s powerful CLI lets you manage secrets, resource actions, configuration, and more. However, keep in mind that Argo only fulfills the role of a CD tool within the overall GitOps landscape. So if your company is looking for a GUI where you can manage the entire CI/CD lifecycle, maybe Spinnaker is a better option.
- Features. Argo CD features are in line with its CD role. In that sense, it offers everything you need to keep your infrastructure in sync with your repository: automatic deployments based on changes; multi-tenancy; support for Kustomize, Helm, Jsonnet, and plain YAML; pipeline health status analysis; and audit trails. Argo CD also supports advanced features such as blue/green and canary upgrades, quick rollback, multiple clusters, manual and automatic synchronization, and RBAC policies.
- Integrations. Argo CD does not disappoint here, with notable features including webhooks to pull changes from GitHub, BitBucket, and GitLab; integration with Prometheus metrics, support for major SSO solutions like OIDC, OAuth 2.0, GitHub, GitLab, Microsoft, and LinkedIn; and integration with major CI tools such as Jenkins, GitHub Actions, CircleCI, and GitLab CI.
- Kubernetes support. Argo CD was born as a cloud-native tool specifically for Kubernetes, so Kubernetes deployment is trivial. That being said, if your organization requires a tool with a more holistic approach, perhaps you should skip to the Spinnaker section.
- Configurability. You can manage Argo CD from its UI or from the command line. This flexibility lets you manage and configure from the most suitable environment for the task at hand. For example, you may prefer to handle manifests from the CLI, but it’s certainly easier to view the status of CD pipelines from the UI.
- Community and documentation. Even though Argo CD is relatively young (released in 2018), it has a vibrant community that constantly contributes to improving the project. Don’t overlook the fact that Argo CD is part of a larger ecosystem that includes Argo Workflows, Argo Rollouts, and Argo Events. Its documentation is quite complete, as well as other online resources like videos and courses.
- Popularity. Its simplicity of use has made Argo CD the favorite tool for many developers and companies, including giants such as CARFAX, CERN, Capital One, edX, New Relic, Mercedes-Benz Tech Innovation, Red Hat, Splunk, and Tesla.
If you’re looking for a great CD tool for Kubernetes that you can easily integrate with the rest of your GitOps pipeline, then Argo CD may fit the bill. However, for some companies, it’s more convenient to use the same platform for the entire CI/CD workflow.
That brings us to the next tool on the list, Jenkins X.
Jenkins X is a multi-cluster open-source CI/CD GitOps tool. Notable aspects of Jenkins X include its use of Tekton as its underlying pipeline execution engine; its ability to spin up preview environments on pull requests; and automatic comments on your commits.
It would take a whole article to delve deeper into the technologies that Jenkins X encompasses, but possibly that is its main value proposition. As a developer, you don’t need to understand these technologies since Jenkins X is responsible for abstracting all the complexity behind the scenes.
In brief, Jenkins X offers:
- Ease of use. This is a controversial point. On the one hand, if you love working from the CLI, Jenkins X is for you. Simply use the
jx project quickstartcommand to create a bare minimum project in different languages. Use
jx project importto import your current project, and Jenkins X automatically detects the language and sets up the repository for you. But if you prefer a graphical interface, your options are limited. A popular workaround is using Octant, but the experience is far from what you get with Argo CD.
- Features. The most outstanding feature of Jenkins X is undoubtedly its ability to launch Preview Environments, where stakeholders can evaluate the progress of a project, automated CI/CD GitOps pipelines orchestrated by Tekton, and ChatOps. However, a key feature that’s missing is multi-tenancy support.
- Integrations. Jenkins X offers a full CI/CD workflow. It also provides good extensibility via Jenkins X Plugins like
jx-pipeline. You can easily deploy Jenkins X on major cloud providers like EKS, GKE, or AKS, as well as integrate with GitHub, Bitbucket, or GitLab. Jenkins X offers everything you need to get up and running with GitOps in no time—as long as your team is okay with the opinionated philosophy that allows Jenkins X to abstract the developer from its underlying technologies.
- Kubernetes support. Jenkins X was built for Kubernetes, so it offers robust support and easy integration with other cloud-native apps and services. However, this doesn’t set it apart much from the rest of the tools in this list.
- Configurability. This is one of the most discussed aspects of Jenkins X. In order to simplify GitOps for developers, Jenkins X implements CD in a certain way; in other words, it makes some configuration decisions for you. If your organization is okay with sacrificing some control for convenience, this opinionated approach drives added value. But if your team prefers maximum flexibility, versatility, and control over every part of the GitOps workflow, then Jenkins X may not be your optimal solution.
- Community and documentation. The introduction of Jenkins X in 2018 greatly impacted the Jenkins CI community. Using a new code base, migrating to Kubernetes, and leaving Groovy behind in favor of YAML declarative pipelines all caused mixed opinions. However, today the community is stronger than ever, as you can see from the project’s comprehensive documentation.
- Popularity. The popularity of Jenkins X isn’t easy to define. If you check the Argo CD repository, you’ll notice that it has three times more stars than [Jenkins X](https://github.com/jenkins-x /jx) (12.5K vs. 4.3K). Does that mean Jenkins X is less popular? That’s debatable. The Jenkins CI repository has 20.5K stars, which is often used in combination with Argo CD. It might be fair to wait for Jenkins X to mature more before calling a winner.
By providing a unified platform with integrated CI/CD capabilities, Jenkins X can help teams quickly and efficiently deploy applications and manage their infrastructure from one central place. Its extensive library of plugins allows your organization to use Jenkins X for different tasks, such as automating processes like deployment pipelines, testing strategies, backup plans, and monitoring solutions.
All in all, if you don’t mind working with an opinionated GitOps tool, Jenkins X is an excellent cloud-native solution.
Flux is an open-source CNCF project originally developed by Weaveworks that has many similarities to Argo CD. At their core, both are CD tools with no CI capabilities, and both support Kubernetes RBAC, multi-tenancy, Helm, and Kustomize. However, Flux adopts a CLI-first approach more like Jenkins X, where UIs are provided as third-party add-ons. Flux’s architecture is based almost entirely on custom Kubernetes controllers, which makes it comparatively simpler than the other tools on this list.
Does that simplicity impact Flux as a GitOps tool? Let’s see:
- Ease of use. Flux’s direct approach to GitOps makes it one of the easiest tools to use in this roundup. Simply install Flux CLI, and with one command, you can bootstrap Flux in your Kubernetes environment, indicating which repository to monitor for changes. From there, you can use the Flux CLI to manage Helm or Kustomize files, create images, secrets, and more.
- Features. Flux was created specifically to facilitate GitOps for both apps and infrastructure running on Kubernetes. It supports multi-tenancy, allows you to work with Helm and Kustomize, and provides built-in support for Kubernetes RBAC. However, a weakness of Flux is that it does not offer SSO support like Argo CD does. It does offer automatic syncing of GitOps resources by design, something that sets it apart from Argo CD, where synchronization is usually done manually from the UI.
- Integrations. Flux offers a rich ecosystem that includes EKS Anywhere, AKS, Weave GitOps Enterprise, OpenShift, Flagger progressive delivery (blue-green deployments and canary releases), and even dedicated graphical UIs. For CI tasks, you can configure to work with Jenkins.
- Kubernetes support. As a CD tool built specifically for Kubernetes, of course Flux offers native support for Kubernetes.
- Configurability. While Weaveworks offers free and open-source UI for Flux, at its heart, Flux is intended to be managed from the command line. This can be an advantage or disadvantage depending on your administration preferences. If your organization tends to favor GitOps UIs, Argo CD might be a better alternative.
- Community and documentation. Weaveworks developed Flux CD in 2016, and it still has quite an active community around it. Its documentation can be said to be good, but it doesn’t compare to the level of detail provided by the rest of the tools on this list.
- Popularity. Since Flux is a CNCF-graduated project, it’s not surprising that it’s very popular among developers.
Simply put, Flux is an invaluable asset for cluster operators, platform engineers, and app developers looking to optimize their declarative delivery process and bolster their overall GitOps capabilities.
Now let’s talk about the battle-tested, enterprise-grade, open-source CD platform Spinnaker. Initially developed by Netflix, Spinnaker stands out with its flexibility and versatility. Unlike the rest of the tools on this list, Spinnaker allows you to extend the GitOps declarative approach beyond Kubernetes. You can deploy VMs and serverless apps on-premises or in the cloud. This makes Spinnaker particularly attractive for large organizations that require a universal solution for all their needs.
However, does this also mean that Spinnaker is a jack of all trades and therefore master of none? Let’s find out:
- Ease of use. Spinnaker consists of several microservices, including a browser-based UI called Deck from which you can create and configure pipelines and set automated triggers. Spinnaker’s services and configuration are handled via the Halyard CLI.
- Features. Spinnaker wasn’t designed specifically for GitOps, but its long list of features—including multi-cloud deployment of containers, VMs, and functions to the public cloud as well as deployment of apps and infrastructure on Kubernetes—allows it to offer that functionality seamlessly. Spinnaker has native support for blue/green, canary, and rolling update deployment strategies; automated canary analysis; and notifications using myriad channels like email, Slack, Twilio, ServiceNow, and Microsoft Teams.
- Integrations. Spinnaker’s maturity is reflected in the number of integrations it offers. From cloud storage providers like Google Cloud, AWS S3, Azure, MinIO, Redis, and MySQL to cloud providers like Kubernetes, Cloud Foundry, and Oracle Cloud, you can integrate almost any DevOps tool or provider with Spinnaker.
- Kubernetes support. Spinnaker’s architecture is based on microservices, so orchestrating pipelines on Kubernetes is not a problem.
- Configurability. Spinnaker relies on Halyard, a command line tool that streamlines its installation and configuration. Thanks to Halyard, it’s easy to integrate CI tools like Jenkins or Travis CI with Spinnaker, or configure major cloud providers by simply running
hal config provider.
- Community and documentation. Spinnaker has been around since 2015, so it’s no surprise that it has a thriving community of contributors. It also has comprehensive documentation as well as enterprise support and educational courses.
- Popularity. Given its focus on large deployments, Spinnaker is quite popular at the enterprise level. Some success stories include Avast, Netflix, Waze, and Airbnb just to name a few. This is not to say that Spinnaker isn’t popular with developers, but tools like Argo CD, Flux, or Jenkins X tend to be more common for more mundane use cases.
There’s no doubt that Spinnaker offers many possibilities, especially for large organizations that deploy loads other than on Kubernetes clusters. However, if your infrastructure runs entirely on Kubernetes, it may be more convenient to implement other solutions like Jenkins X, Argo CD, or Flux that offer CD specifically for Kubernetes.
Your key takeaways from this roundup are:
- You’ll most likely require more than one tool to build your GitOps workflow, so pay special attention to the integrations each tool offers.
- Given their ease of use and cloud-native architecture, Argo CD and Flux are arguably the best options for implementing GitOps principles quickly, at least in terms of CD pipelines.
- Spinnaker’s reliability and its ability to extend GitOps beyond Kubernetes make it an ideal candidate for the enterprise use case.
- Jenkins X’s value proposition is interesting, providing a complete GitOps workflow with little knowledge of CI/CD tools. However, keep in mind what we said earlier—this comes at a price in terms of configurability.
- Spinnaker and Argo CD can be managed through UIs or CLIs, while Flux and Jenkins X favor using CLIs for configuration and management.
#Additional Articles You May Like
- Getting the most out of your Delivery Pipeline with Loft & Argo CD
- How Codefresh Uses vcluster to Provide Hosted Argo CD
- 5 Tips for Dealing with Kubernetes Day 2 challenges
- Kubernetes Multi-Tenancy with Argo CD And Loft
- Implementing Preview Environments with GitOps in Kubernetes
- Managing Kubernetes RBAC configurations with GitOps - Getting Started and Practical Example
- Managing Kubernetes RBAC configurations with GitOps - Monitoring, Auditing, Templates and Automation, Security Considerations
- Best practices for managing Kubernetes RBAC with GitOps
- Kubernetes RBAC: Basics and Advanced Patterns