Aller au contenu
Conteneurs & Orchestration medium

Repos Helm : ajouter, chercher et inspecter des charts

17 min de lecture

logo helm

Ce guide vous apprend à trouver, évaluer et choisir les bons charts Helm pour vos déploiements. Vous allez configurer vos repositories, rechercher des charts (en local et sur Artifact Hub), et inspecter leurs métadonnées et valeurs avant d’installer quoi que ce soit. En 15 minutes, vous saurez éviter les charts abandonnés ou mal maintenus.

  • Helm installé (voir module H1-01)
  • Accès réseau vers Internet (pour télécharger les index de repos)
  • Aucun cluster Kubernetes requis pour ce module (on inspecte sans installer)

Un repository Helm (ou “repo”) est un serveur HTTP qui héberge un fichier index.yaml listant tous les charts disponibles et leurs versions. Ce fichier contient les métadonnées de chaque chart : nom, version, description, dépendances.

Quand vous exécutez helm repo add, Helm télécharge cet index et le stocke localement dans ~/.cache/helm/repository/. Ensuite, helm search repo interroge cet index local — c’est pour cela qu’un helm repo update est nécessaire pour voir les nouvelles versions.

La commande helm repo add enregistre un repository sous un nom local de votre choix :

Fenêtre de terminal
# Syntaxe : helm repo add <nom-local> <url>
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

Résultat attendu :

"prometheus-community" has been added to your repositories

Le nom local (prometheus-community) est arbitraire — vous pourriez l’appeler prom ou monitoring. Ce nom sera utilisé comme préfixe dans les commandes de recherche et d’installation.

Fenêtre de terminal
helm repo list

Résultat attendu :

NAME URL
prometheus-community https://prometheus-community.github.io/helm-charts
ingress-nginx https://kubernetes.github.io/ingress-nginx
grafana https://grafana.github.io/helm-charts
podinfo https://stefanprodan.github.io/podinfo

Lecture du tableau :

ColonneSignification
NAMENom local que vous avez choisi lors du helm repo add
URLAdresse du serveur hébergeant l’index des charts

Les repositories évoluent : nouvelles versions, nouveaux charts. Helm ne vérifie pas automatiquement les mises à jour. Vous devez explicitement demander la synchronisation :

Fenêtre de terminal
# Mettre à jour tous les repos
helm repo update
# Mettre à jour un seul repo (plus rapide)
helm repo update podinfo

Résultat attendu :

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "podinfo" chart repository
...Successfully got an update from the "grafana" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. ⎈Happy Helming!⎈
Fenêtre de terminal
helm repo remove podinfo

Résultat attendu :

"podinfo" has been removed from your repositories

Cela supprime uniquement la référence locale. Aucun chart installé n’est affecté.

Helm propose deux commandes de recherche qui interrogent des sources différentes.

Cette commande interroge l’index local de vos repositories configurés :

Fenêtre de terminal
# Rechercher un mot-clé dans tous les repos locaux
helm search repo prometheus

Résultat (extrait) :

NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/prometheus 28.7.0 v3.9.1 Prometheus is a monitoring system and time seri...
prometheus-community/kube-prometheus-stack 81.4.2 v0.88.1 kube-prometheus-stack collects Kubernetes manif...
prometheus-community/prometheus-node-exporter 4.51.0 1.10.2 A Helm chart for prometheus node-exporter
prometheus-community/prometheus-redis-exporter 6.20.2 v1.80.2 Prometheus exporter for Redis metrics

Lecture du tableau :

ColonneSignificationExemple
NAME<nom-repo>/<nom-chart> — identifiant complet du chartprometheus-community/prometheus
CHART VERSIONVersion du chart Helm (packaging)28.7.0
APP VERSIONVersion de l’application déployéev3.9.1
DESCRIPTIONBrève description du chartTronquée à 50 caractères
Fenêtre de terminal
# Tous les charts du repo prometheus-community
helm search repo prometheus-community
# Recherche d'un terme précis
helm search repo exporter

Par défaut, seule la dernière version apparaît. Pour voir l’historique :

Fenêtre de terminal
helm search repo podinfo/podinfo --versions

Résultat :

