2022-10-06 10:37 Temps de lecture : 24 min

14 outils d'orchestration de conteneurs pour DevOps

Explorons ensemble quelques solutions d'orchestration de conteneurs parmi les plus populaires du marché actuel.

Qu'est-ce que l'orchestration de conteneurs ?

Les plateformes de conteneurisation, telles que Docker, sont devenues extrêmement répandues pour le déploiement d'applications basées sur une architecture de microservices. Ces conteneurs offrent une grande évolutivité et peuvent être créés de manière dynamique en fonction des besoins. Bien que cela fonctionne bien pour un petit nombre de conteneurs, imaginez la complexité lorsque vous en gérez des centaines.

La gestion du cycle de vie et l'administration de ces conteneurs deviennent excessivement ardues lorsque leur nombre augmente en réponse à la demande.

L'orchestration de conteneurs intervient pour pallier cette difficulté en automatisant la planification, le déploiement, la mise à l'échelle, l'équilibrage de charge, la disponibilité et la mise en réseau de ces conteneurs. En somme, l'orchestration de conteneurs consiste à automatiser et à gérer le cycle de vie des conteneurs et des services qu'ils hébergent.

Il s'agit donc d'un mécanisme de gestion et d'organisation d'architectures de conteneurs et de microservices à grande échelle.

Heureusement, le marché propose une pléthore d'outils d'orchestration de conteneurs.

Examinons-les de plus près !

Kubernetes

Sans surprise, n'est-ce pas ?

Kubernetes est une plateforme open source initialement développée par Google, et désormais gérée par la Cloud Native Computing Foundation. Kubernetes prend en charge à la fois la configuration déclarative et l'automatisation. Il simplifie l'automatisation du déploiement, de la mise à l'échelle et de la gestion des charges de travail et des services conteneurisés.

Image fournie par Kubernetes.io

L'API Kubernetes facilite la communication entre les utilisateurs, les différents composants du cluster et les services externes. Le plan de contrôle de Kubernetes et les nœuds s'exécutent sur un groupe de nœuds qui, ensemble, forment le cluster. La charge de travail de l'application se compose d'un ou plusieurs pods qui s'exécutent sur des nœuds de travail. Le plan de contrôle assure la gestion des pods et des nœuds de travail.

Des entreprises comme Babylon, Booking.com et AppDirect utilisent largement Kubernetes.

Fonctionnalités clés :

  • Découverte de services et équilibrage de charge
  • Gestion du stockage
  • Déploiements et restaurations automatisés
  • Mise à l'échelle horizontale
  • Gestion des secrets et de la configuration
  • Auto-réparation
  • Exécution par lots
  • Support du double protocole IPv4/IPv6
  • Emballage automatique des conteneurs

Envie d'approfondir vos connaissances sur Kubernetes ? Consultez ces ressources d'apprentissage.

OpenShift

RedHat propose OpenShift, une plateforme de conteneurs en tant que service (PaaS). Cette solution facilite l'automatisation des applications sur des ressources sécurisées et évolutives dans des environnements de cloud hybride. Elle offre des plateformes de niveau entreprise pour la création, le déploiement et la gestion d'applications conteneurisées.

Image fournie par Openshift

OpenShift s'appuie sur le moteur RedHat Enterprise Linux et Kubernetes. Il offre de nombreuses fonctionnalités pour la gestion de clusters via son interface utilisateur et son interface en ligne de commande. RedHat propose OpenShift en deux autres versions :

  • OpenShift Online – proposé sous forme de logiciel en tant que service (SaaS)
  • OpenShift Dedicated – proposé en tant que services gérés

OpenShift Origin (Origin Community Distribution) est un projet communautaire open source qui est utilisé dans OpenShift Container Platform, OpenShift Online et OpenShift Dedicated.

Nomad

Nomad est un orchestrateur de charges de travail simple, flexible et facile à utiliser pour le déploiement et la gestion de conteneurs et d'applications non conteneurisées, aussi bien sur site que dans le cloud à grande échelle. Nomad fonctionne comme un binaire unique avec une faible empreinte de ressources (35 Mo) et est pris en charge sur macOS, Windows et Linux.

