Argo CD v2.2 release candidate

Alexander Matyushentsev
Argo Project
Published in
4 min readNov 12, 2021

It is time for the next Argo CD release! Argo CD v2.2 contains 207 commits from 73 contributors which include three major new features as well as dozens of bug fixes, usability, and performance improvements. Read on to learn more!

Photo by Mick Haupt

Project Scoped Repositories and Clusters

While there are many ways to use Argo CD, a very popular scenario is a multi-user installation where a single Argo CD instance is managed by operators but is also accessible to developers who want an overview of their projects.

Argo CD has native integration for connecting Git repositories as well as configurations for Kubernetes clusters that developers can use as deployment targets. The typical flow until now was for operators to configure Argo CD with all the approved repositories and clusters ahead of time.

A big problem with this approach is that, often, developers want to add new git repositories and clusters but only operators have the permissions to do so. Developers waiting for tickets to update Argo CD while being blocked from deploying their application is a big anti-pattern and goes against the spirit of DevOps which promotes self-service and close collaboration between all teams.

To address this problem, we have added project-scoped Repositories and Clusters to Argo CD 2.2. This means that instead of requiring operators to configure all clusters and git repositories that can be used in advance, developers can now do this for themselves on demand!

The way this works is that operators use RBAC rules for a project to flexibly describe the acceptable clusters and git repositories. Then developers can add a cluster or repository to ArgoCD on their own if it matches the accepted RBAC criteria. No more opening tickets and waiting for the ticket to be serviced!

You can read about the details in the documentation page.

Config Management Plugins V2

In addition to plain YAML manifests in the deployment repository, Argo CD supports various config management tools. The list includes popular tools such as Kustomize, Helm, Jsonnet. However, there are many other popular tools in the Kubernetes ecosystem. The additional tools can be integrated using the Config Management Plugins feature. The feature allows configuring any shell script as a generator for Kubernetes resource manifests. In this release, the Config Management Plugins feature is getting a power boost and is significantly easier to use.

With Argo CD 2.2, plugins are running in a sidecar container that allows using a separate image to package plugin dependencies. So you can have an image that includes Node JS, Python, or any other dependency required for your plugin. The plugin image needs to have a plugin.yaml file that contains all required information about the plugin.

Having everything in one image improves the getting started experience. The installation requires only argocd-repo-server Deployment patch. The patch can be maintained in a separate Git repository and delivered as a Kustomize component. This allows us to completely hide the integration details from the end-users and even the Argo CD administrator.

We are planning to continue working on improving the Config Management Plugins feature. The next step is to improve CLI and Argo CD UI to deliver the first class-like experience for any config management tool.

Resource tracking

Argo CD has traditionally tracked the resources it manages by the well-known “app.kubernetes.io/instance” property.

While using this property is ok for simple scenarios, it also has several limitations:

  • Labels are truncated to 63 characters. Depending on the size of the label you might want to store a longer name for your application.
  • Other external tools might write/append to this label and create conflicts with Argo CD. For example, several Helm charts and operators also use this label for generated manifests confusing Argo CD about the owner of the application.
  • You might want to deploy more than one Argo CD instance on the same cluster (with cluster-wide privileges) and have an easy way to identify which resource is managed by which instance of Argo CD.

To overcome these issues, ArgoCD now allows you to use a new annotation, argocd.argoproj.io/tracking-id, for tracking your resources. Using this annotation is a much more flexible approach as there are no conflicts with other Kubernetes tools, and you can easily install multiple Argo CD instances on the same clusters. Here is an example:

You can enable the new tracking method by editing the argo-cm configmap. Apart from an option to use either the existing label or the new annotation, there is a compatibility option to use both, but only honor the annotation for tracking purposes. See more details at the documentation page.

Bug Fixes and Performance Enhancements

Last but not least, this release delivers dozens and dozens of usability/performance enhancements and bug fixes. Below is a short list of the most notable improvements:

  • Argo CD API server caches RBAC checks that significantly improves the GET /api/v1/applications API performance (#7587)
  • Argo CD RBAC supports regex matches (#7165)
  • Health check support for KubeVirt (#7176), Cassandra (#7017), Openshift Route (#7112), DeploymentConfig (#7114), Confluent (#6957) and SparkApplication (#7434) CRDs.
  • Persistent banner (#7312) with custom positioning (#7462)
  • Cluster name support in project destinations (#7198)
  • 30+ more features and a total of 84 bug fixes

Where Can I Get the New Release?

For more details and installation instructions, check the release notes, and upgrade instructions. Please try the release candidate and share your feedback. A big thanks to all Argo Community contributors and users for their contributions, feedback, and help testing the release!

Thanks to @pasha-codefresh and @kostis-codefresh for preparing the release blog!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Written by Alexander Matyushentsev

Co-founder and Chief Architect at Akuity | Argo Project Leader with 6-year tenure | ex-Intuit | Running the Enterprise Company for Argo — https://akuity.io

Responses (1)

What are your thoughts?

such a brilliant photo on this