Downloading Helm charts

Helm helps you manage Kubernetes applications, define, install, and upgrade even the most complex Kubernetes application. Charts are easy to create, version, share, and publish.

These charts are shared through public repositories. However, there are two kinds of repositories:

  • simple ones, with a index.yaml file
  • OCI ones, starting from helm 3.8.0.

OCI are quite complex to mirrors and to emulate due to two major drawbacks:

  • you cannot specify HTTP or HTTPS (of course, you have HTTPS for production, but maybe not during testing),
  • the ”path” part of URLs is hard-coded ( https://<my.domain>/v2/<image_name>/ ) and you cannot move your mirror at any URL,
  • referenced URLs (e.g. oci://registry-1.docker.io/bitnamicharts/zookeeper:13.6.1 ) must be transformed before being fetched (e.g. https://registry-1.docker.io/v2/bitnamicharts/zookeeper/manifests/13.6.1 ). I can understand the transformation of https to oci, but the removing of the /v2 part is a bad idea for me.

Moreover, the Helm charts have other problems, at least from my point of view, since the repository of dependencies is hardcoded with three major drawbacks:

  • you can download Helm charts from unknown repositories,
  • a working Helm chart may stop working if the external repository is moved,
  • you must change the original Helm chart to download dependencies from your mirror.

Definitely not the best packaging system I encountered.