Guide des dépôts de charts
Cette section explique comment créer et travailler avec les dépôts de charts Helm. Un dépôt de charts est un emplacement où les charts empaquetés peuvent être stockés et partagés.
Le dépôt communautaire distribué de charts Helm se trouve sur Artifact Hub et accueille les contributions. Cependant, Helm permet également de créer et d'héberger votre propre dépôt de charts. Ce guide explique comment procéder. Si vous envisagez de créer un dépôt de charts, vous pourriez considérer l'utilisation d'un registre OCI à la place.
Prérequis
- Parcourir le guide de Démarrage rapide
- Lire le document sur les Charts
Créer un dépôt de charts
Un dépôt de charts est un serveur HTTP qui héberge un fichier index.yaml ainsi
que des charts empaquetés. Lorsque vous êtes prêt à partager vos charts, la méthode
recommandée est de les téléverser vers un dépôt de charts.
Depuis Helm 2.2.0, l'authentification SSL côté client est supportée pour les dépôts. D'autres protocoles d'authentification peuvent être disponibles via des plugins.
Puisqu'un dépôt de charts peut être n'importe quel serveur HTTP capable de servir des fichiers YAML et tar et de répondre aux requêtes GET, vous avez de nombreuses options pour héberger votre propre dépôt de charts. Par exemple, vous pouvez utiliser un bucket Google Cloud Storage (GCS), un bucket Amazon S3, GitHub Pages, ou même créer votre propre serveur web.
Structure du dépôt de charts
Un dépôt de charts se compose de charts empaquetés et d'un fichier spécial appelé
index.yaml qui contient un index de tous les charts du dépôt. Souvent, les charts
décrits par index.yaml sont également hébergés sur le même serveur, tout comme
les fichiers de provenance.
Par exemple, la structure du dépôt https://example.com/charts pourrait ressembler
à ceci :
charts/
|
|- index.yaml
|
|- alpine-0.1.2.tgz
|
|- alpine-0.1.2.tgz.prov
Dans ce cas, le fichier index contiendrait des informations sur un seul chart, le
chart Alpine, et fournirait l'URL de téléchargement
https://example.com/charts/alpine-0.1.2.tgz pour ce chart.
Il n'est pas obligatoire que le package du chart soit situé sur le même serveur que
le fichier index.yaml. Cependant, c'est souvent la solution la plus simple.
Le fichier index
Le fichier index est un fichier yaml appelé index.yaml. Il contient des métadonnées
sur le package, y compris le contenu du fichier Chart.yaml du chart. Un dépôt de
charts valide doit avoir un fichier index. Le fichier index contient des informations
sur chaque chart dans le dépôt. La commande helm repo index génère un fichier index
à partir d'un répertoire local donné contenant des charts empaquetés.
Voici un exemple de fichier index :
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
Héberger des dépôts de charts
Cette partie présente plusieurs façons de servir un dépôt de charts.
Google Cloud Storage
La première étape est de créer votre bucket GCS. Nous appellerons le nôtre
fantastic-charts.

Ensuite, rendez votre bucket public en modifiant les permissions du bucket.

Ajoutez cette ligne pour rendre votre bucket public :

Félicitations, vous avez maintenant un bucket GCS vide prêt à servir des charts !
Vous pouvez téléverser votre dépôt de charts en utilisant l'outil en ligne de
commande Google Cloud Storage ou via l'interface web GCS. Un bucket GCS public
est accessible via HTTPS simple à cette adresse : https://bucket-name.storage.googleapis.com/.
Cloudsmith
Vous pouvez également configurer des dépôts de charts en utilisant Cloudsmith. Pour en savoir plus sur les dépôts de charts avec Cloudsmith, consultez cette documentation.
JFrog Artifactory
De même, vous pouvez configurer des dépôts de charts en utilisant JFrog Artifactory. Pour en savoir plus sur les dépôts de charts avec JFrog Artifactory, consultez cette documentation.
Exemple avec GitHub Pages
De manière similaire, vous pouvez créer un dépôt de charts en utilisant GitHub Pages.
GitHub vous permet de servir des pages web statiques de deux manières différentes :
- En configurant un projet pour servir le contenu de son répertoire
docs/ - En configurant un projet pour servir une branche particulière
Nous allons utiliser la seconde approche, bien que la première soit tout aussi simple.
La première étape sera de créer votre branche gh-pages. Vous pouvez le faire localement ainsi :
$ git checkout -b gh-pages
Ou via le navigateur web en utilisant le bouton Branch dans votre dépôt GitHub :

Ensuite, assurez-vous que votre branche gh-pages est définie comme source pour GitHub Pages. Cliquez sur Settings de votre dépôt et descendez jusqu'à la section GitHub pages puis configurez comme suit :

