Helm đ ïž : gestion des charts Kubernetes
Mise Ă jour :
Dans le monde des conteneurs et de lâorchestration, Kubernetes sâest imposĂ© comme le standard pour dĂ©ployer et gĂ©rer des applications conteneurisĂ©es. Cependant, la gestion des configurations et des dĂ©ploiements complexes peut rapidement devenir un casse-tĂȘte. Câest ici quâintervient Helm souvent dĂ©crit comme le gestionnaire de paquets pour Kubernetes.
Helm simplifie le processus de gestion des applications Kubernetes en permettant de dĂ©finir, installer et mettre Ă jour des ensembles de ressources Kubernetes de maniĂšre cohĂ©rente et reproductible. Avec Helm, vous pouvez empaqueter vos applications et leurs dĂ©pendances en charts, dĂ©ployer ces applications Ă lâaide de commandes simples et gĂ©rer leur cycle de vie avec facilitĂ©.
Dans ce guide, je vais vous accompagner pas à pas pour comprendre et utiliser Helm efficacement. Que vous soyez un débutant cherchant à déployer votre premiÚre application Kubernetes ou un administrateur systÚme souhaitant rationaliser ses déploiements, ce guide vous fournira les connaissances et les outils nécessaires pour tirer le meilleur parti de Helm.
Historique
Helm a Ă©tĂ© dĂ©veloppĂ© Ă lâorigine par lâĂ©quipe de Deis, une entreprise spĂ©cialisĂ©e dans les plateformes de conteneurs. Le projet a Ă©tĂ© lancĂ© en 2015 avec lâobjectif de simplifier le dĂ©ploiement dâapplications sur Kubernetes.
Les premiÚres versions de Helm, notamment Helm v1, se concentraient principalement sur la gestion des charts (paquets contenant des définitions Kubernetes). Bien que fonctionnelles, ces versions initiales avaient certaines limitations en termes de gestion des dépendances et de flexibilité dans les déploiements.
En 2016, Helm v2 a Ă©tĂ© publiĂ©, apportant des amĂ©liorations significatives. Parmi les nouveautĂ©s, on peut citer lâintroduction de Tiller, un composant serveur chargĂ© dâinstaller des charts dans le cluster Kubernetes et de gĂ©rer les releases. Cette version a Ă©galement introduit une meilleure gestion des dĂ©pendances et des fonctionnalitĂ©s avancĂ©es comme les hooks.
La popularitĂ© croissante de Helm a conduit Ă son adoption par la Cloud Native Computing Foundation (CNCF) en 2018. Cette intĂ©gration a permis de bĂ©nĂ©ficier dâun soutien communautaire plus large et de garantir lâĂ©volution continue de lâoutil.
Helm v3, lancĂ© en dĂ©cembre 2019, a marquĂ© une Ă©tape importante dans lâĂ©volution de lâoutil. Lâune des principales modifications a Ă©tĂ© la suppression de Tiller, souvent critiquĂ© pour des problĂšme de sĂ©curitĂ©. DĂ©sormais, Helm interagit directement avec lâAPI Kubernetes, ce qui Ă©limine la nĂ©cessitĂ© dâexĂ©cuter un composant supplĂ©mentaire dans le cluster.
Lâune des forces de Helm rĂ©side dans sa communautĂ© active et engagĂ©e. Des centaines de contributeurs Ă travers le monde travaillent continuellement pour amĂ©liorer Helm, ajouter de nouvelles fonctionnalitĂ©s et rĂ©soudre les problĂšmes.
Concepts de base de Helm
Pour utiliser efficacement Helm, il est important de comprendre ses concepts fondamentaux. Avec la version 3 de Helm, lâoutil est devenu plus intuitif et sĂ©curisĂ©, Ă©liminant la nĂ©cessitĂ© de certains composants comme Tiller. Voici les concepts clĂ©s Ă maĂźtriser :
Repositories
Les repositories sont des emplacements oĂč les charts sont stockĂ©s et distribuĂ©s. Helm permet dâajouter des repositories publics ou privĂ©s pour accĂ©der Ă une multitude de charts prĂ©configurĂ©s. Vous pouvez Ă©galement hĂ©berger vos propres repositories pour partager des charts internes.
Charts
Les charts sont des ensembles de fichiers qui dĂ©crivent un ensemble de ressources Kubernetes. Un chart contient toutes les dĂ©finitions nĂ©cessaires pour dĂ©ployer une application, y compris les services, les dĂ©ploiements et les configurations. Les charts peuvent ĂȘtre partagĂ©s et rĂ©utilisĂ©s, ce qui facilite la gestion des applications complexes.
Releases
Une release est une instance dĂ©ployĂ©e dâun chart. Chaque fois que vous installez un chart avec Helm, une nouvelle release est créée. Les releases permettent de suivre et de gĂ©rer les diffĂ©rentes versions dĂ©ployĂ©es de vos applications.
Values
Le fichier values.yaml contient les valeurs par dĂ©faut utilisĂ©es par les templates du chart. Ces valeurs peuvent ĂȘtre personnalisĂ©es lors de lâinstallation ou de la mise Ă jour de la release, permettant une grande flexibilitĂ© et une configuration prĂ©cise des dĂ©ploiements.
Templates
Les templates sont des fichiers YAML contenant des définitions de ressources Kubernetes. Ils utilisent le moteur de templates Go pour permettre des configurations dynamiques basées sur les valeurs définies dans le fichier values.yaml.
Helmfile
Helmfile est un outil complémentaire qui permet de gérer plusieurs charts et releases avec un fichier unique. Il est particuliÚrement utile pour orchestrer des déploiements complexes et gérer les dépendances entre différents charts.
Helm Hooks
Les hooks permettent dâexĂ©cuter des actions Ă des moments spĂ©cifiques du cycle de vie des releases, comme avant ou aprĂšs lâinstallation, la mise Ă jour ou la suppression dâune release. Ils sont utilisĂ©s pour gĂ©rer des tĂąches supplĂ©mentaires, telles que les migrations de bases de donnĂ©es ou la configuration prĂ©alable de lâenvironnement.
Fonctionnement général
Helm V3 est conçu pour simplifier le déploiement, la gestion et la mise à jour des applications sur Kubernetes. Le fonctionnement général de Helm repose sur une série de concepts et de processus bien définis qui facilitent la gestion des configurations complexes.
Le cĆur du fonctionnement de Helm repose sur les charts, qui sont des paquets contenant toutes les ressources nĂ©cessaires pour dĂ©ployer une application Kubernetes. Un chart peut inclure des fichiers de configuration, des templates Kubernetes et des fichiers de valeurs par dĂ©faut. Les charts permettent de dĂ©finir des configurations standardisĂ©es et rĂ©utilisables pour des applications.
Processus de Déploiement
Lorsquâun utilisateur souhaite dĂ©ployer une application, il utilise un chart. Helm package les ressources dĂ©finies dans le chart et interagit avec lâAPI Kubernetes pour crĂ©er les ressources nĂ©cessaires dans le cluster. Chaque dĂ©ploiement crĂ©e une release, qui est une instance spĂ©cifique de lâapplication dĂ©ployĂ©e. Helm suit ces releases pour permettre une gestion facile des mises Ă jour et des rollbacks.
Helm permet de personnaliser les dĂ©ploiements grĂące aux fichiers values.yaml. Ces fichiers contiennent des valeurs par dĂ©faut qui peuvent ĂȘtre surchargĂ©es par lâutilisateur au moment du dĂ©ploiement. Cela permet de configurer les paramĂštres spĂ©cifiques de lâapplication sans modifier directement les fichiers de templates du chart. Les valeurs peuvent ĂȘtre ajustĂ©es pour rĂ©pondre Ă diffĂ©rents environnements (dĂ©veloppement, test, production).
Mise Ă Jour et Rollback
Un des avantages majeurs de Helm est sa capacitĂ© Ă gĂ©rer facilement les mises Ă jour des applications. Lorsquâune nouvelle version dâun chart est disponible ou que les configurations doivent ĂȘtre modifiĂ©es, Helm permet de mettre Ă jour la release existante. Si un problĂšme survient aprĂšs une mise Ă jour, Helm offre Ă©galement la possibilitĂ© de revenir Ă une version prĂ©cĂ©dente de la release grĂące Ă la fonctionnalitĂ© de rollback.
Gestion des Dépendances
Helm gĂšre Ă©galement les dĂ©pendances entre les charts. Un chart peut dĂ©clarer des dĂ©pendances vers dâautres charts, qui seront automatiquement installĂ©es ou mises Ă jour lorsque le chart principal est dĂ©ployĂ©. Cette gestion des dĂ©pendances permet de composer des applications complexes Ă partir de composants rĂ©utilisables et indĂ©pendants.
Automatisation et CI/CD
Helm sâintĂšgre bien avec les outils dâautomatisation et les pipelines CI/CD. GrĂące Ă des fichiers de configuration dĂ©claratifs et des commandes scriptables, Helm peut ĂȘtre intĂ©grĂ© dans des workflows automatisĂ©s pour dĂ©ployer des applications de maniĂšre cohĂ©rente et fiable Ă chaque commit ou mise Ă jour de code. Cela permet dâatteindre des dĂ©ploiements continus (CD) et dâamĂ©liorer lâefficacitĂ© des Ă©quipes de dĂ©veloppement et des opĂ©rations.
Installation de Helm
Pour commencer à utiliser Helm, la premiÚre étape consiste à installer la CLI (Command Line Interface) Helm sur votre machine.
Avant dâinstaller Helm, assurez-vous que vous avez un cluster kubernetes et
une version récente de kubectl installée sur votre machine. Helm interagit
avec Kubernetes via lâAPI, donc kubectl est nĂ©cessaire pour certaines
opérations.
Installation sur Linux
Pour installer Helm sur Linux, vous pouvez utiliser le script dâinstallation fourni par lâĂ©quipe Helm ou tĂ©lĂ©charger directement les binaires.
asdf-vm est un gestionnaire de versions qui permet dâinstaller et de gĂ©rer plusieurs versions dâoutils de dĂ©veloppement, y compris Helm. Voici comment installer Helm avec asdf-vm :
- Ajoutez le plugin Helm Ă asdf :
Terminal window asdf plugin-add helm - Installez Helm en utilisant asdf :
Terminal window asdf install helm latest - Définissez la version installée comme version globale par défaut :
Terminal window asdf global helm latest
Installation sur macOS
Pour installer Helm sur macOS, vous pouvez utiliser Homebrew, un gestionnaire de paquets populaire pour macOS. Comme pour Linux, vous pouvez Ă©galement installer Helm manuellement sur macOS en tĂ©lĂ©chargeant les binaires depuis GitHub et en suivant les mĂȘmes Ă©tapes que pour lâinstallation manuelle sur Linux.
Si Homebrew est déjà installé sur votre machine, exécutez simplement la commande suivante dans votre terminal :
brew install helmCette commande tĂ©lĂ©charge et installe la derniĂšre version de Helm. Vous pouvez vĂ©rifier lâinstallation avec :
helm versionInstallation sur Windows
Pour installer Helm sur Windows, vous pouvez utiliser Chocolately, un gestionnaire de paquets pour Windows, ou installer manuellement les binaires.
Utilisation de Chocolately
Si Chocolately est installé sur votre machine, exécutez la commande suivante dans votre PowerShell en mode administrateur :
choco install kubernetes-helmAprĂšs lâinstallation, vĂ©rifiez-la avec :
helm versionInstallation manuelle
Pour une installation manuelle :
- TĂ©lĂ©chargez la derniĂšre version de Helm depuis la page des releases GitHub : Releases Helm â
- Extrayez le contenu du fichier téléchargé.
- DĂ©placez lâexĂ©cutable
helmvers un répertoire inclus dans votre PATH.
VĂ©rification de lâinstallation
Pour vérifier que Helm est correctement installé et configuré, utilisez la commande suivante :
helm versionversion.BuildInfo{Version:"v3.15.1", GitCommit:"e211f2aa62992bd72586b395de50979e31231829", GitTreeState:"clean", GoVersion:"go1.22.3"}Cette commande doit retourner la version de Helm installĂ©e, confirmant que lâinstallation a Ă©tĂ© effectuĂ©e avec succĂšs.
Configuration de la complétion
La complétion est une fonctionnalité utile qui permet de compléter automatiquement les commandes et les options dans le terminal. Helm offre la complétion automatique pour Bash, Zsh, Fish et PowerShell. Configurer la complétion automatique vous permet de gagner du temps et de réduire les erreurs de saisie lorsque vous utilisez la CLI Helm.
Configuration pour Bash
Pour activer la complétion automatique pour Bash, vous devez générer le script
de complĂ©tion et lâajouter Ă votre fichier de configuration de shell
(~/.bashrc ou ~/.bash_profile).
Exécutez la commande suivante pour générer le script de complétion pour Helm :
helm completion bash > /etc/bash_completion.d/helmSi vous nâavez pas les permissions nĂ©cessaires pour Ă©crire dans
/etc/bash_completion.d/, vous pouvez utiliser un répertoire local :
helm completion bash > ~/.helm-completion.bashAjoutez la ligne suivante Ă votre fichier ~/.bashrc ou ~/.bash_profile pour
charger le script de complétion à chaque démarrage de shell :
source ~/.helm-completion.bashRechargez votre shell pour appliquer les modifications :
source ~/.bashrcConfiguration pour Zsh
Pour Zsh, vous devez ajouter le script de complétion à votre fichier de
configuration Zsh (~/.zshrc).
Exécutez la commande suivante pour générer le script de complétion pour Helm :
helm completion zsh > "${fpath[1]}/_helm"Assurez-vous que la complétion automatique est activée dans votre fichier
~/.zshrc en ajoutant ou en vérifiant les lignes suivantes :
autoload -Uz compinitcompinitRechargez votre shell pour appliquer les modifications :
source ~/.zshrcConfiguration pour Fish
Pour Fish, vous devez ajouter le script de complétion dans le répertoire des fonctions de Fish.
Exécutez la commande suivante pour générer et installer le script de complétion pour Helm :
helm completion fish > ~/.config/fish/completions/helm.fishConfiguration pour PowerShell
Pour PowerShell, vous devez ajouter le script de complétion à votre profil PowerShell.
Exécutez la commande suivante pour générer le script de complétion pour Helm :
helm completion powershell > helm-completion.ps1Ajoutez la ligne suivante Ă votre profil PowerShell ($PROFILE) pour charger le
script de complétion à chaque démarrage de PowerShell :
. .\helm-completion.ps1Rechargez votre session PowerShell pour appliquer les modifications :
. $PROFILEPremier déploiement avec Helm
AprĂšs avoir installĂ© Helm, il est temps de lâutiliser pour dĂ©ployer votre premiĂšre application sur Kubernetes. Dans ce chapitre, je vais vous guider Ă travers les Ă©tapes nĂ©cessaires pour ajouter un repository de charts, rechercher un chart et dĂ©ployer une application en utilisant Helm.
Ajouter un Repository de Charts
Avant de pouvoir déployer une application avec Helm, vous devez ajouter un repository de charts. Les repositories contiennent des collections de charts Helm que vous pouvez utiliser pour déployer des applications. Un des repositories les plus populaires est le repository Bitnami, qui contient de nombreux charts pour des applications couramment utilisées.
Pour ajouter le repository Bitnami, utilisez la commande suivante :
helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo updateCes commandes ajoutent le repository Bitnami Ă Helm et mettent Ă jour la liste des charts disponibles.
Rechercher un Chart
Une fois le repository ajouté, vous pouvez rechercher un chart spécifique. Par exemple, pour rechercher le chart pour Nginx, utilisez la commande suivante :
helm search repo nginxCette commande affiche une liste de tous les charts disponibles contenant ânginxâ dans leur nom ou description.
Installer une Version SpĂ©cifique dâun Chart
Dans une approche DevOps, il est recommandĂ© dâinstaller une version spĂ©cifique
dâun chart pour garantir la stabilitĂ© et la reproductibilitĂ© des dĂ©ploiements.
Pour installer une version spĂ©cifique, utilisez lâoption --version lors de
lâinstallation du chart.
Par exemple, pour installer la version 8.8.0 du chart Nginx Ă partir du repository Bitnami, utilisez la commande suivante :
helm install my-release bitnami/nginx --version 8.8.0Cette commande déploie le chart Nginx en version 8.8.0 sur votre cluster
Kubernetes en utilisant le chart fourni par Bitnami. my-release est le nom que
vous donnez Ă cette instance dĂ©ployĂ©e de lâapplication, Ă©galement appelĂ©e une
release.
Vérifier le Déploiement
AprĂšs avoir installĂ© le chart, vous pouvez vĂ©rifier que lâapplication a Ă©tĂ© correctement dĂ©ployĂ©e en utilisant la commande suivante :
kubectl get all -l app.kubernetes.io/instance=my-releaseCette commande affiche toutes les ressources Kubernetes associées à la release
my-release, y compris les pods, les services et les déploiements.
Personnaliser lâInstallation
Helm vous permet de personnaliser lâinstallation dâun chart en passant des valeurs spĂ©cifiques. Par exemple, pour changer le nombre de rĂ©pliques du dĂ©ploiement Nginx, vous pouvez utiliser un fichier de valeurs personnalisĂ© ou passer les valeurs directement en ligne de commande.
Utilisation dâun fichier de valeurs personnalisĂ©
Créez un fichier custom-values.yaml avec le contenu suivant :
replicaCount: 3Ensuite, installez le chart en utilisant ce fichier de valeurs :
helm install my-release bitnami/nginx --version 8.8.0 -f custom-values.yamlPasser les valeurs en ligne de commande
Vous pouvez également passer les valeurs directement en ligne de commande :
helm install my-release bitnami/nginx --version 8.8.0 --set replicaCount=3Création de vos propres Charts
Créer votre propre chart Helm vous permet de packager vos applications et leurs configurations pour les déployer de maniÚre cohérente et réutilisable sur Kubernetes. Dans ce chapitre, je vais vous montrer comment créer un chart personnalisé, le structurer correctement et définir les fichiers nécessaires pour déployer votre application.
Initialisation dâun nouveau Chart
Pour créer un nouveau chart, utilisez la commande helm create suivie du nom de
votre chart. Par exemple, pour créer un chart nommé mychart, exécutez :
helm create mychartCette commande génÚre une structure de répertoire de base pour votre chart, avec des fichiers de configuration et des templates par défaut.
Structure dâun Chart
La structure dâun chart Helm gĂ©nĂ©rĂ© par la commande helm create ressemble Ă
ceci :
mychart/ Chart.yaml # Contient des informations sur le chart (nom, version, description) values.yaml # Contient les valeurs par défaut pour les templates charts/ # Répertoire pour les dépendances de chart templates/ # Contient les fichiers de templates Kubernetes deployment.yaml service.yaml _helpers.tpl .helmignore # Liste des fichiers à ignorer lors de l'archivage du chartFichier Chart.yaml
Le fichier Chart.yaml contient des informations importantes sur votre chart,
telles que le nom, la version et une description. Voici un exemple de
Chart.yaml :
apiVersion: v2name: mychartdescription: A Helm chart for Kubernetestype: applicationversion: 0.1.0appVersion: "1.16.0"Fichier values.yaml
Le fichier values.yaml contient les valeurs par défaut utilisées par les
templates. Les utilisateurs peuvent remplacer ces valeurs lors du déploiement
pour personnaliser la configuration de lâapplication. Voici un exemple de
values.yaml :
replicaCount: 1
repository: nginx tag: stable pullPolicy: IfNotPresent
service: type: ClusterIP port: 80
resources: {}Templates Kubernetes
Les templates dans le répertoire templates/ définissent les ressources
Kubernetes nécessaires pour déployer votre application. Ces fichiers utilisent
le moteur de templates Go pour générer des manifestes Kubernetes dynamiques en
fonction des valeurs spécifiées dans values.yaml.
Exemple de Template de Déploiement (deployment.yaml)
apiVersion: apps/v1kind: Deploymentmetadata: name: {{ .Release.Name }}-nginx labels: app: {{ .Release.Name }}-nginxspec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app: {{ .Release.Name }}-nginx template: metadata: labels: app: {{ .Release.Name }}-nginx spec: containers: - name: nginx image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" ports: - containerPort: 80Exemple de Template de Service (service.yaml)
apiVersion: v1kind: Servicemetadata: name: {{ .Release.Name }}-nginxspec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} targetPort: 80 selector: app: {{ .Release.Name }}-nginxUtilisation des Helpers
Le fichier _helpers.tpl est utilisé pour définir des fonctions de template
réutilisables, ce qui permet de rendre les templates plus propres et plus
maintenables. Voici un exemple de _helpers.tpl :
{{- define "mychart.labels" -}}app.kubernetes.io/name: {{ .Chart.Name }}app.kubernetes.io/instance: {{ .Release.Name }}app.kubernetes.io/version: {{ .Chart.AppVersion }}app.kubernetes.io/managed-by: {{ .Release.Service }}{{- end -}}Packaging et Distribution
Une fois que votre chart est prĂȘt, vous pouvez le packager pour le distribuer.
Utilisez la commande suivante pour créer un paquet .tgz de votre chart :
helm package mychartCe paquet peut ĂȘtre stockĂ© dans un repository Helm, partagĂ© avec dâautres utilisateurs ou dĂ©ployĂ© directement.
Déploiement de votre Chart
Pour déployer votre chart personnalisé, utilisez la commande helm install :
helm install my-release ./mychartGestion des dépendances
Lors de la crĂ©ation de charts Helm complexes, il est courant dâavoir des
dĂ©pendances vers dâautres charts. Helm facilite la gestion de ces dĂ©pendances
grùce à un fichier spécifique nommé Chart.yaml et à des commandes dédiées.
Dans ce chapitre, je vais vous montrer comment définir et gérer les dépendances
de vos charts Helm.
Définir les dépendances dans Chart.yaml
Pour définir des dépendances pour votre chart, vous devez les spécifier dans le
fichier Chart.yaml. Chaque dépendance est définie avec son nom, sa version et
le repository oĂč elle se trouve. Voici un exemple de Chart.yaml avec des
dépendances :
apiVersion: v2name: mychartdescription: A Helm chart with dependenciesversion: 0.1.0appVersion: "1.16.0"
dependencies: - name: mysql version: 8.0.0 repository: https://charts.bitnami.com/bitnami - name: redis version: 6.0.0 repository: https://charts.bitnami.com/bitnamiDans cet exemple, mychart dépend des charts mysql et redis qui sont
hébergés dans le repository Bitnami.
Mise à jour des dépendances
AprÚs avoir défini les dépendances dans Chart.yaml, vous devez mettre à jour
les dépendances pour les télécharger et les ajouter à votre chart. Utilisez la
commande suivante pour cela :
helm dependency updateCette commande télécharge les charts spécifiés et les place dans le répertoire
charts/ de votre chart. Le répertoire charts/ contiendra alors les packages
des dépendances nécessaires.
Gestion des versions des dépendances
SpĂ©cifier des versions prĂ©cises pour vos dĂ©pendances est important pour garantir la stabilitĂ© et la reproductibilitĂ© de vos dĂ©ploiements. Utilisez les versions sĂ©mantiques pour dĂ©finir les versions exactes des charts dont vous dĂ©pendez. Cela vous permet de contrĂŽler les mises Ă jour et dâĂ©viter les incompatibilitĂ©s.
Installation des charts avec dépendances
Lorsque vous installez un chart avec des dépendances, Helm gÚre automatiquement
lâinstallation des dĂ©pendances dĂ©finies. Par exemple, pour installer mychart
avec ses dépendances, utilisez la commande suivante :
helm install my-release ./mychartHelm dĂ©ploiera dâabord les charts de dĂ©pendances (comme mysql et redis),
puis déploiera mychart.
Mise Ă jour des dĂ©pendances lors de lâupgrade
Lorsque vous mettez à jour votre chart ou ses dépendances, assurez-vous de
mettre à jour les dépendances avec la commande helm dependency update avant de
procĂ©der Ă lâupgrade de la release. Ensuite, utilisez la commande helm upgrade
pour appliquer les mises Ă jour :
helm upgrade my-release ./mychartExemple pratique
Imaginons que vous ayez un chart nommé myapp qui dépend de postgresql pour
la base de données. Voici comment vous pouvez définir et gérer cette dépendance
:
-
Ajoutez la dépendance dans
Chart.yaml:dependencies:- name: postgresqlversion: 10.3.11repository: https://charts.bitnami.com/bitnami -
Mettez à jour les dépendances :
Terminal window helm dependency update -
Installez le chart avec ses dépendances :
Terminal window helm install myapp-release ./myapp -
Pour mettre à jour le chart ou ses dépendances, mettez à jour les dépendances et utilisez
helm upgrade:Terminal window helm dependency updatehelm upgrade myapp-release ./myapp
Mise Ă jour et suppression des releases
Une des forces de Helm est sa capacitĂ© Ă gĂ©rer facilement les mises Ă jour et les suppressions des applications dĂ©ployĂ©es. Dans ce chapitre, je vais vous guider Ă travers les Ă©tapes nĂ©cessaires pour mettre Ă jour une release existante et la supprimer lorsquâelle nâest plus nĂ©cessaire.
Mise Ă jour dâune release
Mettre Ă jour une release Helm est une opĂ©ration courante, que ce soit pour appliquer des correctifs, mettre Ă jour des configurations ou dĂ©ployer de nouvelles versions de lâapplication.
Pour mettre Ă jour une release, utilisez la commande helm upgrade. Par
exemple, pour mettre à jour une release nommée my-release avec un chart local
nommé mychart, exécutez :
helm upgrade my-release ./mychartCette commande applique les modifications du chart Ă la release existante
my-release.
Lors de la mise à jour, vous pouvez également passer un fichier de valeurs personnalisé ou des valeurs en ligne de commande pour modifier les configurations spécifiques :
helm upgrade my-release ./mychart -f custom-values.yamlOu :
helm upgrade my-release ./mychart --set replicaCount=5Rollback dâune release
Helm permet de revenir Ă une version prĂ©cĂ©dente dâune release si une mise Ă jour provoque des problĂšmes. Cette fonctionnalitĂ© est essentielle pour maintenir la stabilitĂ© des applications en production.
Pour effectuer un rollback, utilisez la commande helm rollback suivie du nom
de la release et du numéro de la révision. Par exemple, pour revenir à la
révision 1 de my-release, utilisez :
helm rollback my-release 1Helm restaurera la release Ă lâĂ©tat de la rĂ©vision spĂ©cifiĂ©e, annulant ainsi les modifications apportĂ©es par les mises Ă jour ultĂ©rieures.
Helm conserve un historique des rĂ©visions de chaque release, ce qui vous permet de suivre les modifications au fil du temps et dâeffectuer des rollbacks en cas de besoin.
Pour afficher lâhistorique des rĂ©visions dâune release, utilisez la commande
helm history :
helm history my-releaseCette commande affiche une liste des rĂ©visions, avec des informations sur chaque mise Ă jour, telles que le numĂ©ro de rĂ©vision, la date et lâĂ©tat.
Suppression dâune release
Lorsque vous nâavez plus besoin dâune application, vous pouvez supprimer la release associĂ©e pour libĂ©rer les ressources du cluster Kubernetes.
Pour supprimer une release, utilisez la commande helm uninstall :
helm uninstall my-releaseCette commande supprime toutes les ressources Kubernetes associées à la release
my-release.
Dans certains cas, il peut ĂȘtre nĂ©cessaire de forcer la suppression dâune
release, par exemple si des ressources sont restĂ©es bloquĂ©es. Utilisez lâoption
--force pour forcer la suppression :
helm uninstall my-release --forceNettoyage des ressources
AprĂšs la suppression dâune release, il est recommandĂ© de vĂ©rifier que toutes les
ressources associées ont bien été supprimées. Utilisez kubectl pour lister et
vérifier les ressources restantes :
kubectl get all -l app.kubernetes.io/instance=my-releaseUtilisation avancée de Helm
Helm offre une variĂ©tĂ© de fonctionnalitĂ©s avancĂ©es qui permettent de gĂ©rer les dĂ©ploiements Kubernetes de maniĂšre encore plus flexible et puissante. Dans ce chapitre, nous explorerons les hooks, les tests de charts et les meilleures pratiques de sĂ©curitĂ© pour maximiser lâefficacitĂ© et la sĂ©curitĂ© de vos dĂ©ploiements Helm.
Helm Hooks
Les hooks permettent dâexĂ©cuter des actions spĂ©cifiques Ă des moments particuliers du cycle de vie dâune release Helm. Ils peuvent ĂȘtre utilisĂ©s pour gĂ©rer des tĂąches comme les migrations de bases de donnĂ©es, les prĂ©-requis ou les configurations post-dĂ©ploiement.
Les hooks Helm :
pre-installpost-installpre-deletepost-deletepre-upgradepost-upgrade
Exemple de hook pre-install
Voici un exemple de configuration dâun hook qui exĂ©cute une tĂąche avant lâinstallation de la release :
apiVersion: v1kind: Podmetadata: name: "{{ .Release.Name }}-pre-install-hook" annotations: "helm.sh/hook": pre-installspec: containers: - name: pre-install-task image: alpine command: ["/bin/sh", "-c", "echo Pre-install hook executed"]Tests de Charts
Helm permet Ă©galement de dĂ©finir des tests pour vĂ©rifier que les applications dĂ©ployĂ©es fonctionnent correctement. Ces tests sont des pods spĂ©ciaux qui sâexĂ©cutent aprĂšs le dĂ©ploiement pour valider que tout fonctionne comme prĂ©vu.
Exemple de test
Voici un exemple de configuration dâun test Helm :
apiVersion: v1kind: Podmetadata: name: "{{ .Release.Name }}-test-connection" labels: helm.sh/hook: testspec: containers: - name: curl image: busybox command: ["curl"] args: ["{{ .Release.Name }}-nginx:80"]Pour exécuter les tests, utilisez la commande suivante :
helm test my-releasePratiques de Sécurité
La sécurité est un aspect important de la gestion des déploiements Kubernetes avec Helm. Voici quelques meilleures pratiques pour sécuriser vos déploiements Helm :
Assurez-vous que les utilisateurs qui exĂ©cutent les commandes Helm disposent des permissions Kubernetes appropriĂ©es. Configurez les RBAC (Role-Based Access Control) pour contrĂŽler lâaccĂšs et les actions possibles.
Helm permet de signer les charts pour garantir leur intégrité et leur
authenticité. Utilisez les commandes helm package --sign pour signer un chart
et helm verify pour vérifier les signatures.
Ăvitez de stocker des informations sensibles directement dans les fichiers
values.yaml. Utilisez des Kubernetes Secrets pour stocker et gérer des
informations sensibles de maniÚre sécurisée.
Intégration avec CI/CD
LâintĂ©gration de Helm dans vos pipelines CI/CD permet dâautomatiser le dĂ©ploiement et la gestion des applications. Utilisez des outils comme Jenkins, GitLab CI, ou GitHub Actions pour intĂ©grer Helm dans vos workflows CI/CD.
Voici un exemple de configuration GitLab CI pour déployer une application avec Helm :
stages: - deploy
deploy: stage: deploy script: - helm repo add bitnami https://charts.bitnami.com/bitnami - helm repo update - helm upgrade --install my-release bitnami/nginx --version 8.8.0 environment: name: production url: http://my-release.example.comUtilisation des Environnements
Helm permet de gérer les déploiements pour différents environnements (développement, test, production) en utilisant des fichiers de valeurs spécifiques à chaque environnement.
Créez des fichiers de valeurs pour chaque environnement, par exemple
values-dev.yaml, values-prod.yaml, puis utilisez ces fichiers lors des
déploiements :
helm install my-release ./mychart -f values-prod.yamlConclusion
En conclusion, Helm est un outil essentiel pour gĂ©rer les dĂ©ploiements dâapplications sur Kubernetes. Il simplifie la gestion des configurations, des dĂ©ploiements, des mises Ă jour et des rollbacks, tout en offrant des fonctionnalitĂ©s avancĂ©es pour des environnements de production robustes et sĂ©curisĂ©s. GrĂące Ă Helm, vous pouvez dĂ©finir des configurations standardisĂ©es et reproductibles pour vos applications, ce qui facilite leur gestion Ă grande Ă©chelle.
Helm est plus quâun simple outil de gestion de paquets pour Kubernetes. Il reprĂ©sente une approche systĂ©matique et structurĂ©e pour gĂ©rer les dĂ©ploiements dâapplications conteneurisĂ©es, rendant le processus plus cohĂ©rent et prĂ©visible. En maĂźtrisant Helm, vous amĂ©liorez non seulement lâefficacitĂ© de vos dĂ©ploiements, mais aussi la rĂ©silience et la sĂ©curitĂ© de vos applications en production.
En adoptant Helm et en suivant les meilleures pratiques, vous serez bien équipé pour gérer vos déploiements Kubernetes de maniÚre efficace et sécurisée, tout en restant agile face aux évolutions de vos applications et de votre infrastructure.
Plus dâinfos
Pour approfondir vos connaissances sur Helm, voici quelques ressources essentielles :
- Site officiel de Helm : helm.sh â
- Documentation officielle de Helm : helm.sh/docs â
- Projet Helm sur GitHub : github.com/helm/helm â
Ces ressources offrent des guides détaillés, des exemples et des informations à jour pour vous aider à tirer le meilleur parti de Helm.