Helm, le meilleur ami de votre kubernetes

modifié le : 31 mai 2024,
par Theo BOISGARD
 

Qu'est ce que c'est Helm ?

Helm est un manager de paquet pour kubernetes (k8s).
Il permet de simplifier l'installation d'applicartion complexe comme apache superset via les "chart" dont on reparlera plus tard.

Comment installer Helm ?

prérequis:

  • avoir un cluster k8s fonctionnel avec kubeadm/kubectl

Installer Helm c'est très facile, en réalité il s'agit uniquement d'une commande :

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

voici le résultat de la commande sur la machine :

Theo@ClusterMaster:~$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11679  100 11679    0     0   199k      0 --:--:-- --:--:-- --:--:--  203k
Downloading https://get.helm.sh/helm-v3.15.0-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm

Les commandes usuelles

voici les commandes usuelles issues de la doc officielle:

helm create <name>                      # Creates a chart directory along with the common files and directories used in a chart.
helm package <chart-path>               # Packages a chart into a versioned chart archive file.
helm lint <chart>                       # Run tests to examine a chart and identify possible issues:
helm show all <chart>                   # Inspect a chart and list its contents:
helm show values <chart>                # Displays the contents of the values.yaml file
helm pull <chart>                       # Download/pull chart 
helm pull <chart> --untar=true          # If set to true, will untar the chart after downloading it
helm pull <chart> --verify              # Verify the package before using it
helm pull <chart> --version <number>    # Default-latest is used, specify a version constraint for the chart version to use
helm dependency list <chart>            # Display a list of a chart’s dependencies:

Les paquets dans helm

Il est possible de consulter tous les répo' sur ce site internet. Pratique pour y voir plus clair, ou juste pour explorer les répo' disponibles.

On peut ensuite sélectionner l'application qui nous intéresse. On peut alors juste taper la commande pour ajouter le répo est alors affiché, souvent dans le tl;dr (chaque page de paquet est différente mais la commande est souvent affichée dans les premières lignes)

par exemple voici ce que l'on trouve sur la page nextcloud dans helm:

tldr.png

il nous suffira alors simplement de copier/coller la première commande dans le terminal pour rajouter le répo':
voici les résultat quand on vient taper les commandes:

Theo@ClusterMaster:~$ helm repo add nextcloud https://nextcloud.github.io/helm/
"nextcloud" has been added to your repositories

Cependant la seconde commande "helm install my-release nextcloud/nextcloud" va nous retourner beaucoup d'erreur, notamment parce qu'aucune base de donnée n'est spécifiée, la question qui se pose alors est où est-ce que je peux spécifier cette base de donnée ? Cette question m'offre une superbe introductions aux charts.

Les charts dans helm

Les charts constituent le plus gros du travail dans l'installation d'une application avec Helm.

Les charts sont des fichiers avec une extension yaml.

Les charts contiennent des informations importantes sur les pods / services à déployer pour que l'application soit fonctionnelle.

Gardons notre exemple de nextcloud, sur le site où l'on trouve les répos il y a un bouton "default values":
def val.png

ce bouton nous permet de voir les valeurs par défaut utilisées pour déployer le service:

yaml.png

On peut alors directement le copier/coller tout le default value dans un fichier interne, modifier des champs et ensuite utiliser nos valeurs "locale" plutot que celles de bases.

⚠️

Les valeurs locales overiddent les valeurs par défaut, il n'est donc pas nécessaire d'avoir tous les champs dans le fichier local ! attention à quand même bien avoir tous ceux que l'on veut modifier.

dans notre exemple on irait donc changer des champs pour ajouter une base de donnée externe afin de ne plus avoir d'erreur.

Certaines charts peuvent faire beaucoup de lignes (on atteint assez vite les 500+). Il faut donc prendre le temps de lire le fichier et de se l'approprier avant de le modifier. La plupart du temps les charts ont l'intégralité des options disponible à vous de vous renseigner et de désactiver ce qui n'est pas utile et d'adapter ce qui nécessite des modifications.



Article réalisé par Théo BOISGARD