
Argo CD v0.12 Released
The Argo Team is proud to announce the general availability of Argo CD v0.12, a declarative GitOps deployment tool for Kubernetes. We recently presented this at a recent Kubernetes community meeting, and if you’re new to Argo CD, be sure to check out the demo!
At Intuit, Argo CD manages over 1500 applications across 100+ Kubernetes clusters. The number of our development teams and applications on-boarding to Kubernetes has exploded in just the past few months, and many improvements were implemented to make Argo CD scale gracefully. Here are the highlights for this release.
Improved UI
Many improvements to the UI were made to application search discovery.
- Table view when viewing applications
- Filters on applications
- Table view when viewing application resources
- YAML editor in UI
- Switch to text-based diff instead of JSON diff
- Ability to edit application specs



Custom Health Assessments (CRD Health)
Argo CD has long been able to perform health assessments on resources, however this would only assess the health for a handful of native Kubernetes types (deployments, statefulsets, daemonsets, etc…). Now, Argo CD can perform health assessments of any CRD, by writing Lua scripts. For example, Argo CD can now understands the cert-manager Certificate and Issuer CRD and will report a Degraded
status when there are issues with the cert. Here is the Lua script to support this:
hs = {}
if obj.status ~= nil then
if obj.status.conditions ~= nil then
for i, condition in ipairs(obj.status.conditions) do
if condition.type == "Ready" and condition.status == "False" then
hs.status = "Degraded"
hs.message = condition.message
return hs
end
if condition.type == "Ready" and condition.status == "True" then
hs.status = "Healthy"
hs.message = condition.message
return hs
end
end
end
endhs.status = "Progressing"
hs.message = "Waiting for certificate"
return hs
Please contribute a custom health check for your favorite CRD! For an example on how to contribute a custom health check to Argo CD, see the following pull request.
Configuration Management Plugins
Argo CD introduces Config Management Plugins to support additional configuration management tools (note that Argo CD already supports Helm, Kustomize, Ksonnet and Jsonnet out-of-the-box). Using config management plugins, Argo CD can be configured to run specified commands to render manifests. This makes it possible for Argo CD to support almost any config management tool (e.g. kubecfg, kapitan, shell scripts, etc…) without any Argo CD feature enhancements or code changes. A few examples of how to customize your Argo CD instance are provided in our example repo:
https://github.com/argoproj/argocd-example-apps/tree/master/plugins
High Availability
Argo CD is now fully highly available! A set of HA manifests are provided for users who wish to run Argo CD with HA. HA is particularly useful for preserving the contents of the Argo CD state cache in the face of cluster node upgrades or other cases where the Argo CD pods may be restarted.
Improved Application Sources
Improvements were made to Argo CD’s supported config management tools:
- Kustomize 2 support
- Directories of YAML/JSON/Jsonnet can now be recursed
- Support for Jsonnet external variables and top-level arguments
Additional Prometheus Metrics
In addition to the existing metrics about health, and sync status, Argo CD now exports the following additional prometheus metrics:
- Sync counter to track sync activity and results over time
- Application reconciliation (refresh) performance metrics to track Argo CD performance and controller activity
- Argo CD API Server metrics for monitoring HTTP/gRPC requests
Using these new metrics, sophisticated dashboards can be created to gain unique insights about applications and deployment activity. An example grafana dashboard is provided:

Fuzzy Diffing
Argo CD can now be configured to ignore known differences for resource types by specifying a json pointer to a list of field paths to ignore. This helps prevent OutOfSync
conditions when a users have no control over the manifests, (e.g. upstream helm charts) and the differences are safe to ignore. Ignored differences can be configured at an application level, and/or at a system level, based on a group/kind.
Resource Exclusions
Argo CD can now be configured to completely ignore entire classes of resources group/kinds. Excluding high-volume resources improves performance and memory usage, and reduces load and bandwidth to the Kubernetes API server. It also allows users to fine-tune the k8s permissions that Argo CD needs by preventing Argo CD from attempting to watch resources of a specified group/kind.
gRPC-Web Support
The CLI is now able to communicate to the Argo CD API server using gRPC-Web (HTTP1.1) using a new CLI flag `—grpc-web`. This resolves some compatibility issues with ingresses and gRPC (HTTP2), and should enable the argocd CLI to work with virtually any load balancer, ingress controller, or API gateway.
CLI features
Finally, a few additional CLI commands were added:
argocd app edit APPNAME
— edit an application spec using preferred EDITORargocd proj edit PROJNAME
— edit an project spec using preferred EDITORargocd app patch APPNAME
— patch an application specargocd app patch-resource APPNAME
— patch a specific resource which is part of an application
Thank you for your support!
Many thanks to our users and contributors of the Argoproj community! Thank you for your contributions, testing, feedback, and support to make Argo CD what it is today. We still have a lot more ideas to make continuous delivery in Kubernetes fun and easy, so stay tuned and help us plan future directions for the project.