Par défaut, Source est généralement défini sur gh-pages branch. Si ce n'est pas le cas par défaut, sélectionnez-le.
Vous pouvez utiliser un domaine personnalisé si vous le souhaitez.
Et vérifiez que Enforce HTTPS est coché, afin que HTTPS soit utilisé lors du service des charts.
Avec cette configuration, vous pouvez utiliser votre branche par défaut pour stocker
le code de vos charts et la branche gh-pages comme dépôt de charts, par exemple :
https://USERNAME.github.io/REPONAME. Le dépôt de démonstration
TS Charts est accessible à
https://technosophos.github.io/tscharts/.
Si vous avez décidé d'utiliser GitHub Pages pour héberger le dépôt de charts, consultez Chart Releaser Action. Chart Releaser Action est un workflow GitHub Action pour transformer un projet GitHub en dépôt de charts Helm auto-hébergé, en utilisant l'outil CLI helm/chart-releaser.
Serveurs web ordinaires
Pour configurer un serveur web ordinaire pour servir des charts Helm, vous devez simplement faire ce qui suit :
- Placer votre fichier index et vos charts dans un répertoire que le serveur peut servir
- S'assurer que le fichier
index.yamlest accessible sans exigence d'authentification - S'assurer que les fichiers
yamlsont servis avec le bon type de contenu (text/yamloutext/x-yaml)
Par exemple, si vous voulez servir vos charts depuis $WEBROOT/charts, assurez-vous
qu'il y a un répertoire charts/ dans votre racine web, et placez le fichier index
et les charts dans ce dossier.
Serveur de dépôt ChartMuseum
ChartMuseum est un serveur de dépôt de charts Helm open-source écrit en Go (Golang), avec support pour les backends de stockage cloud, notamment 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, DigitalOcean Spaces, Minio, et etcd.
Vous pouvez également utiliser le serveur ChartMuseum pour héberger un dépôt de charts depuis un système de fichiers local.
GitLab Package Registry
Avec GitLab, vous pouvez publier des charts Helm dans le Package Registry de votre projet. Pour en savoir plus sur la configuration d'un dépôt de packages Helm avec GitLab, consultez cette documentation.
Gérer les dépôts de charts
Maintenant que vous avez un dépôt de charts, la dernière partie de ce guide explique comment maintenir les charts dans ce dépôt.
Stocker des charts dans votre dépôt de charts
Maintenant que vous avez un dépôt de charts, téléversons un chart et un fichier index
vers le dépôt. Les charts dans un dépôt de charts doivent être empaquetés
(helm package chart-name/) et versionnés correctement (en suivant les directives
SemVer 2).
Les étapes suivantes composent un exemple de workflow, mais vous êtes libre d'utiliser le workflow de votre choix pour stocker et mettre à jour les charts dans votre dépôt.
Une fois que vous avez un chart empaqueté prêt, créez un nouveau répertoire et déplacez-y votre chart empaqueté.
$ helm package docs/examples/alpine/
$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/
$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com
La dernière commande prend le chemin du répertoire local que vous venez de créer et
l'URL de votre dépôt de charts distant pour composer un fichier index.yaml dans
le répertoire donné.
Vous pouvez maintenant téléverser le chart et le fichier index vers votre dépôt de charts en utilisant un outil de synchronisation ou manuellement. Si vous utilisez Google Cloud Storage, consultez cet exemple de workflow utilisant le client gsutil. Pour GitHub, vous pouvez simplement placer les charts dans la branche de destination appropriée.
Ajouter de nouveaux charts à un dépôt existant
Chaque fois que vous souhaitez ajouter un nouveau chart à votre dépôt, vous devez
régénérer l'index. La commande helm repo index reconstruira complètement le fichier
index.yaml à partir de zéro, en incluant uniquement les charts qu'elle trouve
localement.
Cependant, vous pouvez utiliser le flag --merge pour ajouter de nouveaux charts
de manière incrémentale à un fichier index.yaml existant (une excellente option
lorsque vous travaillez avec un dépôt distant comme GCS). Exécutez
helm repo index --help pour en savoir plus.
Assurez-vous de téléverser à la fois le fichier index.yaml révisé et le chart.
Et si vous avez généré un fichier de provenance, téléversez-le également.
Partager vos charts avec d'autres
Lorsque vous êtes prêt à partager vos charts, communiquez simplement l'URL de votre dépôt.
À partir de là, ils pourront ajouter le dépôt à leur client Helm via la commande
helm repo add [NOM] [URL] avec le nom de leur choix pour référencer le dépôt.
$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com
Si les charts sont protégés par une authentification HTTP basique, vous pouvez également fournir le nom d'utilisateur et le mot de passe ici :
$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com --username my-username --password my-password
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com
Note : Un dépôt ne sera pas ajouté s'il ne contient pas un fichier index.yaml
valide.
Note : Si votre dépôt Helm utilise par exemple un certificat auto-signé, vous
pouvez utiliser helm repo add --insecure-skip-tls-verify ... pour ignorer la
vérification du CA.
Après cela, vos utilisateurs pourront rechercher dans vos charts. Après avoir mis
à jour le dépôt, ils peuvent utiliser la commande helm repo update pour obtenir
les dernières informations sur les charts.
En coulisses, les commandes helm repo add et helm repo update récupèrent le
fichier index.yaml et le stockent dans le répertoire
$XDG_CACHE_HOME/helm/repository/cache/. C'est là que la fonction helm search
trouve les informations sur les charts.