Helm-Chart Repositories mit Codeberg Pages
Ein Helm-Chart Repository besteht lediglich aus den per tar archivierten und mit gzip komprimierten Charts, einer sogenannten Provenienz-Datei pro Chart und einer index.yaml
.
Die Struktur eines Helm-Chart Repositories sieht üblicherweise wie folgt aus:
/path/to/chart/folder/
|
|- index.yaml
|
|- chart-a-1.0.0.tgz
|
|- chart-a-1.0.0.tgz.prov
|
|- chart-b-1.0.0.tgz
|
|- chart-b-1.0.0.tgz.prov
Die Provenienz-Dateien werden während der Archivierung eines Charts erzeugt. Mehr Detailinformationen zur Provienenz und Integrität von Helm-Charts gibt es unter https://helm.sh/docs/topics/provenance/.
Vorraussetzungen
- Helm CLI
- GPG und ein Schlüsselpaar
Helm-Chart erzeugen
Um ein existierendes Helm-Chart zu packen und die Provenienzdatei zu erzeugen, wird mit der Helm CLI folgender Aufruf ausgeführt:
helm package --sign --key 'Sascha Retter' --keyring /path/to/private-keyring /path/to/chart
Wie im Github-Issue https://github.com/helm/helm/issues/2843 beschrieben, nutzt Gpg seit Version 2.1 ein neues Format, um den Schlüsselbund zu speichern. Leider ist dieses Format bisher nicht kompatibel mit Helm. Daher muss einmalig der Schlüsselbund in das alte Gpg Format exportiert werden.
gpg --export-secret-keys > /path/to/private-keyring
Signatur überprüfen
Die Signatur des Charts kann mit folgendem Aufruf ausgegeben werden:
helm verify chart-a-0.1.0.tgz
# This command generates:
# Signed by: Name <email>
# Using Key With Fingerprint: 915D36BB00043043FED02C49F8F150FC16506555
# Chart Hash Verified: sha256:bf52483e60a73106ab64106a36ba21f765ea5e69a4105b081b5cb9e864ce7e1f
Der Aufruf, um während der Installation die Signatur zu prüfen, sieht wie folgt aus. Damit die Verifizierung erfolgen kann, muss der entsprechende öffentliche Schlüssel im Schlüsselbund enthalten sein. Um den Pfad zum Schlüsselbund anzugeben, kann wie oben beim Signieren der Parameter --keyring
verwendet werden. Außerdem muss ggf. vorher der öffentliche Schlüsselbund exportiert werden.
# Export keyring
gpg --export > /path/to/pub-keyring
# Install and verify
helm install --generate-name --verify mychart-0.1.0.tgz #--keyring pub-kreyring
Repository Index
Die index.yaml
-Datei wird erzeugt durch den Aufruf:
helm repo index
Codeberg
Codeberg e.V. bietet unter https://codeberg.org eine non-profit Softwareentwicklungsplattform auf Basis von Gitea an.
Mehr Informationen zu Codeberg gibt es unter: https://docs.codeberg.org/getting-started/what-is-codeberg/
Hosting mit Codeberg Pages
Pro Benutzerkonto stellt Codeberg eine Page (statische Website) zur Verfügung. Damit bieten Codeberg Pages eine schöne Möglichkeit, Helm-Repositories zu hosten. Da nur eine Page pro Benutzerkonto bzw. Organisation zur Verüfgung steht, ist es ratsam, das Helm-Chart Repository von Beginn an in einem Unterverzeichnis z.B. charts
einzurichten.
Um eine Codeberg-Page einzurichten, legen wir ein Repository pages
und darin wie oben beschrieben z.B. ein Verzeichnis charts
an. In dieses Verzeichnis kopieren wir die index.yaml
, die gepackten Charts und die jeweils zugehörige Provenienzdatei.
Die codeberg.pages sind unter der URL gemäß dem Schema https://<your_username>.codeberg.page
zu erreichen. Damit ist das Chart-Repository erreichbar unter:
https://<your_username>.codeberg.page/charts
Es besteht nun die Möglichkeit, neben der index.yaml
auch eine index.html
abzulegen, die für Benutzer Informationen zum Helm-Chart-Repository zur Verfügung stellt. Außerdem wäre hier ein geeigneter Platz, um einen Link zum Download des öffentlichen Schlüssels anzubieten, mit dem die Charts im Repository signiert sind.
Chart Repository hinzufügen und Helm-Charts installieren
Wir können damit wie gewohnt unser Repository mit dem folgenden Aufruf der Helm CLI hinzufügen:
helm repo add https://<your_username>.codeberg.page/charts
Danach können wir beispielsweise mit folgendem Aufruf unser chart-a
installieren:
helm upgrade --verify --install releasename chart-a