Les développeurs utilisent une infrastructure déclarative sous forme de code (IaC) pour déployer leurs applications et définir leur mode de déploiement. Nomad récupère automatiquement les applications en cas de défaillance.

Image fournie par Nomad

Nomad permet d'orchestrer des applications de tous types (pas seulement des conteneurs). Il assure une prise en charge de premier ordre pour Docker, Windows, Java, les machines virtuelles, etc.

Fonctionnalités :

  • Simplicité et fiabilité
  • Modernisation des applications existantes sans réécriture
  • Fédération aisée à grande échelle
  • Évolutivité éprouvée
  • Multi-cloud simplifié
  • Intégrations natives avec Terraform, Consul et Vault

Docker Swarm

Docker Swarm utilise un modèle déclaratif. Vous définissez l'état souhaité du service, et Docker s'efforce de le maintenir. Docker Enterprise Edition a intégré Kubernetes à Swarm. Docker offre ainsi la flexibilité de choisir le moteur d'orchestration qui vous convient. L'interface en ligne de commande du moteur Docker permet de créer un essaim de moteurs Docker dans lequel les services d'application peuvent être déployés.

Image fournie par Docker

Les commandes Docker sont utilisées pour interagir avec le cluster. Les machines qui rejoignent le cluster sont appelées nœuds, et le gestionnaire Swarm supervise les activités du cluster.

Docker Swarm se compose de deux principaux composants :

  • Gestionnaire – Les nœuds de gestionnaire assignent des tâches aux nœuds de travail de l'essaim. Un leader est sélectionné en fonction d'un algorithme de consensus Raft. Ce leader est responsable de la gestion des décisions relatives à l'essaim et de l'orchestration des tâches.
  • Nœud de travail – Le nœud de travail reçoit les tâches du nœud de gestionnaire et les exécute.

Fonctionnalités :

  • Gestion de cluster intégrée à Docker Engine
  • Conception décentralisée
  • Modèle de service déclaratif
  • Mise à l'échelle
  • Réconciliation de l'état souhaité
  • Mise en réseau multi-hôtes
  • Découverte de services
  • Équilibrage de charge
  • Sécurité par défaut
  • Mises à jour continues

Docker Compose

Docker Compose est conçu pour définir et exécuter des applications multi-conteneurs qui fonctionnent ensemble. Il permet de décrire des groupes de services interconnectés qui partagent des dépendances logicielles et qui sont orchestrés et mis à l'échelle collectivement.

Vous pouvez utiliser un fichier YAML (dockerfile) pour configurer les services de votre application. Ensuite, une simple commande `docker-compose up` permet de créer et de démarrer tous les services en se basant sur votre configuration.

Un fichier `docker-compose.yml` peut ressembler à ceci :

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

Docker Compose vous permet de factoriser le code de l'application en plusieurs services indépendants qui communiquent via un réseau interne. L'outil fournit une interface en ligne de commande pour gérer l'ensemble du cycle de vie de vos applications. Initialement axé sur les workflows de développement et de test, Docker Compose se concentre désormais sur des fonctionnalités plus orientées production.

Le moteur Docker peut être une instance autonome fournie avec Docker Machine ou un cluster Docker Swarm complet.

Fonctionnalités :

  • Plusieurs environnements isolés sur un seul hôte
  • Préservation des données de volume lors de la création des conteneurs
  • Recréation uniquement des conteneurs ayant changé
  • Variables et migration aisée d'une composition entre environnements

MiniKube

Minikube permet aux utilisateurs d'exécuter Kubernetes localement. Il vous permet de tester des applications dans un cluster Kubernetes à nœud unique sur votre ordinateur personnel. Minikube inclut également une prise en charge intégrée du tableau de bord Kubernetes.

Minikube exécute la dernière version stable de Kubernetes et prend en charge les fonctionnalités suivantes :

  • Équilibrage de charge
  • Multicluster
  • Volumes persistants
  • NodePorts
  • ConfigMaps et secrets
  • Environnements d'exécution de conteneurs : Docker, CRI-O et containerd
  • Activation de CNI (Container Network Interface)

Marathon

Marathon est conçu pour Apache Mesos et permet d'orchestrer aussi bien des applications que des frameworks.

