Open forquare opened 1 month ago
This works fine during building and packaging our charts, however we want to be able to roll out updates of the library chart across multiple clusters without rebuilding and republishing application charts.
I think this isn't really how ArgoCD was designed to work. Debugging can get harder, since it's unclear which versions of dependencies might be used by the applications and why.
Summary
Before attempting to template a Helm Chart, allow users to configure ArgoCD to run
helm dependency update
on the chart.Motivation
In our environments we almost exclusively use Helm Charts based on an in-house library chart. In our application charts we soft-pin the dependency on the library chart to the patch version.
This works fine during building and packaging our charts, however we want to be able to roll out updates of the library chart across multiple clusters without rebuilding and republishing application charts. The way we achieve this is by building and packaging the chart, then decompressing and unarchiving it to remove the
Chart.lock
file andcharts
directory, then re-archiving and recompressing before publishing. So we have a bunch of helm charts that have had the dependencies ripped out of them.This works nicely at the moment, ArgoCD:
default-cache-expiration
option to make this longer/shorter.We would like to stop removing the
Chart.lock
file andcharts
directory for a few reasons:We are currently unable to stop removing the
Chart.lock
file andcharts
directory because we rely on the behaviour that ArgoCD currently has.Proposal
Prior to attempting to template the chart, run
helm dependency update
if the user has configured this to happen.helm dependency update
is a fairly expensive operation and certainly wouldn't want to be the default configuration.The configuration could be global (i.e. make all applications using Helm do this), but I think that it would be much more valuable if it could be part of the Application manifest so that the behaviour could be specified on a per-Application basis.
I did look through the other issues and found #8728 which seems to have a similar solution for a different scenario.
Our scenario differs because we do always want to do a
helm dependency update
, whereas #8728 suggests that there should be ahelm dependency list
first to check if the update is needed - in our case where we want to bundle dependencies that might be older than the latest patchhelm dependency list
would report that the dependencies are satisfied even if there are later patch versions available.Therefore I have raised this new enhancement request.