Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment déployer des applications dans Kubernetes

Comment-déployer-des-applications-dans-Kubernetes
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Kubernetes est l'une des plates-formes d'automatisation les plus populaires pour le déploiement, la mise à l'échelle et l'exploitation de conteneurs d'applications sur un cluster d'hôtes ou de nœuds.

Cet article traite de l'un des objets centraux de Kubernetes : le déploiement. L'objectif est de comprendre son comportement et comment le créer, le mettre à jour et le supprimer.

What is a Deployment?

Un déploiement est l'un des objets utilisés pour lancer des pods. Les bonnes pratiques Kubernetes encouragent l'utilisation de déploiements pour les applications sans état. Sans déploiement, vous auriez besoin de créer, mettre à jour et supprimer manuellement plusieurs pods, ce qui serait fastidieux et irréalisable pour de nombreux pods.

Un déploiement déclare un seul objet dans YAML qui non seulement crée les pods, mais garantit également qu'ils sont à jour et en cours d'exécution. Vous pouvez également facilement mettre à l'échelle automatiquement vos applications à l'aide d'un déploiement sur Kubernetes. Ainsi, un déploiement est utilisé pour mettre à l'échelle, déployer et restaurer des versions de vos applications dans des pods.

Un déploiement indique également à Kubernetes le nombre de copies d'un pod que nous voulons exécuter, et Kubernetes s'occupe du reste. Le contrôleur associé créera un ReplicaSet à partir de votre configuration lors de la création d'un déploiement. Le contrôleur associé au ReplicaSet créera une série de pods à partir de la configuration du ReplicaSet.

Les avantages d'utiliser un déploiement au lieu de créer directement un ReplicaSet sont :

  • Historisation de l'objet : chaque modification de l'objet (via un « appliquer » ou un « modifier ») créera une sauvegarde de la version précédente.
  • Gestion du déploiement et du rollback : Vous pouvez revenir sur une configuration en lien avec le point précédent.

Creating a Deployment

Il existe deux méthodes que nous pouvons utiliser pour créer un déploiement Kubernetes :

Méthode impérative

Les API Kubernetes permettent une approche plus directe et impérative sans nécessiter de fichiers de configuration ou de manifestes au format YAML. Dans cette approche, tout ce que nous avons à faire est de dire ce que nous voulons faire, et Kubernetes se chargera de définir ce qui doit être fait pour atteindre le résultat attendu.

Pour utiliser la méthode impérative, utilisez simplement la commande ci-dessous :

kubectl create deployment nginx-deployment --image nginx --port=80

Méthode déclarative

Dans cette méthode, vous devez tout déclarer, et lorsque vous utilisez ce code, Kubernetes lit simplement vos définitions et crée exactement comme présenté ou déclaré.

Pour utiliser le déploiement déclaratif, vous devrez créer un fichier YAML.

Fichier YAML pour le déploiement portant le nom new_deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  #Specifies the number of Pod Copies
  replicas: 3
 #Selects the Pod to be managed by the deployment
  selector:
    #Matches the defined labels
    matchLabels:
      deploy: example
  template:
    metadata:
      #Specifies the labels on the Pod.
       labels:
         deploy: example
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.2 

Dans ce fichier YAML, après avoir défini la version de l'API Kubernetes, le type d'objet que vous créez et le nom du déploiement, il y a la section spec. Dans cette section, vous définissez d'abord la clé des répliques, qui indique le nombre d'instances de pod que le déploiement doit garder actives.

Utilisez un libellé de sélecteur pour identifier les pods dans le déploiement. Pour cela, vous pouvez utiliser l'étiquette de déploiement, qui indique que tous les pods correspondant à ces étiquettes sont regroupés dans le déploiement.

Après cela, vous avez l'objet modèle où vous avez un modèle de pod dans votre spécification de déploiement. Lorsque le déploiement crée des pods, il les crée à l'aide de ce modèle. La spécification d'un pod standard se trouve sous la clé de modèle.