NAME CHART VERSION APP VERSION DESCRIPTION
podinfo/podinfo 6.10.0 6.10.0 Podinfo Helm chart for Kubernetes
podinfo/podinfo 6.9.4 6.9.4 Podinfo Helm chart for Kubernetes
podinfo/podinfo 6.9.3 6.9.3 Podinfo Helm chart for Kubernetes
podinfo/podinfo 6.9.2 6.9.2 Podinfo Helm chart for Kubernetes
podinfo/podinfo 6.9.1 6.9.1 Podinfo Helm chart for Kubernetes
podinfo/podinfo 6.9.0 6.9.0 Podinfo Helm chart for Kubernetes
...

C’est utile pour épingler une version ou revenir à une version antérieure en cas de régression.

Cette commande interroge Artifact Hub, le catalogue centralisé de la CNCF qui indexe des milliers de charts de multiples éditeurs :

Fenêtre de terminal
helm search hub prometheus

Résultat (extrait) :

URL CHART VERSION APP VERSION DESCRIPTION
https://artifacthub.io/packages/helm/prometheus-community/prometheus 28.7.0 v3.9.1 Prometheus is a monitoring...
https://artifacthub.io/packages/helm/wenerme/prometheus 28.7.0 v3.9.1 Prometheus is a monitoring...

Différence avec helm search repo :

Aspecthelm search repohelm search hub
SourceIndex locaux (vos repos configurés)Artifact Hub (Internet)
VitesseInstantanéRequête HTTP
CouvertureLimitée à vos reposTous les charts publics
OfflineFonctionneNécessite Internet

Pour le scripting ou l’intégration CI/CD :

Fenêtre de terminal
# Format YAML
helm search repo -o yaml podinfo/podinfo
- app_version: 6.10.0
description: Podinfo Helm chart for Kubernetes
name: podinfo/podinfo
version: 6.10.0
Fenêtre de terminal
# Format JSON
helm search repo -o json podinfo/podinfo
[{"name":"podinfo/podinfo","version":"6.10.0","app_version":"6.10.0","description":"Podinfo Helm chart for Kubernetes"}]

La commande helm show (ou son alias helm inspect) affiche les informations d’un chart sans l’installer.

Fenêtre de terminal
helm show chart podinfo/podinfo

Résultat :

apiVersion: v1
appVersion: 6.10.0
description: Podinfo Helm chart for Kubernetes
home: https://github.com/stefanprodan/podinfo
kubeVersion: '>=1.23.0-0'
maintainers:
- email: stefanprodan@users.noreply.github.com
name: stefanprodan
name: podinfo
sources:
- https://github.com/stefanprodan/podinfo
version: 6.10.0

Lecture des champs :

ChampSignificationPourquoi c’est important
apiVersionVersion de la spec Chart.yaml (v1 ou v2)v2 = Helm 3, v1 = Helm 2 (legacy)
appVersionVersion de l’application déployéeCorrespond-elle à vos besoins ?
kubeVersionVersions Kubernetes supportéesVotre cluster est-il compatible ?
maintainersQui maintient ce chartProjet actif ou abandonné ?
home / sourcesLiens vers le projetDocumentation disponible ?

C’est la partie la plus importante — elle définit toute la configuration possible :

Fenêtre de terminal
helm show values podinfo/podinfo

Résultat (extrait) :

# Default values for podinfo.
replicaCount: 1
logLevel: info
image:
repository: ghcr.io/stefanprodan/podinfo
tag: 6.10.0
pullPolicy: IfNotPresent
ui:
color: "#34577c"
message: ""
service:
enabled: true
type: ClusterIP
httpPort: 9898
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi

Ce que vous devez repérer :

ÉlémentQuestion à se poser
image.repositoryL’image vient-elle d’un registre de confiance ?
resourcesLes limites par défaut sont-elles adaptées à votre cluster ?
service.typeClusterIP, LoadBalancer, NodePort — lequel pour votre cas ?
Valeurs commentéesOptions désactivées par défaut mais disponibles
Fenêtre de terminal
helm show readme podinfo/podinfo | head -50

Résultat (extrait) :

# Podinfo
Podinfo is a tiny web application made with Go
that showcases best practices of running microservices in Kubernetes.
## Installing the Chart
To install the chart with the release name `podinfo`:
$ helm upgrade -i podinfo oci://ghcr.io/stefanprodan/charts/podinfo

