Tutorial

Comment installer un logiciel sur des clusters Kubernetes avec le gestionnaire de packages Helm 3

Kubernetes

Introduction

Helm est un gestionnaire de package pour Kubernetes qui permet aux développeurs et aux opérateurs de configurer et à déployer des applications plus facilement sur les clusters Kubernetes.

Dans ce tutoriel, vous allez configurer Helm 3 et l'utiliser pour installer, reconfigurer, revenir en arrière et supprimer une instance de l'application Kubernetes Dashboard. Le dashboard (tableau de bord) est une interface graphique Kubernetes officielle basée sur le web.

Pour un aperçu conceptuel de Helm et de son écosystème de packaging, veuillez lire notre article, Une introduction à Helm.

Conditions préalables

Pour ce tutoriel, vous aurez besoin de :

  • Un cluster Kubernetes avec contrôle d'accès basé sur les rôles (RBAC) activé. Helm 3.1 prend en charge les clusters des versions 1.14 à 1.17. Pour plus d'informations, consultez la page des versions de Helm.
  • L'outil de ligne de commande kubectl installé sur votre machine locale, configuré pour vous connecter à votre cluster. Vous pouvez en savoir plus sur l'installation de kubectl dans la documentation officielle.

Vous pouvez tester votre connectivité avec la commande suivante :

  • kubectl cluster-info

Si vous ne voyez aucune erreur, vous êtes connecté au cluster. Si vous avez accès à plusieurs clusters avec kubectl, veillez à vérifier que vous avez choisi le contexte de cluster adéquat :

  • kubectl config get-contexts
Output
CURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-fra1-helm3-example do-fra1-helm3-example do-fra1-helm3-example-admin

Dans cet exemple, l'astérisque (*) indique que nous sommes connectés au cluster do-fra1-helm3-example. Pour changer les clusters exécutez :

  • kubectl config use-context context-name

Lorsque vous êtes connecté au bon cluster, continuez à l'Étape 1 pour commencer à installer Helm.

Étape 1 — Installation de Helm

Tout d'abord, vous allez installer l'utilitaire de ligne de commande helm sur votre machine locale. Helm fournit un script qui gère le processus d'installation sur MacOS, Windows ou Linux.

Entrez dans un répertoire inscriptible et téléchargez le script depuis le référentiel GitHub de Helm :

  • cd /tmp
  • curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3

Rendez le script exécutable avec chmod :

  • chmod u+x get_helm.sh

Vous pouvez utiliser votre éditeur de texte préféré pour ouvrir le script et l'inspecter, afin de vous assurer qu'il est sûr. Lorsque vous êtes satisfait, exécutez-le :

  • ./get_helm.sh

Votre mot de passe peut vous être demandé. Saisissez-le et appuyez sur ENTER pour continuer.

La sortie finale ressemblera à ceci :

Output
Downloading https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz Preparing to install helm into /usr/local/bin helm installed into /usr/local/bin/helm

Maintenant que vous avez installé Helm, vous êtes prêt à utiliser Helm pour installer votre premier tableau.

Étape 2 — Installation d'un tableau Helm

Les packages logiciels Helm sont appelés des tableaux. Il existe un référentiel de tableaux conservé, appelé stable, composé principalement de tableaux communs, que vous pouvez voir dans leur référentiel GitHub. Helm n'est pas préconfiguré pour cela, vous devrez donc l'ajouter manuellement. Ensuite, à titre d'exemple, vous allez installer le tableau de bord Kubernetes.

Ajoutez le référentiel stable en exécutant :

  • helm repo add stable https://kubernetes-charts.storage.googleapis.com

Le résultat sera :

Output
"stable" has been added to your repositories

Ensuite, utilisez helm pour installer le package kubernetes-dashboard à partir du référentiel stable :

  • helm install dashboard-demo stable/kubernetes-dashboard --set rbac.clusterAdminRole=true

Le paramètre --set vous permet de personnaliser les variables de tableaux, que le tableau affiche pour vous permettre de personnaliser sa configuration. Ici, vous définissez la variable d'application rbac.clusterAdminRole sur true pour donner l'accès à votre cluster entier au tableau de bord Kubernetes.

La sortie ressemblera à :

Output
NAME: dashboard-demo LAST DEPLOYED: Tue Mar 31 15:04:19 2020 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: ...

Notez la ligne NAME, surlignée dans l'exemple de sortie ci-dessus. Dans ce cas, vous avez spécifié le nom dashboard-demo. C'est le nom de la version. Une version Helm est un simple déploiement d'un tableau avec une configuration spécifique. Vous pouvez déployer plusieurs versions du même tableau, chacune ayant sa propre configuration.

Vous pouvez énumérer toutes les versions dans le cluster :

  • helm list

