In this article
Qu’est-ce que l’orchestration de conteneurs ?
Un conteneur est une unité exécutable légère et isolée qui contient une application ou ses composants. Les développeurs peuvent configurer un conteneur pour qu’il s’exécute dans n’importe quel environnement et sur toute machine dotée d’un moteur d’exécution de conteneurs.
Les conteneurs permettent de rendre le code d’une application portable. Nous pouvons regrouper le code, les bibliothèques du système d’exploitation (OS), les variables d’environnement, les dépendances et la configuration dans une seule unité. Nous pouvons ensuite déployer et exécuter le code dans différents environnements cloud ou sur site. Parmi les outils de conteneurisation les plus populaires figurent Docker Engine, containerd et CRI-O.
Qu’est-ce que l’orchestration de conteneurs ?
L’orchestration de conteneurs consiste à automatiser leur déploiement, leur exploitation et la gestion de leur cycle de vie. Cette approche automatise le provisionnement, le déploiement, la mise à l’échelle, la surveillance et le remplacement des conteneurs en cours d’exécution, ainsi que la gestion de leur stockage. Kubernetes, Docker Swarm, Nomad et Mesos sont des orchestrateurs de conteneurs populaires.
La gestion des conteneurs à grande échelle est difficile, en particulier lorsqu’il y a de nombreuses applications conteneurisées. La surveillance et la gestion des applications à l’aide de solutions personnalisées prennent souvent beaucoup de temps et sont sources d’erreurs. Une plateforme d’orchestration de conteneurs éprouvée permet de répondre à ces deux problèmes grâce à la standardisation et à l’automatisation.
Dans cet article, nous verrons pourquoi l’orchestration est nécessaire, examinerons en détail plusieurs orchestrateurs de conteneurs et aborderons les avantages et les risques de sécurité liés à l’orchestration des conteneurs.
Pourquoi l’orchestration est nécessaire
Avant que les orchestrateurs n’arrivent à maturité, les applications conteneurisées étaient souvent déployées à l’aide de scripts personnalisés et d’autres outils de déploiement, généralement conçus pour des plateformes et/ou des packages d’applications spécifiques. La standardisation apportée par les conteneurs a permis la création d’orchestrateurs polyvalents, en regroupant toutes les applications derrière un ensemble commun d’API et de spécifications de packaging.
Avant l’arrivée des orchestrateurs, il était difficile de gérer les conteneurs en cours d’exécution et de déterminer où les exécuter. C’était particulièrement vrai lors de la transition vers les architectures de microservices, où des dizaines, voire des centaines de conteneurs doivent fonctionner à tout moment et peuvent être mis à niveau plusieurs fois par jour.
Les orchestrateurs prennent en charge la tâche complexe consistant à exécuter ces conteneurs sur un cluster d’hôtes et fournissent des mécanismes standardisés pour la mise à l’échelle, les mises à niveau, le provisionnement réseau et bien d’autres opérations. L’un de leurs principaux avantages est l’utilisation d’un modèle de déploiement déclaratif, qui permet aux développeurs et aux opérateurs de définir l’état souhaité de l’application. Ce modèle évite aux auteurs de devoir se préoccuper de comment et de où exécuter le processus, car l’orchestrateur se charge de créer et de supprimer les conteneurs — et autres entités — pour atteindre l’état demandé, à l’endroit le plus approprié du cluster à tout moment. Les orchestrateurs continuent également de surveiller les éléments déployés et peuvent tenter automatiquement de rétablir l’état souhaité si un incident, comme un plantage de l’application ou une panne matérielle, entraîne un écart par rapport à la configuration prévue.
Kubernetes : l’orchestrateur de conteneurs dominant
Google a lancé la plateforme open source d’orchestration de conteneurs Kubernetes en 2015, en s’appuyant largement sur ses travaux autour de « Borg », son gestionnaire interne de charges de travail conteneurisées. En 2017, le soutien de la communauté à Kubernetes avait atteint un niveau tel qu’il est devenu le choix le plus populaire. La Cloud Native Computing Foundation (CNCF) a été créée en parallèle de Kubernetes 1.0 et a été apportée à la Linux Foundation par Google et d’autres membres fondateurs. Elle héberge containerd, Helm, Linkerd, Prometheus, gRPC et d’autres projets open source couronnés de succès.
Kubernetes est indépendant de la plateforme et prend en charge tous les systèmes d’exploitation dotés d’un moteur d’exécution de conteneurs compatible. Plusieurs fournisseurs cloud proposent désormais Kubernetes. Les principaux fournisseurs — Azure, AWS et Google Cloud — offrent des solutions Kubernetes en tant que service. En 2018, la CNCF a indiqué que 40 % des répondants à une enquête mondiale sur la gestion des conteneurs utilisaient Kubernetes. En 2021, cette proportion dépassait 80 %.
Des entreprises comme Pinterest confirment que Kubernetes améliore l’efficacité, accélère le déploiement des projets et permet d’économiser du temps et de l’argent en gérant des centaines de conteneurs. Selon une étude de cas de la CNCF consacrée à Spotify, l’utilisation du processeur des conteneurs s’est améliorée de deux à trois fois après l’adoption de Kubernetes.
Grâce à ses nombreuses fonctionnalités et à une communauté open source active, Kubernetes prend en charge des cas d’usage et des architectures extrêmement complexes. Il peut toutefois être un peu trop puissant si vous travaillez avec quelques applications simples et de petite taille, déployées peu fréquemment.
Autres plateformes d’orchestration de conteneurs
Docker Swarm : Swarm est un orchestrateur open source intégré au moteur d’exécution Docker. Comme les autres plateformes de clustering, il se compose d’un ou de plusieurs nœuds gestionnaires et nœuds de travail, et utilise un modèle de consensus RAFT pour partager l’état entre eux. Il offre moins de fonctionnalités que Kubernetes, mais Swarm est plus facile à configurer et à installer, car il est intégré au binaire Docker. Il fonctionne également bien avec Docker CLI et Docker Compose.
Apache Mesos : Apache Mesos est un projet de l’Université de Californie à Berkeley. Airbnb, Apple, Twitter et d’autres grandes entreprises utilisent cet orchestrateur de conteneurs. Mesos est léger et répartit les ressources de manière transparente, tout en offrant évolutivité et flexibilité. Son utilisation nécessite toutefois un solide savoir-faire technique.
Red Hat OpenShift : OpenShift est une plateforme en tant que service (PaaS) basée sur Kubernetes. Elle ne fonctionne pas sur tous les systèmes d’exploitation et nécessite CentOS, Fedora ou Red Hat Enterprise Linux Atomic Host (RHELAH). OpenShift intègre des fonctionnalités d’authentification et d’autorisation qui font défaut à la plupart des distributions Kubernetes. Sa simplicité d’utilisation séduit également les développeurs.
HashiCorp Nomad : Nomad est une plateforme axée sur l’ordonnancement et la gestion des processus. Elle peut toutefois prendre en charge davantage de clusters de conteneurs que Kubernetes.
Rancher : Rancher est une plateforme open source de Rancher Labs qui propose « Kubernetes en tant que service ». Elle offre une solution facile à gérer, observable et évolutive pour administrer plusieurs clusters Kubernetes. Elle permet de garantir cohérence et sécurité sur une infrastructure multicluster grâce à un déploiement unique, que les clusters soient sur site, en périphérie, dans des environnements cloud privés ou publics, ou dans toute combinaison de ces environnements.
Avantages de l’orchestration de conteneurs
Déploiement et gestion automatisés : à mesure que le nombre de conteneurs augmente, leur gestion manuelle devient de plus en plus difficile et sujette aux erreurs. Les plateformes d’orchestration standardisent et automatisent ces tâches. Comme elles s’appuient sur des API et des processus bien documentés, les opérateurs peuvent surveiller et dépanner plus facilement ces processus.
Contrôle de l’état : les orchestrateurs de conteneurs comme Docker Swarm et Kubernetes permettent de définir à l’avance l’état souhaité des conteneurs. Le rôle de l’orchestrateur est de créer et de maintenir les composants déclarés dans cet état. Ce modèle déclaratif est beaucoup plus facile à mettre en œuvre pour les développeurs que les instructions impératives qu’il faudrait écrire sous forme de scripts pour les déploiements.
Installation et provisionnement : les orchestrateurs de conteneurs peuvent prendre en charge la configuration de nouveaux conteneurs et de nouvelles instances d’application en cas d’augmentation du trafic. Il n’est ainsi plus nécessaire d’installer et de provisionner manuellement chaque nouvelle instance de conteneur à mesure que l’utilisation de l’application augmente. Souvent, l’orchestration peut s’appuyer sur une API standard pour mettre à l’échelle les charges de travail concernées. Une fonctionnalité comme le Horizontal Pod Autoscaler de Kubernetes peut également automatiser ce processus.
Standardisation des mises en production et des retours arrière : de nombreux déploiements d’orchestration de conteneurs standardisent les processus de mise en production et de retour arrière, notamment les tests de différentes versions d’application, les déploiements canary et les déploiements blue/green.
Risques de sécurité liés à l’orchestration de conteneurs
Contrôle des accès et authentification : la plupart des plateformes d’orchestration n’appliquent pas de règles strictes de contrôle des accès et d’authentification. Les conteneurs déployés sont donc très vulnérables aux menaces liées à l’authentification et à l’autorisation, sauf si un contrôle des accès est en place. Vous pouvez toutefois prendre des mesures pour prévenir les incidents d’autorisation et d’authentification, par exemple en contrôlant l’accès à l’API Kubernetes.
Contrôle du réseau et des communications : par défaut, tous les conteneurs d’un cluster peuvent communiquer entre eux. Cela facilite le développement d’applications distribuées, mais permet également aux conteneurs malveillants d’en attaquer d’autres. La mise en œuvre des politiques réseau appropriées contribue à réduire ce risque.
En outre, des outils comme Snyk Infrastructure as Code (Snyk IaC) aident les développeurs à analyser et à corriger les configurations avant leur mise en production, contribuant ainsi à sécuriser l’infrastructure.
Sécurisez votre infrastructure dès la source
Snyk automatise la sécurité et la conformité de l’IaC dans vos workflows, et détecte les ressources dont la configuration a dérivé ou qui sont manquantes.
En résumé : l’orchestration
Les orchestrateurs de conteneurs sont devenus une norme du secteur. Ils permettent d’automatiser le déploiement, l’installation, le provisionnement et la gestion des conteneurs.
Même si l’orchestration de conteneurs présente certains risques de sécurité, des mesures de protection adaptées permettent aux entreprises de tirer parti de la conteneurisation, de gagner du temps, de garantir la cohérence et de mettre automatiquement leurs ressources à l’échelle.
Ressources supplémentaires :
Pour en savoir plus sur les conteneurs, consultez ces ressources :