Skip to content

Releases: argoproj/argo-cd

v0.12.0-rc2

06 Mar 11:20
36dc50c
Compare
Choose a tag to compare
v0.12.0-rc2 Pre-release
Pre-release

Quick Start

Non-HA:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.12.0-rc2/manifests/install.yaml

HA:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.12.0-rc2/manifests/ha/install.yaml

Changes since v0.12.0-rc1

  • App creation failed for unregistered public repository (#1230)
  • Deprecated resource kinds from 'extensions' groups were not reconciled correctly (#1232)

v0.12.0-rc1

06 Mar 03:04
8d98d6e
Compare
Choose a tag to compare
v0.12.0-rc1 Pre-release
Pre-release

Quick Start

Non-HA:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.12.0-rc1/manifests/install.yaml

HA:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.12.0-rc1/manifests/ha/install.yaml

New Features

Improved UI

Many improvements to the UI were made, including:

  • 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 could only
assess the health for a few native kubernetes types (deployments, statefulsets, daemonsets, etc...).
Now, Argo CD can be extended to gain understanding of any CRD health, in the form of Lua scripts.
For example, using this feature, Argo CD now understands the CertManager Certificate CRD and will
report a Degraded status when there are issues with the cert.

Configuration Management Plugins

Argo CD introduces Config Management Plugins to support custom configuration management tools other
than the set that Argo CD provides out-of-the-box (Helm, Kustomize, Ksonnet, Jsonnet). 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 other config management tools (kubecfg, kapitan, shell
scripts, etc...).

High Availability

Argo CD is now fully HA. A set HA of manifests are provided for users who wish to run Argo CD in
a highly available manner. NOTE: The HA installation will require at least three different nodes due
to pod anti-affinity roles in the specs.

Improved Application Source Config

  • Support for Kustomize 2
  • YAML/JSON/Jsonnet Directories can now be recursed
  • Support for Jsonnet external variables and top-level arguments

Additional Prometheus Metrics

Argo CD provides the following additional prometheus metrics:

  • Sync counter to track sync activity and results over time
  • Application reconciliation (refresh) performance to track Argo CD performance and controller activity
  • Argo CD API Server metrics for monitoring HTTP/gRPC requests

Fuzzy Diff Logic

Argo CD can now be configured to ignore known differences for resource types by specifying a json
pointer to the field path to ignore. This helps prevent OutOfSync conditions when a user has no
control over the manifests. Ignored differences can be configured either at an application level,
or 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 permissions that
Argo CD needs to a cluster by preventing Argo CD from attempting to watch resources of that
group/kind.

gRPC-Web Support

The argocd CLI can be now configured 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 users were
experiencing with ingresses and gRPC (HTTP2), and should enable argocd CLI to work with virtually
any load balancer, ingress controller, or API gateway.

CLI features

Argo CD introduces some additional CLI commands:

  • argocd app edit APPNAME - to edit an application spec using preferred EDITOR
  • argocd proj edit PROJNAME - to edit an project spec using preferred EDITOR
  • argocd app patch APPNAME - to patch an application spec
  • argocd app patch-resource APPNAME - to patch a specific resource which is part of an application

Breaking Changes

Label selector changes, dex-server rename

The label selectors for deployments were been renamed to use kubernetes common labels
(app.kuberentes.io/name=NAME instead of app=NAME). Since K8s deployment label selectors are
immutable, during an upgrade from v0.11 to v0.12, the old deployments should be deleted using
--cascade=false which allows the new deployments to be created without introducing downtime.
Once the new deployments are ready, the older replicasets can be deleted. Use the following
instructions to upgrade from v0.11 to v0.12 without introducing downtime:

# delete the deployments with cascade=false. this orphan the replicasets, but leaves the pods running
kubectl delete deploy --cascade=false argocd-server argocd-repo-server argocd-application-controller

# apply the new manifests and wait for them to finish rolling out
kubectl apply <new install manifests>
kubectl rollout status deploy/argocd-application-controller
kubectl rollout status deploy/argocd-repo-server
kubectl rollout status deploy/argocd-application-controller

# delete old replicasets which are using the legacy label
kubectl delete rs -l app=argocd-server
kubectl delete rs -l app=argocd-repo-server
kubectl delete rs -l app=argocd-application-controller

# delete the legacy dex-server which was renamed
kubectl delete deploy dex-server

Deprecation of spec.source.componentParameterOverrides

For declarative application specs, the spec.source.componentParameterOverrides field is now
deprecated in favor of application source specific config. They are replaced with new fields
specific to their respective config management. For example, a Helm application spec using the
legacy field:

spec:
  source:
    componentParameterOverrides:
    - name: image.tag
      value: v1.2

should move to:

spec:
  source:
    helm:
      parameters:
      - name: image.tag
        value: v1.2

Argo CD will automatically duplicate the legacy field values to the new locations (and vice versa)
as part of automatic migration. The legacy spec.source.componentParameterOverrides field will be
kept around for the v0.12 release (for migration purposes) and will be removed in the next Argo CD
release.

Removal of spec.source.environment and spec.source.valuesFiles

The spec.source.environment and spec.source.valuesFiles fields, which were deprecated in v0.11,
are now completely removed from the Application spec.

API/CLI compatibility

Due to API spec changes related to the deprecation of componentParameterOverrides, Argo CD v0.12
has a minimum client version of v0.12.0. Older CLI clients will be rejected.

v0.11.2

19 Feb 18:00
1e5d08c
Compare
Choose a tag to compare

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.2/manifests/install.yaml

Changes since v0.11.1:

  • Prevent deletion hotloop (#1115)
  • Fix EncodeX509KeyPair function so it takes in account chained certificates (#1137) (@amarruedo)
  • Exclude metrics.k8s.io from watch (#1128)
  • Fix issue where dex restart could cause login failures (#1114)
  • Relax ingress/service health check to accept non-empty ingress list (#1053)
  • [UI] Correctly handle empty response from repository//apps API

v0.11.1

18 Jan 21:14
Compare
Choose a tag to compare

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.1/manifests/install.yaml

Changes since v0.11.0:

  • Allow using redis as a cache in repo-server (#1020)
  • Fix controller deadlock when checking for stale cache (#1044)
  • Namespaces are not being sorted during apply (#1038)
  • Controller cache was susceptible to clock skew in managed cluster
  • Fix ability to unset ApplicationSource specific parameters
  • Fix force resource delete API (#1033)
  • Incorrect PermissionDenied error during app creation when using project roles + user-defined RBAC (#1019)
  • Fix kubctl convert issue preventing deployment of extensions/NetworkPolicy (#1012)
  • Do not allow metadata.creationTimestamp to affect sync status (#1021)
  • Graceful handling of clusters where API resource discovery is partially successful (#1018)
  • Handle k8s resources circular dependency (#1016)
  • Fix app diff --local command (#1008)

v0.11.0

11 Jan 02:13
71b646d
Compare
Choose a tag to compare

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.0/manifests/install.yaml

This is Argo CD's biggest release ever and introduces a completely redesigned controller architecture.

New Features

Performance & Scalability

The application controller has a completely redesigned architecture which improved performance and scalability during application reconciliation.

This was achieved by introducing an in-memory, live state cache of lightweight Kubernetes object metadata. During reconciliation, the controller no longer performs expensive, in-line queries of app related resources in K8s API server, instead relying on the metadata available in the live state cache. This dramatically improves performance and responsiveness, and is less burdensome to the K8s API server.

Object relationship visualization for CRDs

With the new controller design, Argo CD is now able to understand ownership relationship between all Kubernetes objects, not just the built-in types. This enables Argo CD to visualize parent/child relationships between all kubernetes objects, including CRDs.

Multi-namespaced applications

During sync, Argo CD will now honor any explicitly set namespace in a manifest. Manifests without a namespace will continue deploy to the "preferred" namespace, as specified in app's spec.destination.namespace. This enables support for a class of applications which install to multiple namespaces. For example, Argo CD can now install the prometheus-operator helm chart, which deploys some resources into kube-system, and others into the prometheus-operator namespace.

Large application support

Full resource objects are no longer stored in the Application CRD object status. Instead, only lightweight metadata is stored in the status, such as a resource's sync and health status. This change enabled Argo CD to support applications with a very large number of resources (e.g. istio), and reduces the bandwidth requirements when listing applications in the UI.

Resource lifecycle hook improvements

Resource lifecycle hooks (e.g. PreSync, PostSync) are now visible/manageable from the UI. Additionally, bare Pods with a restart policy of Never can now be used as a resource hook, as an alternative to Jobs, Workflows.

K8s recommended application labels

The tracking label for resources has been changed to use app.kubernetes.io/instance, as recommended in Kubernetes recommended labels, (changed from applications.argoproj.io/app-name). This will enable applications managed by Argo CD to interoperate with other tooling which are also converging on this labeling, such as the Kubernetes dashboard. Additionally, Argo CD no longer injects any tracking labels at the spec.template.metadata level.

External OIDC provider support

Argo CD now supports auth delegation to an existing, external OIDC providers without the need for running Dex (e.g. Okta, OneLogin, Auth0, Microsoft, etc...)

The optional, Dex IDP OIDC provider is still bundled as part of the default installation, in order to provide a seamless out-of-box experience, enabling Argo CD to integrate with non-OIDC providers, and to benefit from Dex's full range of connectors.

OIDC group bindings to Project Roles

OIDC group claims from an OAuth2 provider can now be bound to Argo CD project roles. Previously, group claims could only be managed in the centralized ConfigMap, argocd-rbac-cm. They can now be managed at a project level. This enables project admins to self service access to applications within a project.

Declarative Argo CD configuration

Argo CD settings can be now be configured either declaratively, or imperatively. The argocd-cm ConfigMap now has a repositories field, which can reference credentials in a normal Kubernetes secret which you can create declaratively, outside of Argo CD.

Helm repository support

Helm repositories can be configured at the system level, enabling the deployment of helm charts which have a dependency to external helm repositories.

Breaking changes:

  • Argo CD's resource names were renamed for consistency. For example, the application-controller deployment was renamed to argocd-application-controller. When upgrading from v0.10 to v0.11, the older resources should be pruned to avoid inconsistent state and controller in-fighting.
  • As a consequence to moving to recommended kubernetes labels, when upgrading from v0.10 to v0.11, all applications will immediately be OutOfSync due to the change in tracking labels. This will correct itself with another sync of the application. However, since Pods will be recreated, please take this into consideration, especially if your applications are configured with auto-sync.
  • There was significant reworking of the app.status fields to reduce the payload size, simplify the datastructure and remove fields which were no longer used by the controller. No breaking changes were made in app.spec.
  • An older Argo CD CLI (v0.10 and below) will not be compatible with Argo CD v0.11. To keep CI pipelines in sync with the API server, it is recommended to have pipelines download the CLI directly from the API server https://${ARGOCD_SERVER}/download/argocd-linux-amd64 during the CI pipeline.

Changes since v0.10:

  • Improve Application state reconciliation performance (#806)
  • Refactor, consolidate and rename resource type data structures
  • Declarative setup and configuration of ArgoCD (#536)
  • Declaratively add helm repositories (#747)
  • Switch to k8s recommended app.kubernetes.io/instance label (#857)
  • Ability for a single application to deploy into multiple namespaces (#696)
  • Self service group access to project applications (#742)
  • Support for Pods as a sync hook (#801)
  • Support 'crd-install' helm hook (#355)
  • Use external 'diff' utility to render actual vs target state difference
  • Show sync policy in app list view
  • Remove resources state from application CRD (#758)
  • API server & UI should serve argocd binaries instead of linking to GitHub (#716)
  • Update versions for kubectl (v1.13.1), helm (v2.12.1), ksonnet (v0.13.1)
  • Update version of aws-iam-authenticator (0.4.0-alpha.1)
  • Ability to force refresh of application manifests from git
  • Improve diff assessment for Secrets, ClusterRoles, Roles
  • Failed to deploy helm chart with local dependencies and no internet access (#786)
  • Out of sync reported if Secrets with stringData are used (#763)
  • Unable to delete application in K8s v1.12 (#718)

v0.11.0-rc6

10 Jan 00:42
f41af8b
Compare
Choose a tag to compare
v0.11.0-rc6 Pre-release
Pre-release

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.0-rc6/manifests/install.yaml

Changes since v0.11.0-rc5:

  • Settings were getting re-initialized when secret was incomplete (issue #995)
  • Username or Password not working on fresh install (issue #998)
  • Log manifest with debug log level (#999)

v0.11.0-rc5

09 Jan 00:13
3ee437e
Compare
Choose a tag to compare
v0.11.0-rc5 Pre-release
Pre-release

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.0-rc5/manifests/install.yaml

Changes since v0.11.0-rc4:

  • Add better project policy rule validation (#990)
  • Use informers to load ArgoCD settings (#989)
  • Increase QPS and Burst used in K8s client configs to 25/50 (#984)
  • Eliminate reconcile hotloop by prevent Endpoint updates from requeuing apps (#986)
  • Fix issue where custom resource objects might get synced to incorrect namespace during initial sync (#982)
  • Fix loading cluster connection status (#980)

v0.11.0-rc4

04 Jan 21:48
Compare
Choose a tag to compare
v0.11.0-rc4 Pre-release
Pre-release

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.0-rc4/manifests/install.yaml

Changes since v0.11.0-rc3:

  • Update golang to v1.11.4
  • Fix application rollback to deployment without overrides (#978 )

v0.11.0-rc3

03 Jan 23:58
Compare
Choose a tag to compare
v0.11.0-rc3 Pre-release
Pre-release

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.0-rc3/manifests/install.yaml

Changes since v0.11.0-rc2:

  • Update versions for kubectl (v1.13.1), helm (v2.12.1), ksonnet (v0.13.1)
  • Reduce timeout for checking cluster health
  • UI error with helm charts parameters (#966 )
  • Fix rendering number of application parameter overrides (#969)

v0.11.0-rc2

28 Dec 01:33
ff2de56
Compare
Choose a tag to compare
v0.11.0-rc2 Pre-release
Pre-release

Quickstart

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.11.0-rc2/manifests/install.yaml

Changes since v0.11.0-rc1:

  • Use external 'diff' utility to render actual vs target state difference
  • Update aws-iam-authenticator to new version
  • Ability to force refresh of application manifests from git
  • Renamed argocd resources to have argocd- prefix and remove type from name
  • Make injected application instance label configurable
  • Improve reconciliation performance
  • Improve diff assessment for Secrets, ClusterRoles, Roles
  • Show sync policy in app list view
  • Fix handling of deprecated extensions group
  • Fix cache invalidation during CRD creation/deletion and destination changes