-
Notifications
You must be signed in to change notification settings - Fork 10.4k
Description
Name and Version
all
What is the problem this feature will solve?
This really belongs in a discussion, but since this project does not have them enabled I'll open a feature request.
I'm from a small IT team managing a medium-sized infrastructure (several clusters, from 6 to 15 nodes large nodes in size). We started migrating to Kubernetes a while back, and bitnami's chart really helped us setup a lot of basic infrastructure, such as metrics-server, an etcd, postgres databases and metric-based alerting. The charts are comprehensive and well-documented, and we added a few features ourselves as well. However, after a few years we are moving away from bitnami charts for most of our deployments, replacing most releases with kustomize bases directly from the deployed application or even writing our own plain YAML files. Why?
Because of the release cadence. For production-critical infrastructure like a postgres database or argo-workflows controller, updating (and suffering downtime and/or update problems) very often is hard. Bitnami releases very often, even for projects that themselves are very stable (e.g. metrics-server, etcd, postgres, with a few to 10 or so releases per year). We found ourselves spending 1-2 hours a week updating bitnami charts, most of which had no application updates and so did not really need an update. To give a few examples:
- bitnami/etcd has had 150 releases since etcd version 3.5.4. Etcd is currently at 3.5.16, meaning there were over 12 times as many etcd chart updates as there are application updates. To give an estimate, 3.5.4 was release april 2022, meaning bitnami has updated the chart more than once a week, every week, since that moment.
- sealed-secrets has had 117 releases for 35 app updates (and sealed-secrets has been releasing less often as the controller matures). Half of those releases were for the last 8 releases of sealed-secrets
- metrics-server has has 90 bitnami releases since metrics-server 0.6.1, whereas there are only 7 application updates
- I could go on, but you get the point
Why does bitnami release this often? I think there are a few reasons:
- usage of a common helm chart: every time this updates, all other charts get an update
- tuning helm charts of course also releases a new version, and there is a lot of tuning going in within this repository
- bitnami uses a base debian image, even for applications that could easily use a
FROM scratchbase image, such as most Go applications (half the charts in this repository suffer from this problem). This naturally causes another release for a lot of charts whenever the base image updates, I see 7 updates since debian bookworms' release. - some charts in this repo also depend on other charts, for example oauth2-proxy on redis or keycloak on postgres
I made this issue mostly to create some awareness about the impact of a high release cadence on users, especially for charts that are hard to upgrade without supervision.
What is the feature you are proposing to solve the problem?
I'm not sure there is an easy solution here. Using a helm chart means you'll always have more updates than by simply writing your own YAML files (assuming the helm chart also releases with each application update), but I'd expect a multiplier of 2-3, not 5-15.
There are a few things that can be done however:
- some updates could be batched, this is the approach taken by almost every large open-source project
- using distroless images helps, and I'm pretty sure I saw some information about that in this or the containers repo recently. Cannot find it right now however
- chart dependencies cannot really be helped, though those also cause a cascade whenever a base chart updates
What alternatives have you considered?
I'd like to stress this is not a criticism of the charts themselves. Consider this more an alert for something that may cost this repository users in the long term. The charts are very good, well-maintained and have a template variable for everything you can think of. But, when releasing charts for applications that are often critical, it may be good to consider a slower release cadence than 'whenever there is any change'.