Hosting helm charts: A Maintainer’s Perspective
Tags: kubernetes, chartcenter, helmhub, artifacthub
Published: 2020-07-07 02:07:02

Helm charts is becoming one of the best ways to package any kubernetes application and indeed becoming [popular](https://www.cncf.io/cncf-helm-project-journey/) among contributors and contributing companies. It provides a consistent management of any application on kubernetes and a very easy way to override default parameters.


With the release of [ChartCenter by JFrog](https://chartcenter.io) and given that I own hosting JFrog charts, it was important for me to look at this with a finer tooth.


I wanted to take a step back and see who are the providers of chart hosting and hit this nice [blog](https://codeengineered.com/blog/2020/helm-find-charts/). Let us take this a step further and try to compare them and see how we can leverage these options.


So, here goes my review of these options, against the following 8 criteria.


#### Host helm repo centrally

We need to ensure that our consumers can  download these charts fast and effectively. We will need a way to host on a platform which provides a very good content caching so we are sure  that this  is available 24*7.

ChartCenter does provide this by running this on a well proven Artifactory, and an operation team who have managed bintray.

The other  providers seem to be only working as a directory as they directly provide install commands to the maintainer’s repo. This  leads maintainers to take the burden of hosting helm repo effectively, behind CDN.

#### Clarify chart dependencies

A maintainer would like to ensure that the consumers are clear of the dependencies that the  chart has on both sides, where all it  is referenced so the consumer can  choose a  larger chart if needed, and what it references further  down, to ensure the consumer is aware of what consumer is picking before he/she installs without having to open the chart.

ChartCenter does provide this effectively. 

Did not see them in any other.


#### Amount of charts hosted 

This is important to ensure that as a maintainer you are hosting on a site that is popular and more consumers are on it.  It is clear from the  numbers (provided  in  the summary table below), all are in early stages and will surely evolve in the next few months.


#### Download metrics 

Providing information on who is downloading which version of the application is very useful. I found all of  them having  gaps in this.

While ChartCenter does provide download information, (by of course allowing downloads directly from ChartCenter), it reports by chart version which is not that relevant in the world of applications.  It is preferable to have  this information  by application version and also provide a trend, with download regions, something that was a given in bintray.

Others, being only a portal, cannot provide download functionality and hence no download information.


#### Related charts 

When a  consumer comes in a  discovery  mode,  having related content makes a lot of sense to helm the  consumer pick the right application.

Artifact Hub provides this well and felt it had relevant charts as well, when I tried wordpress.

ChartCenter, Kubeapps hub and Helm hub seem to be lacking in this area.


#### Deep curation 

Having thoughts and reflection (provided by the host) on charts helps deepen one's understanding on how to compare, install and use applications.
 
Bitnami (Kubeapps Hub) includes their perspectives in a blog for each chart (of course popular ones). This gives a very good view-point on how one may end up using the chart.
The other three players have not been present in this space.


#### Make overall usage safe and secure

Having a security report at a chart level provides another nice perspective to know what is going on with the images bundled. This is an area where every chart maintainer is catching up and clearing up their internal security and also working on to depend on the cleanest and  latest  charts.
 
ChartCenter is the only one providing this perspective. They are extending this further to allow providers to provide their view-point  on some of the  open issues. This is an interesting direction ChartCenter has taken and I like this one very much.


#### Smarter set-me up for better on-boarding

Not all charts are  completely independent, especially when you are looking at extension products where you expect some other service is already running, then charts would make a few mandatory values to be filled before getting them working.

Almost all of the providers seem to provide vanilla install commands ignoring some of the mandatory values  to be passed, finally leading to a situation where they are actually incorrect.
 

Summary:

| Criteria                              | HelmHub (CNCF)        | Kubeapps Hub (Bitnami)      | Artifact hub (OSS)          | ChartCenter (JFrog) |
| ------------------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | --------------------------- |
| Chart hosting                         | no                           | no                           | no                           | yes                         |
| Chart dependency                      | no                           | no                           | no                           | yes                         |
| Deep curation                         | no                           | yes                          | no                           | no                          |
| Chart numbers                         | Charts: 1355 Versions: NA   | Charts: 1400 Versions: NA   | Charts: 820 Versions:21k    | Charts: 1521 Versions:29k     |
| Download metrics (application level) | No (dependant  on hosting) | No (dependant on hosting) | No (dependant  on hosting) | Partial                     |
| Related charts                        | no                           | no                           | yes                          | no                          |
| Security                              | no                           | no                           | no                           | yes                         |
| Smart installs commands               | no                           | no                           | no                           | no                          |

As you can see in the  table above, all charts are hosting a limited number of charts, while this ecosystem will start growing. Soon, you will see more and more on-boarding into many of these.

If your requirement is to have a completely hosted support, ChartCenter stands out as the only example. If  you want to be aligned with the CNCF ecosystem, you could look at helm hub. If  you would like to have a third-party validation along with hosting, Bitnami is a good solution.

However, you could also add ChartCenter for hosting and have the other three list your charts so you have  the best of the breed.

Let me know, what do you guys think?