Apache Mesos est un gestionnaire de clusters open source. Il est capable de gérer des charges de travail conteneurisées et non conteneurisées. Les principaux composants d'un cluster Mesos sont les nœuds d'agent Mesos, le maître Mesos, ZooKeeper, les frameworks. Ces frameworks se coordonnent avec le maître pour planifier les tâches sur les nœuds d'agent. Les utilisateurs interagissent avec le framework Marathon pour planifier des tâches.

Le planificateur Marathon utilise ZooKeeper pour localiser le maître actuel et soumettre des tâches. Le planificateur Marathon et le maître Mesos disposent d'un maître secondaire en cours d'exécution pour assurer une haute disponibilité. Les clients interagissent avec Marathon via l'API REST.

Fonctionnalités :

  • Haute disponibilité
  • Applications avec état
  • Interface utilisateur conviviale et puissante
  • Contraintes
  • Découverte de services et équilibrage de charge
  • Vérifications d'état
  • Abonnement aux événements
  • Métriques
  • API REST

Cloudify

Cloudify est un outil d'orchestration cloud open source qui permet d'automatiser le déploiement et la gestion du cycle de vie des conteneurs et des microservices. Il offre des fonctionnalités telles que des clusters à la demande, la réparation automatique et la mise à l'échelle au niveau de l'infrastructure. Cloudify peut gérer l'infrastructure de conteneurs et orchestrer les services qui s'exécutent sur les plateformes de conteneurs.

Il s'intègre facilement à Docker et aux gestionnaires de conteneurs basés sur Docker, notamment :

  • Docker
  • Docker Swarm
  • Docker Compose
  • Kubernetes
  • Apache Mesos

Cloudify permet de créer, réparer, mettre à l'échelle et supprimer des clusters de conteneurs. L'orchestration des conteneurs est essentielle pour fournir une infrastructure évolutive et hautement disponible sur laquelle les gestionnaires de conteneurs peuvent fonctionner. Cloudify offre la possibilité d'orchestrer des services hétérogènes sur plusieurs plateformes. Vous pouvez déployer des applications via l'interface en ligne de commande et le Cloudify Manager.

Rancher

Rancher est une plateforme open source qui utilise une approche d'orchestration de conteneurs appelée bétail. Elle vous permet d'exploiter des services d'orchestration tels que Kubernetes, Swarm et Mesos. Rancher fournit le logiciel nécessaire à la gestion des conteneurs, ce qui permet aux organisations de ne pas avoir à créer des plateformes de services de conteneurs à partir de zéro en utilisant un ensemble disparate de technologies open source.

Rancher 2.x permet la gestion de clusters Kubernetes exécutés sur les fournisseurs spécifiés par le client.

La prise en main de Rancher se déroule en deux étapes.

Préparation d'un hôte Linux

Préparez un hôte Linux avec Ubuntu 16.04 ou 18.04 64 bits (ou une autre distribution Linux prise en charge), et au moins 4 Go de mémoire. Installez une version prise en charge de Docker sur l'hôte.

Démarrage du serveur

Pour installer et exécuter Rancher, lancez la commande Docker suivante sur votre hôte :

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

L'interface utilisateur de Rancher permet de gérer des milliers de clusters et de nœuds Kubernetes.

Containership

Containership permet de déployer et de gérer une infrastructure Kubernetes multi-cloud. Il offre la flexibilité de fonctionner dans des environnements de cloud public, privé et sur site à partir d'un seul outil. Il permet d'approvisionner, de gérer et de surveiller vos clusters Kubernetes sur tous les principaux fournisseurs de cloud.

Containership est construit à l'aide d'outils natifs du cloud, tels que Terraform pour l'approvisionnement, Prometheus pour la surveillance et Calico pour la mise en réseau et la gestion des politiques. Il est basé sur Kubernetes vanille. La plateforme Containership offre un tableau de bord intuitif, ainsi qu'une puissante API REST pour l'automatisation complexe.

Fonctionnalités :

  • Tableau de bord multi-cloud
  • Journaux d'audit
  • Prise en charge des instances GPU
  • Mises à niveau sans interruption
  • Maîtres programmables
  • Métriques intégrées
  • Journalisation en temps réel
  • Déploiements sans temps d'arrêt
  • Prise en charge du stockage persistant
  • Prise en charge du registre privé
  • Mise à l'échelle automatique de la charge de travail
  • Gestion des clés SSH

