Parlons de quelques-uns des outils d’orchestration de conteneurs les plus populaires disponibles sur le marché.
Qu’est-ce qu’une orchestration de conteneurs ?
Les plateformes de conteneurs telles que Docker sont très populaires de nos jours pour emballer les applications basées sur une architecture de microservices. Les conteneurs peuvent être hautement évolutifs et créés à la demande. Bien que cela soit intéressant pour quelques conteneurs, imaginez que vous en ayez des centaines.
Il devient extrêmement difficile de gérer le cycle de vie des conteneurs et leur gestion lorsque leur nombre augmente dynamiquement en fonction de la demande.
L’orchestration des conteneurs résout le problème en automatisant la programmation, le déploiement, l’évolutivité, l’équilibrage des charges, la disponibilité et la mise en réseau des conteneurs. L’orchestration des conteneurs est l’automatisation et la gestion du cycle de vie des conteneurs et des services.
Il s’agit d’un processus de gestion et d’organisation de plusieurs conteneurs et d’une architecture de microservices à l’échelle.
Heureusement, de nombreux outils d’orchestration de conteneurs sont disponibles sur le marché.
Explorons-les !
Kubernetes
Vous l’avez deviné, n’est-ce pas ?
Kubernetes est une plateforme open-source conçue à l’origine par Google et désormais maintenue par la Cloud Native Computing Foundation. Kubernetes prend en charge à la fois la configuration déclarative et l’automatisation. Il peut aider à automatiser le déploiement, la mise à l’échelle et la gestion des charges de travail et des services conteneurisés.
L’API de Kubernetes permet d’établir une communication entre les utilisateurs, les composants du cluster et les composants tiers externes. Le plan de contrôle et les nœuds de Kubernetes s’exécutent sur un groupe de nœuds qui forment ensemble le cluster. La charge de travail de l’application consiste en un ou plusieurs pods qui s’exécutent sur le(s) nœud(s) travailleur(s). Le plan de contrôle gère les pods et les nœuds de travail.
Des entreprises comme Babylon, Booking.com, AppDirect utilisent largement Kubernetes.
Fonctionnalités
- Découverte de services et équilibrage de charge
- Orchestration du stockage
- Déploiements et retours automatisés
- Mise à l’échelle horizontale
- Gestion des secrets et de la configuration
- Auto-réparation
- Exécution par lots
- Double pile IPv4/IPv6
- Emballage automatique des conteneurs (bin packing)
Vous voulez apprendre Kubernetes ? Consultez ces ressources d’apprentissage.
OpenShift
Redhat propose OpenShift Container Platform as a Service (PaaS). Elle aide à l’automatisation des applications sur des ressources sécurisées et évolutives dans des environnements de cloud hybride. Elle fournit des plateformes d’entreprise pour la création, le déploiement et la gestion d’applications conteneurisées.
Il est construit sur Redhat enterprise Linux et le moteur Kubernetes. Openshift dispose de diverses fonctionnalités pour gérer les clusters via l’interface utilisateur et le CLI. Redhat propose Openshift en deux variantes supplémentaires,
- Openshift Online – proposé en tant que logiciel en tant que service (SaaS)
- OpenShift Dedicated – proposé sous forme de services gérés
Openshift Origin (Origin Community Distribution) est un projet communautaire open-source en amont qui est utilisé dans OpenShift Container Platform, Openshift Online et OpenShift Dedicated.
Nomad
Nomad est un orchestrateur de charge de travail simple, flexible et facile à utiliser pour déployer et gérer des conteneurs et des applications non conteneurisées sur site et dans les nuages à grande échelle. Nomad s’exécute sous la forme d’un binaire unique avec une faible empreinte de ressources (35 Mo) et est pris en charge par macOS, Windows et Linux.
Les développeurs utilisent une infrastructure déclarative en tant que code(IaC) pour déployer leurs applications et définissent la manière dont une application doit être déployée. Nomad récupère automatiquement les applications en cas de défaillance.
Nomad Orchestrate des applications de tout type (pas seulement des conteneurs). Il offre un support de première classe pour Docker, Windows, Java, VMs, et plus encore.
Caractéristiques
- Simple et fiable
- Modernisez les applications héritées sans réécriture
- Fédération facile à l’échelle
- Évolutivité prouvée
- Multi-cloud en toute simplicité
- Intégrations natives avec Terraform, Consul et Vault
Docker Swarm
Docker Swarm utilise un modèle déclaratif. Vous pouvez définir l’état souhaité du service, et Docker maintiendra cet état. Docker Enterprise Edition a intégré Kubernetes à Swarm. Docker offre désormais une certaine flexibilité dans le choix du moteur d’orchestration. Docker engine CLI est utilisé pour créer un essaim de moteurs Docker où les services d’application peuvent être déployés.
Lescommandes Docker sont utilisées pour interagir avec le cluster. Les machines qui rejoignent le cluster sont appelées nœuds, et le Swarm manager gère les activités du cluster.
Docker Swarm se compose de deux éléments principaux :
- Manager – les nœuds managers assignent des tâches aux nœuds travailleurs de l’essaim. Un leader est élu sur la base d’un algorithme de consensus Raft. Le leader prend toutes les décisions relatives à la gestion de l’essaim et à l’orchestration des tâches pour l’essaim.
- Nœud travailleur – le nœud travailleur reçoit les tâches du nœud gestionnaire et les exécute.
Caractéristiques
- 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 désiré
- Mise en réseau multi-hôtes
- Découverte des services
- Répartition de la charge
- Sécurité par défaut
- Mises à jour en continu
Docker Compose
Docker Compose permet de définir et d’exécuter des applications multi-conteneurs qui fonctionnent ensemble. Docker-compose décrit des groupes de services interconnectés qui partagent des dépendances logicielles et sont orchestrés et mis à l’échelle ensemble.
Vous pouvez utiliser un fichier YAML(dockerfile) pour configurer les services de votre application. Ensuite, avec une commande docker-compose up, vous créez et démarrez tous les services à partir de votre configuration.
Un docker-compose.yml ressemble à 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/
Vous pouvez utiliser Docker Compose pour diviser le code de l’application en plusieurs services indépendants qui communiquent via un réseau interne. L’outil fournit une interface utilisateur pour gérer l’ensemble du cycle de vie de vos applications. Docker Compose s’est traditionnellement concentré sur les flux de travail de développement et de test, mais il se concentre désormais sur des fonctionnalités plus orientées vers la production.
Le moteur Docker peut être une instance autonome approvisionnée 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 de conteneurs
- Recréez uniquement les conteneurs qui ont été modifiés
- Variables et déplacement d’une composition entre les environnements
MiniKube
Minikube permet aux utilisateurs d’exécuter Kubernetes localement. Avec Minikube, vous pouvez tester des applications localement à l’intérieur d’un cluster Kubernetes à nœud unique sur votre ordinateur personnel. Minikube dispose d’un support intégré pour le tableau de bord Kubernetes.
Minikube utilise la dernière version stable de Kubernetes et prend en charge les fonctionnalités suivantes.
- Équilibrage de charge
- Multi-cluster
- Volumes persistants
- NodePorts
- ConfigMaps et Secrets
- Exécution de conteneurs : Docker, CRI-O et Container
- Activation de CNI (Container Network Interface)
Marathon
Marathon est pour Apache Mesos qui a la capacité d’orchestrer des applications ainsi que des frameworks.
Apache Mesos est un gestionnaire de cluster open-source. Mesos est un projet d’Apache qui permet d’exécuter 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 – Les 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 les tâches.
Le planificateur Marathon utilise ZooKeeper pour localiser le maître actuel afin de soumettre des tâches. Le planificateur Marathon et le maître Mesos ont un maître secondaire qui fonctionne pour assurer la haute disponibilité. Les clients interagissent avec Marathon en utilisant l’API REST.
Fonctionnalités
- Haute disponibilité
- Applications avec état
- Interface utilisateur belle et puissante
- Contraintes
- Découverte de services et équilibrage de charge
- Contrôles de santé
- Abonnement aux événements
- Métriques
- API REST
Cloudify
Cloudify est un outil d’orchestration cloud open-source pour l’automatisation du déploiement et la gestion du cycle de vie des conteneurs et des microservices. Il offre des fonctionnalités telles que les clusters à la demande, l’auto-réparation 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 des plateformes de conteneurs.
Il peut être facilement intégré à Docker et aux gestionnaires de conteneurs basés sur Docker, notamment les suivants.
- Docker
- Docker Swarm
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify peut vous aider à créer, soigner, faire évoluer et démanteler 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 permet d’orchestrer des services hétérogènes sur différentes plateformes. Vous pouvez déployer des applications à l’aide du CLI et de Cloudify Manager.
Rancher
Rancher est une plateforme open-source qui utilise l’orchestration de conteneurs connue sous le nom de cattle. Elle vous permet de tirer parti de services d’orchestration tels que Kubernetes, Swarm et Mesos. Rancher fournit le logiciel nécessaire à la gestion des conteneurs afin que les organisations n’aient pas besoin de construire des plateformes de services de conteneurs à partir de zéro en utilisant un ensemble distinct de technologies open source.
Rancher 2.x permet de gérer des clusters Kubernetes fonctionnant sur les fournisseurs spécifiés par le client.
L’utilisation de Rancher se fait en deux étapes.
Préparez 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émarrez le serveur
Pour installer et exécuter Rancher, exécutez 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 rancher permet de gérer des milliers de clusters et de nœuds Kubernetes.
Container
Containership permet le déploiement et la gestion d’une infrastructure Kubernetes multi-cloud. Il est flexible pour fonctionner dans les environnements de cloud public, privé et sur site à partir d’un seul outil. Il permet de provisionner, de gérer et de surveiller vos clusters Kubernetes chez tous les principaux fournisseurs de cloud.
Containership est construit à l’aide d’outils cloud-native, tels que Terraform pour le provisionnement, Prometheus pour la surveillance et Calico pour la gestion des réseaux et des politiques. Il est construit au-dessus de Kubernetes vanille. La plateforme Containership offre un tableau de bord intuitif, ainsi qu’une puissante API REST pour une automatisation complexe.
Caractéristiques
- Tableau de bord multicloud
- Journaux d’audit
- Prise en charge des instances GPU
- Mises à niveau non perturbatrices
- Masters programmables
- Mesures intégrées
- Journalisation en temps réel
- Déploiements sans temps d’arrêt
- Prise en charge du stockage persistant
- Prise en charge des registres privés
- 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 via un fichier manifeste (Azkfile.js), qui aide 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 sont comme des machines virtuelles, mais ils sont plus performants et consomment moins de ressources physiques.
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 machines des différents 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 de conteneurs sur Google Cloud Platform. Les clusters GKE sont alimentés par Kubernetes. Vous pouvez interagir avec les clusters à l’aide de la CLI de Kubernetes. Les commandes Kubernetes peuvent être utilisées pour déployer et gérer des applications, effectuer des tâches d’administration, définir des règles et surveiller l’état des charges de travail déployées.
Les fonctions 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, l’autoréparation 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 à servir des conteneurs d’application. Vous pouvez utiliser Cloud Build pour créer des images de conteneurs (telles que Docker) à partir de divers référentiels de code source, et Container Registry pour stocker vos images de conteneurs.
GKE est une solution prête pour l’entreprise, avec des modèles de déploiement prédéfinis.
Intéressé par l’apprentissage de GKE ? Consultez ce cours pour débutants.
AKS
AKS est un service Kubernetes entièrement géré proposé par Azure, qui offre Kubernetes sans serveur, la sécurité et la 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. Vous n’avez qu’à gérer et maintenir les nœuds d’agent.
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 dans 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 à l’aide d’Azure Monitor.
AKS prend également en charge les conteneurs Windows Server. Son cluster et les performances de l’application déployée peuvent être surveillés à partir d’Azure Monitor. Les journaux sont stockés dans un espace de travail Azure Log Analytics.
AKS a été certifié conforme à Kubernetes.
AWS EKS
AWSEKS est un service Kubernetes entièrement géré. AWS vous permet d’exécuter votre cluster EKS à l’aide d’AWS Fragrate, qui est un calcul sans serveur pour les conteneurs. Fragrance supprime le besoin de provisionner et de gérer des serveurs, permettant de payer par ressource et par application.
AWS permet d’utiliser des fonctionnalités supplémentaires avec EKS, telles que Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups, and Access Management (IAM), de surveiller, de mettre à l’échelle et d’équilibrer la charge des applications. EKS s’intègre à AWS App mesh et offre une expérience native de Kubernetes. EKS exécute la dernière version de Kubernetes et est certifié conforme à Kubernetes.
Conclusion
En fin de compte, j’espère que la liste ci-dessus vous a permis de bien comprendre les différents outils d’orchestration de conteneurs et qu’il vous sera désormais plus facile d’opter pour le meilleur en fonction de votre cas d’utilisation.
Ensuite, découvrez le logiciel de gestion Kubernetes.