Helm: Gestionnaire de Packages Essentiel pour Kubernetes

Auteur
Team Redac
Date de publication
May 13, 2024
Temps de lecture
5
m

Helm, souvent décrit comme le gestionnaire de paquets pour Kubernetes, apporte une solution élégante à la complexité de déploiement et de gestion des applications. En permettant aux développeurs et aux administrateurs système de regrouper les ressources Kubernetes nécessaires à l'exécution d'une application, Helm facilite la distribution, la publication, et la mise à jour des applications sur Kubernetes. Grâce à Helm, ce qui nécessitait auparavant une série de commandes Kubernetes longues et complexes se résume maintenant à quelques instructions simples, rendant le processus de déploiement aussi fluide et efficace que possible.

Fondamentaux de Helm

Comme nous l’avons vu en introduction, Helm est souvent comparé à un gestionnaire de paquets, tel que apt pour Ubuntu ou yum pour CentOS, mais dans le contexte de Kubernetes. Il vise à simplifier le déploiement et la gestion d'applications Kubernetes en encapsulant les fichiers de configuration nécessaires dans une structure organisée appelée "chart". Pour saisir pleinement le potentiel de Helm, il est crucial de comprendre ses trois composants principaux : les charts, les repositories et les releases.

Charts

Il s’agit des paquets Helm qui contiennent toutes les ressources nécessaires pour déployer une application ou un service sur un cluster Kubernetes. Un chart est essentiellement un dossier contenant une collection organisée de fichiers YAML qui décrivent les ressources Kubernetes requises par une application. Ces fichiers incluent des templates de manifests Kubernetes, un fichier 'values.yaml' pour les configurations par défaut, et un fichier 'Chart.yaml' qui contient des métadonnées sur le chart. Les charts permettent non seulement de déployer des applications, mais aussi de définir, versionner, et partager ces applications.

Structure d’un chart :

Repositories

Les repositories Helm jouent un rôle similaire à ceux des systèmes de gestion de paquets traditionnels, offrant un moyen centralisé de partager et de stocker des charts Helm. Un repository peut être public, permettant à la communauté d'accéder et de contribuer à une large gamme de charts, ou privé, pour une utilisation au sein d'une organisation. Les utilisateurs peuvent facilement ajouter de nouveaux repositories à leur configuration Helm, rechercher des charts disponibles, et les installer sur leur cluster Kubernetes.

Releases

Lorsqu'un chart est déployé dans un cluster Kubernetes via Helm, cela crée une "release". C’est une instance d'un chart en cours d'exécution dans un cluster. Helm permet de gérer le cycle de vie complet de chaque release, y compris les mises à jour, les rollbacks à des versions précédentes, et la suppression. Ce concept de release permet aux administrateurs de suivre les déploiements effectués, de revenir à un état antérieur en cas de problème, et de gérer différentes versions d'une application déployée.

Utilisation de Helm

Nous allons voir comment utiliser Helm pour déployer, gérer et mettre à jour des applications sur Kubernetes. Pour illustrer ces concepts, nous créerons une application web fictive nommée "HelmDatascientest". Ce scénario pratique aidera à comprendre l'application des différentes commandes et composants de Helm.

Installation de Helm

Avant de commencer, assurez-vous d'avoir Helm installé. La méthode d'installation peut varier selon votre système d'exploitation. Généralement, elle peut être réalisée via un gestionnaire de paquets ou en téléchargeant directement le binaire depuis le site officiel de Helm.

Création d'un nouveau Chart Helm

Commençons par créer un nouveau chart Helm. Cette étape initiale crée la structure de dossier nécessaire. Dans un terminal, entrez la commande suivante, qui va créer un dossier du nom de notre application, avec la structure de base d’un chart : 

helm create helmdatascientest

Personnalisation du Chart

La structure de base comprend plusieurs fichiers et dossiers. Pour notre application, nous allons modifier les fichiers Chart.yaml, values.yaml, et le dossier templates pour refléter les spécificités de l'application.

  • Chart.yaml

