Release description
The version v0.12.0 is a feature release, bringing some new features as well as bug fixes to Argo CD Image Updater. This release also has potentially breaking changes, please read the upgrade notes below.
We are very sorry for the delay with this release! Behind the scenes. we also worked on improving the documentation and gave it some refactoring. We hope you like it!
Major new features
-
Multi-arch deliverables are finally here! We now provide container images for
linux/amd64
andlinux/arm64
, as well as release binaries forlinux/amd64
,linux/arm64
,linux/ppc64le
,darwin/amd64
,darwin/arm64
as well aswindows/amd64
! -
Multi-arch support for container images: Argo CD Image Updater now also considers the architecture of container images and provides full support for multi-arch images by being able to inspect manifest lists. By default, when using an update strategy that supports meta data inspection (
latest
anddigest
), Argo CD Image Updater will now only consider manifests for the same architecture it is running on. This can be fine tuned on a per image basis, so if you have clusters with nodes spanning multiple architectures (e.g. mix of amd64 and arm64 nodes), and you know that certain workloads are bound to run on a given architecture, you can use the new<alias>.platforms
annotation to allow only updates to images that match a certain architecture. -
Less configuration need for registries: Argo CD Image Updater now requires even less configuration, even if used with custom registries, and supports more registries out of the box. Argo CD Image Updater will infer the registry API to use from an image's registry prefix. Now custom registries need only be configured in special cases, e.g. when the registry uses a self-signed certificate or when you want to configure global credentials, or fine tune other access parameters such as rate limiting.
Other notable enhancements and fixes
-
Improved support for the
digest
update strategy: For multi-arch images, thedigest
update strategy will set the image SHA to the SHA of the manifest list, so the node can pick the right architecture to deploy. Also, Argo CD Image Updater will now perform less requests to the registry when using thedigest
update strategy, resulting in happier rate limiters. -
Improved documentation: We heard the community that our docs are complicated and hard to understand or follow. There has been a major refactoring of the docs to provide a better user experience, and we'll continuously work to improve them going forward.
-
Support for HTTP proxies: When accessing container registries, Argo CD Image Updater now honors the HTTP proxy configuration from the environment (i.e.
http_proxy
,https_proxy
andno_proxy
variables) and performs any HTTP requests through the configured proxies. -
Application selection using labels: Now you can restrict Argo CD Image Updater to not only match on the names of applications, but also using a label matcher.
Thank you
The Argo Project would like to thank the following people for their awesome contributions that made this release possible:
@agorgl
@atarax
@derdanne
@iamnoah
@jaideepr97
@jannfis
@janpieper
@janpieper-gcx
@joebowbeer
@joyrex2001
@katainaka0503
@manivannan-g
@martin-marko
@nick-homex
@NickLarsenNZ
@pacoguzman
@patrykwozinski
@zimbres
@zoonoo
And also thanks to everyone who took the time to open and discuss issues.
Upgrade notes (no really, you MUST read this)
This release has a few potentially breaking changes. Please review the below descriptions
-
Configuration details for the default registry have changed:
If you had previously configured a custom default registry (e.g. by setting
prefix
to the empty string in the registries configuration), it will not be assumed the default registry automatically anymore. You need to explicitly set the configuration propertydefault
totrue
in order for Argo CD Image Updater to pick this registry as the default one. Also, you should set theprefix
property from the empty string to the true prefix of the registry. -
Registry configuration property
tagsortmode
has been deprecated:The
tagsortmode
configuration has been more confusing than helpful in the past, and is a relict from old times when Argo CD Image Updater wasn't able to inspect an image's meta data properly. This setting has now been deprecated and should not be used anymore. A warning will be printed when this is set for a registry, and the setting will be removed completely in a future version of Argo CD Image Updater. -
Tagging of images using the
digest
update strategy has changed slightly: Argo CD Image Updater now uses a tag in the format<tagname>@sha256:<sha_of_digest>
when setting image tag parameters. Previously, it had a slightly different format that often required workarounds when being used with Helm. If you are using such a workaround when rendering image specification in Helm, you should revisit your template and adapt it to the new format. -
test
command uses host platform by default: If you are running theargocd-image-updater test
command from a system which is based on a different platform than your cluster, you will have to specify the cluster's platform using the--platforms
option, otherwise results may not be the same as on the cluster.
Bug fixes
- fix: hardcode buildDate so it can be updated by ld at build time (#366) (#367)
- fix: Use existing registry requests failed metric (#362)
- fix: Use endpoint's transport also for token handler (#349)
- fix: Fetch metadata for multi-arch images with latest strategy (#342)
- fix: Fix docker environment variable (#340)
- fix: Do not retrieve metadata for all tags with digest strategy (#337)
- fix: Request correct mediatype for v1 manifests (#333)
- fix: Fix registry authentication when URL has slash suffix (#331)
- fix: assume kustomize application type if write back target is configured (#309)
- fix: Invalid image reference format when using digest strategy with helm charts (#317)
- fix: Rename flag to specify registries config path (#290) (#295)
- fix: Allow use of in-cluster kube-client for test-command (#288) (#293)
- fix: typo in warning message (#291)
- fix: Use correct registry URL for parsing pull secrets (#285)
New features
- feat: Support multiple platforms for test command (#396)
- feat: Add configMap to allow define parameters for SSH client (#373)
- feat: Support app-wide update-strategy annotations (#338)
- feat: Automatic inferring of registry from image prefix (#369)
- feat: support filtering apps by label in CLI (#368)
- feat: Improve visibility for skipped apps (#344)
- feat: Support manifestlist and multi-arch images (#341)
- feat: use HTTP_PROXY in transport object for registry endpoint if defined in environment (#300)
- feat: add ability to specify a different write and base branch (#304)
- feat: Enable auth plugins for Kubernetes client (#307)
Other changes
- chore: Log warning in test command on unsupported container platform #397
- chore: Bump docker distribution v2 (#395)
- chore: Bump Kubernetes dependencies to version 1.22.4 (#394)
- chore: Bump docker distribution (#393)
- docs: Add digest update strategy (#389)
- docs: Expect some more things in spelling (#385)
- chore(deps): bump github.com/argoproj/argo-cd/v2 from 2.2.2 to 2.2.4 (#379)
- refactor(WBC): Target field in the WriteBackConfig (#380)
- test: Add e2e test for multiple images (#383)
- Checkout after creating a new branch (#384)
- fix(manifests): set deployment strategy to recreate to prevent concurrent replicas (#364)
- chore: Log out warning about tagsortmode (#363)
- chore: Add initial e2e test infrastructure (#358)
- refactor: Refactor logging to provide more context information (#357)
- docs: Fix inconsistency in the documentation on git write-back credentials (#356)
- chore(deps): Update Argo CD dependencies to 2.2.2 (#351)
- chore: Upgrade golang to 1.16.13 (#350)
- chore(deps): bump mkdocs from 1.1.2 to 1.2.3 in /docs (#347)
- chore: Create codeql-analysis.yml (#348)
- refactor: rename VersionSortMode to UpdateStrategy (#343)
- chore: Multi-arch distribution (#339)
- chore: Move container images to quay.io (#336)
- chore: Small fix to the release script (#334)
- docs: The docs for update-strategies were missing one word (#332)
- docs: Fixed ConfigMap name (#325)
- docs: Fixed typo (#324)
- docs: Update quoted true, false in configmap (#298)