Le README contient généralement :

  • Les instructions d’installation
  • La liste des paramètres configurables
  • Des exemples de configuration
  • Les prérequis spécifiques
Fenêtre de terminal
helm show all podinfo/podinfo | wc -l
# Résultat : 387 lignes

helm show all combine chart + values + readme. Utile pour sauvegarder dans un fichier :

Fenêtre de terminal
helm show all podinfo/podinfo > podinfo-chart-doc.txt

Toutes les commandes helm show acceptent --version :

Fenêtre de terminal
# Voir les values d'une ancienne version
helm show values podinfo/podinfo --version 6.7.0

En production, vous ne voulez jamais que Helm installe “la dernière version” — cela peut casser votre déploiement lors d’une mise à jour inattendue.

  1. Identifiez la version exacte avec helm search repo --versions

    Fenêtre de terminal
    helm search repo podinfo/podinfo --versions | head -5
  2. Testez en environnement de dev avec cette version précise

    Fenêtre de terminal
    helm install podinfo podinfo/podinfo --version 6.9.0 --dry-run
  3. Documentez la version dans votre pipeline CI/CD ou fichier de configuration

    # Dans votre Helmfile, ArgoCD Application, ou script CI
    chart: podinfo/podinfo
    version: 6.9.0 # Épinglé

Avant d’adopter un chart pour la production, vérifiez ces critères :

CritèreComment vérifierSeuil acceptable
Maintenance activeDernière release sur Artifact Hub< 6 mois
PopularitéÉtoiles GitHub, téléchargementsSubjectif, mais > 100 étoiles
DocumentationREADME, examples, CHANGELOGPrésence de toutes les sections
SécuritéPas de privileged: true par défaut, images signéesVérifier dans values.yaml
LicenceChamp license dans Chart.yaml ou repo GitHubApache 2.0, MIT, BSD

Objectif : Pratiquer les commandes de recherche et d’inspection en comparant deux charts de monitoring.

  1. Ajoutez les repos nécessaires

    Fenêtre de terminal
    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo add grafana https://grafana.github.io/helm-charts
    helm repo update
  2. Recherchez les charts Prometheus disponibles

    Fenêtre de terminal
    helm search repo prometheus

    Notez la différence entre prometheus-community/prometheus (Prometheus seul) et prometheus-community/kube-prometheus-stack (Prometheus + Grafana + Alertmanager).

  3. Comparez les versions Kubernetes requises

    Fenêtre de terminal
    helm show chart prometheus-community/prometheus | grep kubeVersion
    helm show chart prometheus-community/kube-prometheus-stack | grep kubeVersion
  4. Inspectez les ressources par défaut du chart Prometheus

    Fenêtre de terminal
    helm show values prometheus-community/prometheus | grep -A 10 "resources:"
  5. Listez les 3 dernières versions du kube-prometheus-stack

    Fenêtre de terminal
    helm search repo kube-prometheus-stack --versions | head -4

Résultat attendu : Vous savez maintenant identifier quel chart correspond à votre besoin et quelles versions sont disponibles.

SymptômeCause probableSolution
Error: repo not foundNom de repo mal orthographiéVérifier avec helm repo list
no repositories configuredAucun repo ajoutéhelm repo add <nom> <url>
Version non trouvée malgré existenceIndex local obsolètehelm repo update
context deadline exceededProblème réseauVérifier la connectivité, proxy
Résultats de recherche videsMot-clé trop spécifiqueEssayer des termes plus génériques
401 UnauthorizedRepo privé sans authentificationhelm repo add --username --password
  • Repository = source de charts. Ajoutez avec helm repo add, mettez à jour avec helm repo update.
  • helm search repo interroge vos repos locaux (rapide, offline), helm search hub interroge Artifact Hub (exhaustif, online).
  • Deux versions à distinguer : CHART VERSION (packaging) et APP VERSION (application déployée).
  • Inspectez avant d’installer : helm show chart (métadonnées), helm show values (configuration), helm show readme (documentation).
  • Épinglez toujours la version en production avec --version pour garantir la reproductibilité.
  • Évaluez la qualité : maintenance active, documentation, popularité, licence, sécurité par défaut.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.