Ce fichier contient les métadonnées du chart.

apiVersion: v2

name: helmdatascientest

description: A Helm chart for deploying our web application

version: 1.0.0

appVersion: "1.0"

keywords:

  - helmdatascientest

  - web

  - application

home: https://example.com/helmdatascientest

sources:

  - https://github.com/example/helmdatascientest

maintainers:

  - name: DST Team

    email: dst@example.com

  • Values.yaml

Il fournit les valeurs configurables pour le chart, telles que l'image de l'application, le nombre de répliques, et les paramètres du service. Ces valeurs peuvent être personnalisées au moment du déploiement pour adapter l'application à différents environnements ou configurations.

# Default values for helmdatascientest.

# This is a YAML-formatted file.

# Declare variables to be passed into your templates.

replicaCount: 2

image:

  repository: nginx

  pullPolicy: IfNotPresent

  tag: "latest"

service:

  type: LoadBalancer

  port: 80

ingress:

  enabled: false

resources: {}

  # We usually leave this as an empty dictionary, but you can specify CPU, memory, etc.

nodeSelector: {}

tolerations: []

affinity: {}

  • templates/

Ce dossier contient les définitions de notre déploiement Kubernetes, y compris les objets Deployment, Service, etc.

Exemple de fichier deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: helmdatascientest-deployment

spec:

  replicas: 2

  selector:

    matchLabels:

      app: helmdatascientest

  template:

    metadata:

      labels:

        app: helmdatascientest

    spec:

      containers:

      - name: helmdatascientest

        image: nginx

        ports:

        - containerPort: 80

Exemple de fichier services.yaml

apiVersion: v1

kind: Service

metadata:

  name: helmdatascientest-service

spec:

  type: LoadBalancer

  ports:

  - port: 80

    targetPort: 80

  selector:

    app: helmdatascientest

Déploiement de l'Application

Avec les fichiers de configuration prêts, on peut passer au déploiement de notre application. Dans le dossier racine du chart, exécuter cette commande : 

helm install helmdatascientest . --values values.yaml

Cette commande crée une "release" de notre application dans le cluster Kubernetes.

Gestion de l'application

Helm facilite la mise à jour de l’application ou de sa configuration.

  • Pour mettre à jour votre application, modifiez les fichiers nécessaires (ici, values.yaml) et exécutez :

helm upgrade helmdatascientest . --values values.yaml

  • Pour voir l'historique des mises à jour, utilisez :

helm history helmdatascientest

  • En cas de besoin, vous pouvez revenir à une version antérieure de votre application :

helm rollback helmdatascientest[REVISION]

Pour conclure 

Helm se révèle être un outil indispensable dans l'écosystème Kubernetes pour la gestion efficace des applications. À travers l'exemple de notre application web fictive "HelmDatascientest", nous avons exploré la façon dont Helm simplifie le processus de déploiement, de mise à jour, et de gestion d'applications sur Kubernetes. En encapsulant des configurations complexes dans des charts réutilisables, Helm permet aux développeurs et aux administrateurs système de gérer des applications de manière plus intuitive, sécurisée, et scalable.

En adoptant Helm dans vos workflows de déploiement Kubernetes, vous bénéficiez d'une automatisation accrue, d'une gestion simplifiée des applications, et d'une capacité à évoluer et à répondre rapidement aux besoins changeants de votre organisation.

Omnes education logo

OMNES Education est une institution privée d'enseignement supérieur et de recherche interdisciplinaire, implantée à Beaune, Bordeaux, Chambéry, Lyon, Rennes et Paris. Avec ses campus à Abidjan, Barcelone, Genève, Londres, Monaco, Munich, Montreux et San Francisco, OMNES Education occupe une place unique dans le paysage éducatif français.

15
[Écoles]
200 000
[Alumni]
3 000
[Experts]
40 000
[Étudiants]
20
[Campus en France et à l’étranger]
Management
Ingénieurs
Communication
Sciences politiques et Relations internationales
Création et design