Argo CD v2.7 Release Candidate

Kostis Kapelonis
Argo Project
Published in
6 min readMar 28, 2023

--

Just 4 months after the last Argo CD version, there is a new release candidate out! We are excited to announce Argo CD v2.7 release candidate with 37 new features and 83 bug fixes.

As always, please test the release candidate and send us feedback about any bugs or issues you encountered. This is your big opportunity to make your voice heard and help Argo CD become even better.

Enhanced pod logs viewer

The most user visible feature in this release is the complete revamp of the UI for looking at pod logs. This has been upgraded both in terms of features as well as speed.

It now supports two modes “follow” and “historical”

  • In “follow” mode the logs are tailed.
  • In “historical” mode you can choose a “since time” and number of lines to view.
  • In both modes you can choose to filter by text (and also which container to look in case of multiple containers)
New logs UI

The underlying rendering code has been upgraded to allow you to scroll through thousands of logs line without performance issues on the browser. Thanks Alex Collins (Intuit) for implementing this feature.

Override target namespace with Kustomize

Argo CD has built-in support for Kustomize templating. Argo CD has the capability to automatically run Kustomize on its own if a kustomization yaml file is detected in the target Git folder.

Apart from ad-hoc transformation options, Kustomize also includes several instruction shortcuts such as commonLabels, images, namePrefix etc. One such shortcut is for namespaces (also available in the CLI as kustomize edit set namespace <name>) which sets the target namespace in all processed resources.

Argo CD already defines the target namespace on its own via the Application.spec.destination.namespace option. This option however is using kubectl behind the scenes and it misses some resources such as

  • ClusterRoleBinding.subjects[*].namespace
  • APIService.spec.service.namespace
  • Other Custom Resources

With this new Argo CD release a new kustomize parameter has been added as Application.spec.source.kustomize.namespace which maps to the kustomize method of setting namespaces, making Argo CD support dynamic resources and everything else supported by Kustomize.

Here is an example of the new option

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: guestbook
spec:
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: HEAD
path: kustomize-guestbook

kustomize:
namePrefix: prod-
namespace: my-app-ns

It is also available as an extra option in the respective Argo CD CLI commands as --kustomize-namespace <namespace>

This new addition should greatly improve the level of Kustomize compliance offered by Argo CD and also solve several problems with missing namespaces in specific resources.

Note that if spec.destination.namespace and spec.source.kustomize.namespace are both set, Argo CD will defer to the latter, the namespace value set by Kustomize.

Thanks Andrii Chubatiuk (Motional) for implementing this feature.

Argo CD UI extensions can now use a backend

Argo CD already supports custom UI extensions that allow developers to add their own functionality inside the Argo CD UI (in the “more” tab). These UI extensions are confined however to the Argo CD application model and have no access to other external resources.

To overcome this limitation starting from Argo CD v2.7 extension developers are now free to use external backends to their UI extensions by using the new Proxy Extension mechanism. In summary, Argo CD itself will act as a reverse proxy and offer network access to the UI extensions that query an external URL.

The process for extension developers is the following:

  1. You define an external URL (accessible by your Argo CD instance) and set up basic networking properties such as connection timeouts, keepalive periods, max connections etc.
  2. This URL becomes then available as <argocd-host>/extensions/my-extension
  3. You can write any UI extension and read/load data from this proxied URL in addition to the information already provided by the Application object

We are very excited to offer this powerful mechanism to extension writers and can’t wait to see how the Argo CD community will take advantage of this new capability.

Note that proxy extensions are an “alpha” feature and disabled by default in new Argo CD installations. Read more details in the documentation.

Thanks Leonardo Luz Almeida (Intuit) for implementing this feature.

Showing Pod Readiness Gate errors in the Argo CD UI

Apart from the usual readiness and liveness probes, Kubernetes also supports custom Readiness Gates that allow your application to define in a more fine grained manner the “ready” state of your pod.

Readiness gates are composed of one or more conditions which are described in the Pod resource and are evaluated by kubelet to make a decision if the application is ready to serve traffic or not.

In Argo CD v2.7 you can now see in the UI if any of the readiness gates are failing as well as any related errors with their configuration.

Readiness Gate

Thanks Mayursinh Sarvaiya (Akuity) for implementing this feature.

Improved filtering for label and resource selectors

When using the argocd app wait and argo app sync commands, it is possible to use the -l / -- selector parameter filter based on labels and their values. It is also possible to use the--resource filter to only target certain types of resources.

With the v2.7 Argo CD release you are now able to exclude specific labels and resources of certain types. These are supported in the sync, wait, delete and list CLI commands.

Here are some examples:

argocd app delete -l '!app.kubernetes.io/instance'
argocd app list -l 'app.kubernetes.io/instance notin (my-app,other-app)'`
argocd app wait -l app.kubernetes.io/instance!=my-app
argocd app wait my-app --resource '!apps:Deployment:my-service'
argocd app sync my-app --resource '!*:Service:*

Thanks Mahesh Baliga (InfraCloud) for implementing this feature.

Other Notable Changes

Here are some other new changes that made it into the release

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 in testing the release!

Photo by Yaoyao Guo Zhang on Unsplash

--

--

Kostis is a developer advocate at Codefresh. He lives and breathes automation, good testing practices and stress-free deployments with GitOps.