AZK

AZK est un outil d'orchestration open source pour les environnements de développement, qui s'appuie sur un fichier manifeste (Azkfile.js) pour aider les développeurs à installer, configurer et exécuter des outils couramment utilisés pour développer des applications web avec différentes technologies open source.

AZK utilise des conteneurs au lieu de machines virtuelles. Les conteneurs offrent des performances accrues et une consommation de ressources physiques inférieure à celle des machines virtuelles.

Les fichiers Azkfile.js peuvent être réutilisés pour ajouter de nouveaux composants ou en créer de nouveaux à partir de zéro. Ils peuvent être partagés, ce qui garantit une parité totale entre les environnements de développement sur les différentes machines des programmeurs et réduit les risques de bogues lors du déploiement.

GKE

GKE fournit une solution entièrement gérée pour l'orchestration d'applications conteneurisées sur la Google Cloud Platform. Les clusters GKE sont basés sur Kubernetes. Vous pouvez interagir avec les clusters à l'aide de l'interface de ligne de commande Kubernetes. Les commandes Kubernetes permettent de déployer et de gérer des applications, d'effectuer des tâches d'administration, de définir des politiques et de surveiller l'état des charges de travail déployées.

Image fournie par GCP

Les fonctionnalités de gestion avancées de Google Cloud sont également disponibles avec les clusters GKE, comme l'équilibrage de charge de Google Cloud, les pools de nœuds, la mise à l'échelle automatique des nœuds, les mises à niveau automatiques, la réparation automatique des nœuds, la journalisation et la surveillance avec la suite d'opérations de Google Cloud.

Google Cloud fournit des outils CI/CD pour vous aider à créer et à distribuer des conteneurs d'applications. Vous pouvez utiliser Cloud Build pour créer des images de conteneurs (comme Docker) à partir de différents dépôts de code source, et Container Registry pour stocker vos images de conteneurs.

GKE est une solution d'entreprise dotée de modèles de déploiement prédéfinis.

Envie de maîtriser GKE ? Jetez un œil à ce cours pour débutants.

AKS

AKS est un service Kubernetes entièrement géré proposé par Azure. Il offre un environnement Kubernetes sans serveur ainsi que des fonctionnalités de sécurité et de gouvernance. AKS gère votre cluster Kubernetes et vous permet de déployer facilement des applications conteneurisées. AKS configure automatiquement tous les maîtres et nœuds Kubernetes, ce qui vous permet de vous concentrer sur la gestion et la maintenance des nœuds d'agent.

Image fournie par Azure

AKS est gratuit ; vous ne payez que pour les nœuds d'agent au sein de votre cluster et non pour les maîtres. Vous pouvez créer un cluster AKS via le portail Azure ou par programmation. Azure prend également en charge des fonctionnalités supplémentaires telles que la mise en réseau avancée, l'intégration d'Azure Active Directory et la surveillance via Azure Monitor.

AKS prend également en charge les conteneurs Windows Server. Les performances de votre cluster et des applications déployées peuvent être surveillées depuis Azure Monitor. Les journaux sont stockés dans un espace de travail Azure Log Analytics.

AKS a obtenu la certification de conformité Kubernetes.

AWS EKS

AWS EKS est un service Kubernetes entièrement géré. AWS vous permet d'exécuter votre cluster EKS via AWS Fargate, un service de calcul sans serveur pour les conteneurs. Fargate élimine la nécessité de provisionner et de gérer les serveurs, vous permettant de payer à l'utilisation par application.

AWS permet l'utilisation de fonctionnalités supplémentaires avec EKS, telles qu'Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, les groupes Auto Scaling et la gestion des accès (IAM), la surveillance, la mise à l'échelle et l'équilibrage de charge des applications. EKS s'intègre à AWS App Mesh et offre une expérience Kubernetes native. EKS exécute la dernière version de Kubernetes et a obtenu la certification de conformité Kubernetes.

Conclusion

J'espère que cette liste vous a permis de mieux comprendre les différents outils d'orchestration de conteneurs. Il vous sera désormais plus facile de choisir celui qui convient le mieux à votre cas d'utilisation spécifique.

N'hésitez pas à consulter notre article sur les logiciels de gestion Kubernetes.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.