
This moves to relying on the hcc's default behavior of generating unique chart versions based on the git source so that the versions exposed by the hcc produced chart will change along with the chart's content, so that the flux source controller can be triggered to consume the new version, which is the first step of hcc chart update handling [0]. [0]: https://github.com/airshipit/treasuremap/issues/164 The reason for the patchset dependency below is to ensure this patchset doesn't break treasuremap, so we can account for these (and any other) changes when we are ready to. Depends-On: https://review.opendev.org/c/airship/treasuremap/+/795165 Signed-off-by: Sean Eagan <seaneagan1@gmail.com> Change-Id: I04d6c4c445b44bc62594e26463d66594bddd0b3e
Helm Chart Collator
The Helm Chart Collator is used to create a Helm Chart Repository served from a Docker image via Chartmuseum. It allows a developer to request charts to be pulled from various locations and packaged into the resulting Docker image, which can then be used as a portable Helm Repository.
Setup
Charts can be sourced from various locations. Each entry must be recorded in a
user-defined file before building the image. When the list of charts has been created,
the build-image.sh
script can be used to create the image via the command:
./build-image.sh $CHARTSFILE
Charts from Helm Repos
To pull a chart a from pre-existing Helm Repos by listing them under the helm_repos
heading. Each listing must include the following:
repo
: The name of the Helm Repo to add (e.g.stable
)url
: The URL where the Helm Repo is hosted (e.g.https://kubernetes-charts.storage.googleapis.com
)name
: The name of the desired chart (e.g.mariadb
)version
: The version of the desired chart (e.g.7.3.14
)
Charts from Git Repos
A Chart can be pulled and packaged from a git repo by listing it under the git_repos
heading. Listings must include:
name
: The name of the repository (e.g.openstack-helm
). Note that this is simply used for caching during the cloning process.path
: The path to the desired chart within the repo (e.g.keystone
)url
: The URL where the git repo is hosted (e.g.https://github.com/openstack/openstack-helm
)sha
: The SHA-1 of the commit from which the chart should be pulled (e.g.30c9f003d227b799c636458dea161e24d5823c33
). (default:HEAD
).refspec
: The refspec associated with thesha
. This is only required if thesha
can't be reached from the default (e.g.refs/heads/master
)chart_version
: The version to package the chart with (e.g.1.2.3
)key
: The contents of the private key needed to access a private repo. This is only required for private repos (see examples/charts.yaml for example)
If a chart in a git repo specifies dependencies which are not accessible, the
dependencies must also be listed under the dependencies
heading. Dependencies have the
same fields as git repos.
Charts from Tarballs
A chart can be downloaded by listing it under the tarred_charts
header. They
require the following:
url
: The URL from which the chart can be downloaded
Example
The following shows an example file for including various helm charts:
- rook-ceph as a tarball from a git repo
- mariadb from the helm stable repo
- rook-ceph from the rook repo
- prometheus from the helm/charts git repo
- keystone from the openstack-helm git repo
- The helm-toolkit is also pulled, since it is a dependency of keystone
tarred_charts:
- url: https://github.com/project-azorian/rook-ceph-aio/raw/master/rook-ceph-aio/charts/rook-ceph-0.0.1.tgz
helm_repos:
- repo: stable
url: https://kubernetes-charts.storage.googleapis.com
name: mariadb
version: 7.3.14
- repo: rook-release
url: https://charts.rook.io/release
name: rook-ceph
version: v1.3.6
git_repos:
- name: helm-stable
path: stable/prometheus
url: https://github.com/helm/charts
sha: 79066e1f0f5ce735aeb4783f2adf4b85992d15de
# Note: refspec is only needed when if the given sha is not already available
refspec: refs/heads/master
- name: openstack-helm
path: keystone
url: https://github.com/openstack/openstack-helm
sha: 30c9f003d227b799c636458dea161e24d5823c33
chart_version: 1.2.3
dependencies:
- name: openstack-helm-infra
path: helm-toolkit
url: https://github.com/openstack/openstack-helm-infra
sha: b1e66fd308b6bc9df090aebb5b3807a0df2d87dd
Once this file has been created, the image can be built with the following:
./build-image.sh charts.yaml