Repository Hosting Options
In this tutorial, we are going to discuss helm repository hosting options. Let us have a little more details about Chart Repositories.
It’s nothing but a simple HTTP server that can host a set of files like an index.yaml file and other chart packages. And based on the get request, it can serve that index.html, and the chart packages and the clients like helm client or other CI/CD tools can pull these charts from this server and make use of them.
When the charts are ready, I can upload these into the server that is an index.yaml file and the chart packages. Chart package is nothing but the entire chart folder and the index.yaml file. An index.yaml file is nothing, but that’s going to be the index on all the charts available and what versions are available.
index.yaml
apiVersion: v1
entries:
alpine:
- created: 2016-10-06T16:23:20.499814565-06:00
description: Deploy a basic Alpine Linux pod
digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
version: 0.2.0
- created: 2016-10-06T16:23:20.499543808-06:00
description: Deploy a basic Alpine Linux pod
digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
version: 0.1.0
nginx:
- created: 2016-10-06T16:23:20.499543808-06:00
description: Create a basic nginx HTTP server
digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
home: https://helm.sh/helm
name: nginx
sources:
- https://github.com/helm/charts
urls:
- https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00
This is going to look somewhat similar to above where I can have n number of entries and all the charts available when it was created Description about it, the digest to understand what versions being managed, Name and source different information’s.
I can have multiple versions as well. Say, for example, in this particular case, I do have version 0.2.0, and the same entry is available as 0.1.0. So I can have multiple entries for a chart, and similarly, I can have multiple charts as well.
In this case, I do have charts for Alpine as well as Nginx. This looks very similar to the registry management within the OCI registry or any other source control system.
This is how the configurations will be. I can have n number of packages and the index.yaml file within the charts folder. And that particular charts folder should be available as a part of some Web server dock root, or it can be hosted as a part of Google Compute Cloud Buckets or AWS S3 buckets or GitHub pages.
chart museum
We can have our web server or a dedicated server to host the chart repositories, which is chart museum.
ChartMuseum is an open-source Helm Chart Repository server written in Go (Golang), with support for cloud storage backends, including Google Cloud Storage, Amazon S3, Microsoft Azure Blob Storage, Alibaba Cloud OSS Storage, Openstack Object Storage, Oracle Cloud Infrastructure Object Storage, Baidu Cloud BOS Storage, Tencent Cloud Object Storage, Netease Cloud NOS Storage, DigitalOcean Spaces, Minio, and etcd.
We will be having a detailed discussion on Chart Museum on how to install and configure the repository within it and make use of it. And we will see a couple of options by using either AWS S3 bucket or GitHub pages. That’s a straightforward configuration where I can add the bucket and make use of it.
And once the repository is created, I can use the helm client to push my chart and see all the versions being managed and pull whatever is required from the particular repository. I can pull it and make use of it.
So the first thing I am going to do is install my server that is using chart museum and create a repository and add my charts within it.
Chart museum is available over here. This is dedicatedly made to manage the charts and host the chart repositories. I can do the installation.
The following tutorial will have detailed instructions on installing, running the chart repository and adding our chart within the repository.