Files
ducoterra ef9104c796
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 14s
moving everything to active or retired vs incubating and graduated
2025-04-19 18:52:33 -04:00

2.2 KiB

Personal Helm Repository

A helm repository is really, really simple. It's a static website that serves, at least, a file called index.yaml. This file is auto-generated (see Adding a chart below) via helm commands.

Charts are added by copying their respective tgz archives into the webserver's content directory. For example: /usr/share/nginx/html when using nginx.

Since charts are usually small you don't need a volume, you can copy the contents of your charts directory into the webserver's docker image and serve a completely stateless repository. You could potentially have a repository for each project or have an org-wide repository that gets built automatically with something like gitlab/github pages.

Gettings started

Create a folder called "charts".

Run helm repo index charts. An index.yaml will be created. It shouldn't have anything in it.

Now you can run podman-compose build to create the image. This will copy the charts folder into an nginx container. podman-compose push will upload the container to the registry.

Deploying the Repository

We can use the local chart (for now) to deploy the chart image.

helm upgrade --install \
    chart-repository \
    ./repository \
    --namespace chart-repository \
    --create-namespace

Using the Repository

You can add the repository to your local helm client like any other:

helm repo add reeseapps https://charts.reeseapps.com

You can view the existing charts with

helm search repo reeseapps

Though nothing will show up right now...

Adding a chart

We can add a chart by copying its .tgz package into charts/. For example:

helm package ./repository
mv repository-0.1.0.tgz charts/

Now recreate the index with

helm repo index charts

You should see a new entry in the index.yaml.

Updating the image

Now that you have something in your index, we can update the image by following the same process we used to deploy it:

podman-compose build
podman-compose push
helm upgrade --install \
    chart-repository \
    ./repository \
    --namespace chart-repository \
    --create-namespace

Now run helm repo update and helm search repo reeseapps. You should see the new chart added.