Helm est un projet CNCF (Cloud Native Computing Foundation) comme Kubernetes et de nombreux autres projets. C'est un projet supporté par les plus grands du web : Google, Microsoft, IBM...
Helm est un prjet opensource que l'on peut retrouver sur Github et sur son site officiel helm.sh.
Helm est un outil de "templating". Un peu à l'image de docker-compose pour docker, helm va permettre de déployer une application (contenant de multiples micro-services) en une ligne de commande. Helm permet aussi la mise à jour d'application ainsi que le rollback de version.
Si nous prenons l'exemple de Wordpress, nous avons besoin de plusieurs choses :
Si nous voulons une deuxième instance de Wordpress, nous allons devoir prendre tous ces fichiers et changer les valeurs. Puis nous appliquerons chaque fichier dans le bon ordre afin de créer notre 2ème Wordpress. Si nous devons faire une mise à jour, nous devrons mettre à jour les différents fichiers.
Helm va nous permettre de répondre à ce problème. Il va :
Avant de commencer à utiliser Helm, nous allons voir quelques définitions qu'il faut connaitre :
values.yaml
qui contient les informations de l'application à déployer sous forme de paramètres=valuekubectl get crd
. Cela va permettre d'étendre les capacités de k8s. Helm possède son CRD spécifique.kubectl get hr
.L'installation est très simple que ce soit sur Linux ou MacOS :
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Ou via un package manager :
# MacOS
brew install helm
# Windows
choco install kubernetes-helm
# Linux apt
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
Puis on vérifie la version via la commande :
$ helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"dirty", GoVersion:"go1.16.5"}
Création d'un alias :
# vim .bashrc
alias h='helm'
source .bashrc
Autocompletion :
# Linux
source <(helm completion bash)
# MacOS
source <(helm completion zsh)
Pour fonctionner avec notre alias h
on va faire cette commande :
# Linux / MacOS
complete -o default -F __start_helm h