Le résultat sera similaire à celui-ci :

Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION dashboard-demo default 1 2020-03-31 15:04:19.324774799 +0000 UTC deployed kubernetes-dashboard-1.10.1 1.10.1

Vous pouvez maintenant utiliser kubectl pour vérifier qu'un nouveau service a été déployé sur le cluster :

  • kubectl get services

La sortie finale ressemblera à ceci :

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-demo-kubernetes-dashboard ClusterIP 10.245.115.214 <none> 443/TCP 4m44s kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 19m

Notez que par défaut, le nom de service correspondant à la version est une combinaison du nom de la version Helm et du nom du tableau.

Maintenant que vous avez déployé l'application, vous utiliserez Helm pour modifier sa configuration et mettre à jour le déploiement.

Étape 3 — Mise à jour d'une version

La commande helm upgrade peut être utilisée pour mettre à niveau une version avec un nouveau tableau ou un tableau mis à jour, ou pour mettre à jour ses options de configuration (variables).

Vous allez apporter une simple modification à la version dashboard-demo pour démontrer le processus de mise à jour et de démantèlement : vous allez mettre à jour le nom du service du tableau de bord en kubernetes-dashboard, au lieu de dashboard-demo-kubernetes-dashboard.

Le tableau kubernetes-dashboard fournit une option de configuration fullnameOverride pour contrôler le nom du service. Pour renommer la version, exécutez helm upgrade avec ce jeu d'options :

  • helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="kubernetes-dashboard" --reuse-values

En passant l'argument --reuse values, vous vous assurez que les variables de tableau que vous avez précédemment définies ne seront pas réinitialisées par le processus de mise à niveau.

Vous verrez une sortie semblable à l'étape initiale d'installation de helm.

Vérifiez si vos services Kubernetes reflètent les valeurs mises à jour :

  • kubectl get services

La sortie ressemblera à ce qui suit :

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 38m kubernetes-dashboard ClusterIP 10.245.49.157 <none> 443/TCP 8s

Notez que le nom du service a été mis à jour avec la nouvelle valeur.

Remarque : à ce stade, vous pouvez charger le tableau de bord Kubernetes dans votre navigateur et le consulter. Pour ce faire, exécutez d'abord la commande suivante :

  • kubectl proxy

Cela crée un proxy qui vous permet d'accéder aux ressources de cluster à distance depuis votre ordinateur local. En fonction des instructions précédentes, votre service de tableau de bord est nommé kubernetes-dashboard et il fonctionne dans le namespace par default. Vous pouvez maintenant accéder au tableau de bord grâce à l'URL suivante :

http://localhost:8001/api/v1/namespaces/default/services/https:kubernetes-dashboard:https/proxy/

Les instructions pour l'utilisation effective du tableau de bord sont hors sujet pour ce tutoriel, mais vous pouvez consulter les documents officiels du tableau de bord Kubernetes pour plus d'informations.

Ensuite, vous verrez la capacité de Helm à revenir en arrière et à supprimer les versions.

Étape 4 — Retour en arrière et suppression d'une version

Lorsque vous avez mis à jour la version dashboard-demo à l'étape précédente, vous avez créé une deuxième révision de la version. Helm conserve tous les détails des versions précédentes si vous devez revenir sur une configuration ou un tableau précédents.

Utilisez helm list pour inspecter à nouveau la version :

  • helm list

Vous verrez la sortie suivante :

Output
NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 2 Wed Aug 8 20:13:15 2018 DEPLOYED kubernetes-dashboard-0.7.1 default

La colonne REVISION vous indique que c'est maintenant la deuxième révision.

Utilisez helm rollback pour revenir à la première révision :

  • helm rollback dashboard-demo 1

Vous devriez voir la sortie suivante, indiquant que le retour en arrière a réussi :

Output
Rollback was a success! Happy Helming!

À ce stade, si vous lancez à nouveau kubectl get services, vous remarquerez que le nom du service est revenu à sa valeur précédente. Helm a re-deployé l'application avec la configuration de révision 1.

Les versions Helm peuvent être supprimées avec la commande helm delete :

  • helm delete dashboard-demo

Le résultat sera :

Output
release "dashboard-demo" uninstalled

Vous pouvez essayer de lister les versions de Helm :

  • helm list

Vous verrez qu'il n'y en a pas :

Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

Maintenant, la version a été réellement supprimée, et vous pouvez réutiliser le nom de la version.

Conclusion

Dans ce tutoriel, vous avez installé l'outil de ligne de commande de helm et étudié l'installation, la mise à niveau, le retour en arrière et la suppression des tableaux de bord et des versions de Helm en gérant le tableau kubernetes-dashboard. 

Pour plus d'informations sur Helm et les tableaux de Helm, veuillez consulter la documentation officielle de Helm.

0 Comments

Creative Commons License