ChartMuseum

We can use ChartMuseum to host our own Helm packages. In this session , we will configure ChartMuseum and will add the repository to Kubeapps

We will also upload the nginx-deployment helm package that we have created in earlier session to our local repository.

  • Download and configure chartmuseum
$ curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/linux/amd64/chartmuseum
Info

We will be using /{HOME}/chartstorage directory to store the packages

$ chmod +x ./chartmuseum
$ sudo mv ./chartmuseum /usr/local/bin
$ mkdir ./chartstorage
  • Create a systemd service file.
cat <<EOF | sudo tee /etc/systemd/system/chartmuseum.service
[Unit]
Description=Helm Chartmuseum
Documentation=https://chartmuseum.com/

[Service]
ExecStart=/usr/local/bin/chartmuseum \\
 --debug \\
 --port=8090 \\
 --storage="local" \\
 --storage-local-rootdir="/home/${USER}/chartstorage/"
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
  • Start chartmuseum
$ sudo systemctl daemon-reload
$ sudo systemctl start chartmuseum
$ sudo systemctl enable chartmuseum

Output

Created symlink from /etc/systemd/system/multi-user.target.wants/chartmuseum.service to /etc/systemd/system/chartmuseum.service.
  • Package our Helm chart
$ cd nginx-deployment/
$ helm package .

Output

Successfully packaged chart and saved it to: /home/ubuntu/nginx-deployment/nginx-deployment-2.tgz
  • Upload package to ChartMuseum

The URL IP is the IP of system which the chartmuseum service is running.

$ curl -L --data-binary "@/home/ubuntu/nginx-deployment/nginx-deployment-2.tgz" 192.168.31.20:8090/api/charts
  • Also add the repository to helm
$ helm repo add chartmuseum http://192.168.31.20:8090
  • Add repo to Kubeapps

Click Configuration -> App Repositories -> Add App Repository

Fill Name and URL , then click Install Repo

repoadd repoadd

  • Repo will appear in the list after addition

repoadded repoadded

  • View the Helm packages which is hosted in ChartMuseum

Click Catalog and search nginx-deployment

Remember , we have added an icon in our Chart.yaml file . You can see the same icon in deployment.

repochart repochart