Kubernetes permet l’orchestration de l’exécution des conteneurs sur les clusters bien souvent constitués d’instances IaaS. Il est donc logique que Kubernetes soit exploité dans le Cloud. Opter pour une offre managée dépend du besoin et de la maturité de l’entreprise.Docker a fait le boulot. Bon nombre de développeurs ont adopté les conteneurs, si bien que désormais tous les fournisseurs de Cloud se battent pour les attirer. Enquête sur le nouveau phénomène cloud du moment.
Ce fut l’une des grandes annonces lors de l’OVH Summit, il y a quelques semaines. Le champion français du Cloud a annoncé le lancement de la bêta privée de « Managed Kubernetes », son offre de support des architectures de micro services. La promesse est de porter une architecture de conteneurs sans que l’entreprise n’ait à se soucier du provisioning des machines virtuelles sousjacentes, ajoutant ainsi un niveau d’abstraction supplémentaire aux infrastructures applicatives.
Un marché en croissance de plus de 34 % par an
Tous les acteurs du Cloud y vont. Google à qui l’on doit le développement de Kubernetes pour les besoins internes de ses services, est bien évidemment idéalement positionné sur ce marché avec GKE (Google Kubernetes Engine). Il a depuis été rejoint par Amazon Web Services qui propose EKS (Amazon Elastic pour Kubernetes), tandis que Microsoft pousse de son côté AKS (Azure Kubernetes Service). Même Oracle et Alibaba ont maintenant un service « K » à leurs catalogues respectifs, avec OKE pour l’un et CSK pour le second. Tous les fournisseurs veulent leur part d’un gâteau en train de grossir à vue d’œil. MarketsandMarkets estime que ce marché du Container as a Service (CaaS) ne représentait encore que 789 millions de dollars en 2016. Il sera de plus de 4 milliards en 2022.
Les entreprises qui déployaient Docker et la plate-forme d’orchestration Kubernetes en on-premise ou sur des instances EC2 s’intéressent de plus en plus à ces offres managées qui simplifient encore un peu plus l’administration de ces infrastructures et vont jusqu’à gommer la notion de serveur.
Du Cloud managé à géométrie variable
Marier conteneurs et Cloud est loin d’être une idée nouvelle et on sait même que Docker travaille pour gérer le multi-Cloud au niveau de sa gestion de conteneurs. Bon nombre d’entreprises ont choisi de déployer Docker et Kubernetes sur mes instances Cloud. Avec une offre managée par un opérateur, c’est une partie des tâches d’administration qui sont assumées par cette plate-forme. Cette délégation peut aller assez loin car s’il est possible de gérer les conteneurs et les clusters et serveurs d’un Kubernetes « as a Service », mais aussi via les très récentes offres « serverless » telles que AWS Faregate et Azure Service Fabric Mesh qui vont jusqu’à effacer la notion même de serveur.
Romain Vrignaud, spécialiste DevOps chez Google argumentait en faveur de Kubernetes en mode managé lors de la dernière édition du Google Cloud Summit : « Utiliser un service managé vous permet de vous concentrer sur ce qui est important pour votre organisation, sur l’application. GKE représente les dix ans d’expérience qu’a Google à gérer des flottes de conteneurs. GKE présente à la fois une implémentation de Kubernetes facile à utiliser, sécurisée et parfaitement intégrée à GCP. GKE permet de manière fiable et efficace d’opérer des applications conteneurisées sur GCP. » Fort de deux années d’exploitation commerciale, Google estime GKE comme une plate-forme stable qui profite de sa forte intégration avec GCP. « L’intérêt d’une offre managée, c’est la simplicité », selon Sébastien Lavayssière, Solution Architect Cloud chez WeScale. « Sur les plates-formes les plus matures comme Google GKE, on peut provisionner un cluster entier de machines pour faire tourner un conteneur en un appel d’API ou une seule ligne de commande. C’est l’idéal lorsqu’il s’agit de monter rapidement un environnement pour développer, tester, mais aussi pour la production. »
Plusieurs entreprises ont témoigné de leur utilisation de Kubernetes, Pierre Gilles Mialon, Cloud Architect à Radio France, a ainsi expliqué : « Le mouvement vers les microservices, nous l’avions déjà fait. Nous faisions de la veille sur Kubernetes afin d’y aller lorsque ce serait “ sec ”. Nous y sommes allés à cela fonctionne particulièrement bien. L’essentiel de nos microservices étant stateless, Kubernetes c’est juste super ! » Autre client à témoigner, Airbus Intelligence, filiale d’Airbus Defence and Space, venue présenter son choix de GKE afin de porter son tout nouveau service d’imagerie satellite en ligne OneAtlas. Celui-ci met en œuvre la Google Cloud Platform (GCP), mais aussi GKE afin d’orchestrer les conteneurs qui réalisent l’analyse des pétaoctets d’images satellites mises à disposition par le service. Chez le rival, Amazon Web Services, même constat quant à l’adoption de la solution Kubernetes managée : le numéro 1 du Cloud affiche de nombreuses références clients pour son offre EKS, parmi lesquelles Snapchat, Verizon, Teradata ou Zendesk tandis que Microsoft annonce Siemens, Equinor, Webjet comme clients de son offre AKS. Clairement, les offres Kubernetes managés ne séduisent pas seulement des entreprises du digital mais des profils d’entreprises très différents.
Les fournisseurs de Cloud poussent leur écosystème de solutions pour compléter le service de base CaaS, ce qui constitue un risque de vendor lock-in sur une plate-forme en dépit de la promesse de portabilité des conteneurs Docker.
Plus de souplesse, mais aussi quelques contraintes
Pour autant, toutes les entreprises qui veulent déployer des conteneurs dans le Cloud iront-elles mécaniquement aller vers ces offres managées plutôt que de déployer ellesmêmes Kubernetes sur des machines virtuelles ? « Il n’y a pas de réponse unique à aller vers le “ managé ” pour faire du Kubernetes. Cela dépend essentiellement du cas d’usage », estime Sébastien Lavayssière. « Chez les uns, les services managés seront bien adaptés, chez d’autres le Cloud public ne peut répondre à leur besoin. » Bien évidemment, Google comme Amazon proposent des Container Registry privées GCR chez Google et ECR chez Amazon Web Services. Ces services sont à part, ce qui permet à l’entreprise de créer autant de clusters qu’elle le souhaite en utilisant le même catalogue de conteneurs.
Chaque solution a ses petites spécificités et tout est susceptible de changer sans préavis. « Pour donner un exemple, sur AKS toutes les machines doivent être identiques », explique Grégory Guillou, DevOps chez Resetlogs. « Sur EKS, il faut monter la plate-forme brique par brique, donc j’automatise au maximum pour ne pas devoir le refaire deux fois. Or quand on relance trois semaines plus tard, les automates ne fonctionnent plus parce qu’ils ont changé le bootstrap des VM complètement… » De même, le DevOps souligne le manque de maturité de certains fournisseurs cloud : « Il y a de multiples limites que le DevOps doit découvrir de luimême, par exemple le choix de la configuration des load balancers. » En outre, chaque service cloud a ses spécificités, ses propres annotations. Là où il faut développer une application dans Active Directory sur Azure pour gérer les connexions, AWS s’appuie sur le connecteur développé par Heptio. « Kubernetes en lui-même ne sert qu’à très peu de choses et a besoin d’une myriade d’autres composants autour pour démontrer sa valeur », ajoute Sébastien Lavayssière. « Kubernetes doit s’appuyer sur des services d’Iaas, de stockage, de résilience du Cloud. C’est sur cette intégration de services complémentaires que les offres des acteurs du Cloud se différencient véritablement et que l’intégration va jouer le plus. » Plus que le seul support de Kubernetes, ce sont toutes ces spécificités qui différencient les offres Caas et qui font la valeur d’une plate-forme vis-à-vis de ces concurrentes, son efficacité au quotidien mais aussi qui introduisent un risque de vendor lock-in dont il faut tenir compte. ❍
« Kubernetes managé, c’est génial pour un DevOps doué qui est d ogmatique et veut livrer plusieurs fois par jour »
Grégory Guillou, DevOps chez Resetlogs
« Je connais très bien Kubernetes pour l’avoir mis en œuvre, on-premise, sur AWS avec Kops mais aussi avec les offres managées. En substance, la promesse de ces offres est belle : c’est génial pour un DevOps doué, qui est dogmatique et veut livrer plusieurs fois par jour. Avec un pipeline automatisé et une QA douée, j’ai fait jusqu’à 15 mises en production par jour à moi seul ! Rien que je connaisse ne peut faire aussi bien et aussi vite et avec autant de fiabilité. Il y a néanmoins quelques inconvénients à ces offres : cet écosystème évolue très rapidement et il est compliqué de suivre : entre toutes les solutions de service mesh, les opérateurs pour Kafka, Spark, les intégrations pour la supervision pour le CI/CD (intégration continue/continuous delivery), pour le stockage, le réseau, c’est complexe à suivre et dur à déboguer. »
« Lorsque l’on a compris comment fonctionne le Cloud Google, on sait comment utiliser GKE »
Sébastien Lavayssière, Solution Architect Cloud chez WeScale
« Il y a encore de fortes disparités en termes de maturité sur les offres telles que GKE ou EKS qui est une offre bien plus jeune. Google a parfaitement intégré Kubernetes à sa plate-forme cloud et si EKS s’améliore de semaine en semaine, la solution n’a pas encore toutes les fonctionnalités que peut présenter un Kubernetes installé avec un autre outil. On peut faire bien plus de choses en utilisant Kops pour installer Kubernetes sur AWS plutôt qu’en utilisant le service managé EKS. AWS travaille très vite pour améliorer sa solution comme ça a été le cas sur le volet authentification et, à cet égard, je pourrais revoir ma position dans quelques mois. » « GKE est parfaitement intégré au Cloud Google, cela signifie que lorsqu’on a compris comment fonctionne le Cloud Google, on sait comment utiliser GKE. Il suffit d’une seule ligne de commande, un seul appel d’API pour créer un cluster Kubernetes dans le Cloud Google et disposer d’un service scalable, multizone, monitoré et supervisé et dans lequel il ne reste plus qu’à créer nos objets Kubernetes. C’est extrêmement pratique là où il faudrait de multiples objets AWS pour arriver au même résultat. »