Argo CD v2.0-rc1 is here!
Argoproj team is proud to announce the first release candidate for Argo CD v2.0! As denoted by the version number, this is a major release with many new features and enhancements, but no breaking changes or painful migrations. So what is new?
- After several months of experimentation, we’ve finalized the notifications feature, which is now provided by the Argo CD Notifications project. Read more about it here: https://blog.argoproj.io/notifications-for-argo-bb7338231604
- Do you use Argo CD to manage thousands of applications? Use Argo CD Application Set to make managing thousands of applications almost as easy as managing one application. Read more about it here: https://argocd-applicationset.readthedocs.io/
- Are you tired of updating the image tag in your deployment repository? Automate this tiresome chore with the Argo CD Image Updater. Read more about it here: https://blog.argoproj.io/closing-ci-cd-loop-using-argoproj-a78a50a98fe8
Keep reading to learn about new Argo CD user interface features, Kubernetes resource syncing and diffing enhancements and many more! Let’s start with the user interface enhancements as they are the first ones most users will see!
Pods View
The Argo CD user interface is a great tool for visualizing the Kubernetes resource hierarchy and helps developers better understand how their applications are deployed in the cluster. Argo CD v2.0 takes this one step further and introduces the Pods View feature.
Pods View is particularly useful for applications that have hundreds of pods. Instead of visualizing all Kubernetes resources for the application, it only shows Kubernetes pods and closely related resources. Access the view via the Pods View type icon in the right top:
The screenshot above demonstrates how you can use the new view to quickly find how many pods your application is running and which resources created them.
Change the GROUP BY setting to Parent Resource to see if any of your workloads are updating:
The example above demonstrates the rolling update of a Deployment.
Finally, group your pods by Node to see how they are spread across the nodes and how many resources they requested:
Logs Viewer
Argo CD provides a way to see live logs of pods, which is very useful for debugging and troubleshooting. In the v2.0 release, the log visualization has been rewritten to support pagination, filtering, the ability to disable/enable log streaming, and even a dark mode for terminal lovers :-) Do you want to see aggregated logs of multiple deployment pods? Not a problem! Just click on the parent resource such as Deployment, ReplicaSet, or StatefulSet and navigate to the Logs tab:
By the way, the Argo CD CLI supports log streaming as well. Use the `argocd app logs` command to get logs for one or more pods!
Banner Feature
Want to notify your Argo CD users of upcoming changes? Just specify the notification message and optional URL using the ui.bannercontent
and ui.bannerurl
attributes in the argocd-cm
ConfigMap. Argo CD will display the message, in this case, “Hello there!” as a banner on the UI.
Don’t worry, the users can dismiss the notification once they get tired of it.
The Pods View, new Logs Viewer, and Banner are just a few of many UI features in Argo CD v2.0. The full list includes 40+ bug fixes and enhancements.
Core Features
New UI features are not the only improvement of this release. The team keeps improving core features such as resource diffing and syncing.
Resource deletion/pruning
Argo CD deletes obsolete Kubernetes resources during application synchronization, when you decide to delete the application itself, or if you choose to delete individual resources using the user interface. Historically, the deletion was performed using foreground cascading deletion. Foreground deletion means that Kubernetes must first delete all child resources before deleting the resource itself and can cause problems in some Kubernetes versions where Argo CD could get stuck trying to delete resources that are no longer needed. Version 2.0 introduces settings to configure the deletion type:
- The new sync option
PrunePropagationPolicy=background
allows using background deletion during syncing - New application finalizer
resources-finalizer.argocd.argoproj.io:background
allows using background deletion when the application is deleted
These new options are also exposed in the web UI and CLI when deleting applications, individual resources, or when modifying sync options.
Sync Changed Resources Only
During synchronization, Argo CD executes kubectl apply
for all application resources regardless of resource diff status. This might take a long time for applications that have hundreds of resources. Now you can use the ApplyOutOfSyncOnly=true
sync option to skip syncing resources that are already in the desired state.
Prune Last
The new sync option PruneLast=true
allows deferring resource pruning until the last synchronization phase after all other resources are synced and healthy. This addresses a few use cases where Kubernetes resources depend on each other. For example, you can defer obsolete ConfigMap pruning until all other application resources are synched and running.
The new sync option can be used at the application or individual resource level using the argocd.argoproj.io/sync-options
annotation.
New Health Checks
As you might know, Argo CD includes health checks for multiple third-party CRDs. The v2.0 release introduces health checks for sealed-secrets, kubernetes-external-secrets, and strimzi CRDs.
Security
For the v2.0 release, we also made Argo CD even more secure. With the help of our awesome community, we’ve discovered and fixed several important vulnerabilities as well as addressed some known security limitations. You can find more information about this at the Argoproj GitHub Security Advisories, which we’ll use from now on to keep our community informed about security issues that have been found and fixed in Argo CD.
We also migrated the base image of our official container distribution from Debian to Ubuntu, which has a better track record of fixing known vulnerabilities within the container image.
The argocd-util CLI for everyday Argo CD Utilities
Every release of Argo CD introduces a few more configuration settings. This makes Argo CD more adaptable to our users’ needs but also more difficult to manage. Argo CD Util is one way to address this problem.
Argo CD Util is a CLI tool that contains useful commands for operators who manage Argo CD. The tool has existed for quite a long time and has accumulated a lot of useful features. For example, you can use it to extract the managed cluster kubeconfig and troubleshoot access issues or validate Argo CD configuration changes before applying them to production Argo CD instances. Starting from this release the Argo CD Utility is published with every Argo CD release as a Homebrew installation.
One of the notable features of Argo CD Util is a set of commands that allows generating a declarative definition of Argo CD objects such as Application, Project, Cluster of Repository. Instead of guessing the YAML representation format, you can run argocd-util app generate-spec
command and use the same set of flags as argocd app create
command to specify application properties.
More features and learning materials are coming shortly. Meanwhile, please give the argocd-util CLI a try, and give us your feedback to further improve this tool.
$ argocd-util app generate-spec guestbook \
— repo https://github.com/argoproj/argocd-example-apps \
— path guestbook \
— dest-server https://kubernetes.default.svc \
— project default \
— dest-namespace defaultapiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: guestbook
spec:
destination:
namespace: default
server: https://kubernetes.default.svc
project: default
source:
path: guestbook
repoURL: https://github.com/argoproj/argocd-example-apps
Where Can I Get the New Release?
For more details and installation instructions, check the release notes, and upgrade instructions. A big thanks to all Argo Community contributors and users for their contributions, feedback, and help testing the release!
Summary
The cool new features described in this blog post are just the tip of the iceberg! They are built on top of hundreds of community contributions of bug fixes, refactorings, and enhancements of existing features. Argo CD v2.0 would not be possible without the constant feedback and contributions from our fabulous community. Please try the first release candidate for v2.0 and share your feedback. We still have many new ideas to build the best GitOps operator for Kubernetes and v2.0 is just the beginning of the next chapter in the Argo CD saga!