Avec ce déploiement, les images Nginx avec des étiquettes seront déployées sur les pods. De plus, il faut aussi faire attention sur ce point, et le Pod est l'unité de scalabilité dans Kubernetes, il faut donc réfléchir au pattern que l'on souhaite utiliser si l'on met plusieurs conteneurs dans le même Pod.

Ensuite, appliquez le new_deployment.yaml fichier Yaml, utilisez la commande suivante :

kubectl apply -f new_deployment.yaml

Après quelques secondes, vous pouvez obtenir l'état du déploiement en utilisant ce qui suit : 

kubectl get all
déployer

Retrieve and Update Deployment

Notez que vous avez créé les pods, le déploiement et également un Replicaset. Ainsi, un déploiement crée et gère toujours un Replicaset. Vous pouvez maintenant utiliser la commande suivante pour décrire le déploiement :

kubectl describe deployment nginx-deployment 
décrire

Vous avez maintenant une description complète du déploiement. Il met en évidence la stratégie utilisée pour créer/reconstruire les pods lorsqu'une mise à jour a été définie comme RollingUpdate.

La RollingUpdate stratégie permet une migration ordonnée d'une version d'une application vers une version plus récente. C'est la stratégie par défaut utilisée dans Kubernetes.

En plus de cela, nous avons également les stratégies suivantes :

  • Recréer: Termine les instances de pod en cours d'exécution et les "recrée" avec la nouvelle version ;
  • Bleu vert: Cette stratégie crée deux environnements distincts mais identiques. Dans l'environnement bleu, l'application s'exécute telle quelle, tandis que dans l'environnement vert, l'application s'exécute telle qu'elle sera à l'avenir ;
  • Canaries: Une stratégie de déploiement où un sous-ensemble d'utilisateurs est impliqué dans la version incrémentielle d'une application ou d'un service.

Si vous optez pour la "mise à jour continue", vous pouvez configurer son comportement sur le nombre de répliques souhaitées.

  • maxSurge vous permet d'indiquer (en pourcentage ou en termes absolus) combien de pods il peut créer en plus du nombre de réplicas actuellement configurés.
  • maxUnavailable permet d'indiquer (en pourcentage ou en absolu) combien de Pods peuvent être « indisponibles » lors de la mise à jour, en fonction du nombre de réplicas configurés.

Selon votre application et votre autoscaler, ces configurations vous permettront d'assurer la QoS ou d'accélérer vos déploiements.

Ensuite, vous devez redimensionner les pods à 10 et modifier la balise d'image Nginx pour la plus récente.

kubectl scale deployment nginx-deployment --replicas=10
échelle-1

Notez que nous avons 5 conteneurs en cours de création, et sur 10 Pods, nous en avons 5 disponibles.

Après quelques secondes, utilisez la commande suivante : 

kubectl get all

Ici, vous pouvez voir que tous les pods ont été créés et que les conteneurs sont en cours d'exécution.

tous les-1

Deleting your Deployment

Pour supprimer un déploiement Kubernetes, vous pouvez utiliser les commandes suivantes :

kubectl delete deploy nginx-deployment 
kubectl delete deploy new_deployment.yaml

Helm: Simplify Deployments

Lorsque vous souhaitez déployer une application complexe qui utilise des dizaines voire des centaines de ressources Kubernetes, le kubectl devient inadapté, c'est pourquoi l'outil Helm a été développé. Casque est un gestionnaire de packages pour Kubernetes qui s'appuie sur kubectl et simplifie les déploiements d'applications.

Dans le vocabulaire Helm, une application est appelée une release. Il est associé à un graphe, c'est-à-dire un ensemble de fichiers de configuration au format YAML contenant des variables globales et des templates décrivant les ressources Kubernetes.

Conclusion

Le déploiement est un objet Kubernetes essentiel. Comme un grand pouvoir implique une grande responsabilité, vous devez être prudent lors de sa configuration ou risquer d'avoir des comportements inattendus. Pour aller plus loin dans les configurations de déploiement, vous pouvez vous référer au Documentation de Kubernetes.

Vous pouvez également explorer certains des meilleurs Tutoriels Kubernetes apprendre à partir de zéro et devenir un expert.

Merci à nos commanditaires
Plus de bonnes lectures sur DevOps
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder