Depuis sa sortie de Google, il y a cinq ans, Kubernetes est rapidement devenue l'une des technologies les plus populaires de la décennie. Tout simplement, Kubernetes est aujourd'hui la plate-forme incontestée et incontournable pour créer et exécuter des applications de microservices, ces petits services indépendants, déployables, qui tournent dans des conteneurs et fonctionnent ensemble comme une application plus grande pouvant être portée sur différents types d'infrastructure. Kubernetes est un outil d'orchestration, ce qui signifie dans ce cas qu'il permet aux développeurs de visualiser, coordonner et gérer les charges de travail et les services conteneurisés pour faire tourner des systèmes distribués résilients.
Selon les derniers chiffres de la Cloud Native Computing Foundation (CNCF) publiés en août 2018, sur plus de 5000 entreprises de son panel, 40% des personnes interrogées exploitent déjà Kubernetes en production. Même si ces chiffres montrent que le projet open source progresse, il est important de remarquer que la grande majorité de ces entreprises n'utilisent encore que quelques applications avec Kubernetes quand elles commencent à appréhender la technologie. Mais l’objectif est clair : les applications de microservices basées sur les conteneurs sont l'avenir et Kubernetes est leur plate-forme. C'est pour cette raison que les trois grands fournisseurs de cloud ont tous lancé des versions managées de Kubernetes, et que Cisco, HPE, IBM/Red Hat, Microsoft, VMware/Pivotal, et d'autres ont intégré Kubernetes dans leurs principales offres logicielles.
Kubernetes permet aux entreprises de toutes tailles d’accélérer leurs développements, d’être plus agiles pour déployer, mettre leurs applications à l’échelle et moderniser leurs piles technologiques. Par exemple, Ocado, le supermarché en ligne britannique, qui livre des produits alimentaires frais aux ménages anglais depuis 2000, a construit sa propre plate-forme technologique pour gérer la logistique et les entrepôts. En 2017, Ocado a décidé d’entamer la migration de ses conteneurs Docker vers Kubernetes, réalisant la mise en production de sa première application sur son propre cloud privé au cours de l'été 2017.
Pour Ocado, comme pour d'autres entreprises, ce changement s’est traduit par de gros avantages, notamment une mise sur le marché beaucoup plus rapide et une utilisation plus efficace de ses ressources IT. Mais, parallèlement, les entreprises ayant adopté Kubernetes se rejoignent toutes sur le même inconvénient : la courbe d'apprentissage de la plate-forme est raide, et même si, à long terme, la technologie facilite la vie des développeurs, elle ne la rend pas moins complexe.
De grandes entreprises mondiales exploitent Kubernetes en production. C’est le cas de Bloomberg, News UK et le fournisseur de données de voyage Amadeus. Voici comment elles y sont arrivées et ce qu'elles ont appris au fil du temps.
Bloomberg récolte les fruits d'une adoption anticipée
C’est en 2015 que le spécialiste des données financières s'est tourné vers Kubernetes, alors que l'outil était encore en version alpha. Le passage en production a été réalisé en 2017, après validation de l'intégration continue, du monitoring et de nombreux tests. Chaque jour, Bloomberg traite des centaines de milliards de points de données financières, et 14 000 applications différentes alimentent partout et en permanence son seul produit Terminal. Le département informatique voulait accélérer la mise à disposition de nouvelles applications et de nouveaux services aux utilisateurs et libérer les développeurs des tâches opérationnelles. Après avoir évalué diverses plates-formes d'orchestration, dont Cloud Foundry, Mesosphere Marathon et diverses offres Docker, Bloomberg a opté pour Kubernetes, jugeant que la plateforme « disposait de bonnes bases et qu'il était clair qu’elle essayait de répondre aux bons problèmes. La feuille de route donnait une bonne idée de l'évolution de l'entreprise et cette vision collait à nos objectifs », a expliqué Andrey Rybka, responsable de l'infrastructure IT au sein du bureau du CTO de Bloomberg.
Progressivement, Bloomberg a développé une couche de plate-forme en tant que service qu’elle a installé au-dessus de Kubernetes pour offrir aux développeurs le bon niveau d'abstraction et leur permettre de travailler efficacement avec la technologie. Ce portail Web en self-service consiste essentiellement en une interface en ligne de commande et fait intervenir une API REST qui s'intègre avec un système de contrôle de version basé sur Git, un système de construction d’Intégration continue et un référentiel central d'artefacts. L'un des principaux objectifs de Bloomberg était de mieux utiliser ses hardwares existants en utilisant les capacités de mise à l’échelle automatique de Kubernetes, ainsi que la capacité d'autoprovisionnement et de calcul virtuel, de mise en réseau et de stockage flexible sans avoir à émettre de tickets. « Avec Kubernetes, nous pouvons utiliser notre hardware de manière très efficace, au point d'atteindre des taux d’usage de l'ordre de 90 à 95 % en période de pointe », a déclaré M. Rybka dans le cadre de l’étude de cas réalisée par la Cloud Native Computing Foundation (CNCF). Cette efficacité est en grande partie liée à la capacité de limiter les ressources pour une charge de travail donnée, sans impacter les autres charges de travail.
Comme pour la plupart des entreprises qui adoptent Kubernetes en production, les principaux défis concernent l'utilisation de YAML pour rédiger des manifestes, qui servent à indiquer à Kubernetes comment allouer les ressources. « Ce sont des concepts puissants propres à Kubernetes, mais ils exigent une courbe d'apprentissage abrupte », a reconnu Andrey Rybka. Comme le dit Steven Bower, le responsable de l'infrastructure de données et d'analyse de Bloomberg : « Si Kubernetes facilite un grand nombre de choses, il ne les rend pas nécessairement plus simples ». Bloomberg a donc démarré avec des manifestes de base, limités à un petit sous-ensemble de critères à partir desquels les développeurs pouvaient étendre leur utilisation à mesure qu'ils se familiarisaient avec la technologie. L’entreprise a également lancé de nombreux programmes de formation en interne.
« Nous avons beaucoup d'infrastructures existantes et il n'y a aucune chance que Kubernetes se retrouve miraculeusement sur nos gros ordinateurs centraux », a-t-il ajouté. La plate-forme d'orchestration est essentiellement destinée aux applications Web et aux nouveaux systèmes en réseau. Le premier travail de l'équipe d'infrastructure de données et d'analyse dirigée par Steven Bower a été de mettre en place une nouvelle plate-forme de calcul en data science pour que les ingénieurs en machine learning puissent exécuter des charges de travail complexes en utilisant des outils comme Spark et TensorFlow. En guise de conseil, Andrey Rybka a insisté sur l'importance de l'expertise. « Il est essentiel d’avoir en amont une équipe d'experts pour suivre les évolutions de Kubernetes, pour être en contact avec le CNCF et l'ensemble de l'écosystème et d’acquérir cette connaissance en interne. On ne peut pas se fier uniquement à un fournisseur. Il est indispensable de comprendre toute la complexité de la plateforme et tout ce qu’il y a autour », a-t-il déclaré.