Kubernetes : la solution à tous les problèmes ?

Photo par @chuttersnap sur Unsplash
Architecture Web

Kubernetes, en abrégé K8S, est le célèbre orchestrateur de containers initialement créé par Google en 2014, avant d’être libéré en open source l’année suivante. Depuis, son adoption ne fait que croître, grâce aux nombreux atouts qu’il représente pour les développeurs et les opérateurs. Toutefois, il est parfois perçu comme la solution à tous les problèmes, même ceux qu’on ne rencontre pas.

Freed from my cloud provider

 

Kubernetes répond avant tout à une promesse : la portabilité. Il apporte en effet une couche d’abstraction par rapport à l’hébergement, et évite ainsi la dépendance intégrale à AWS, GCP, ou tout autre “cloud provider”. En déployant une application avec Kubernetes, il est théoriquement facile de migrer d’un cloud à l’autre, et même de répartir les charges de travail sur deux cloud différents au même instant, notamment avec des outils récents comme Anthos.

 

Un des autres avantages de Kubernetes régulièrement mis en avant est la “scalabilité”, c’est-à-dire la capacité à faire évoluer le dimensionnement de l’infrastructure en fonction de la charge subie, notamment dans le but de faire face aux pics d’utilisation. Kubernetes offre toutes les fonctionnalités nécessaires dans cette optique : scalabilité horizontale et auto-scaling, ce qui permet l’ajout de nouvelles ressources sans interruption du service, répartiteur de charge, gestion et remplacement des ressources défectueuses (“health-check” et “auto-healing”).

 

Enfin, les mises en production sont simplifiées et moins risquées, grâce aux différents types de déploiements disponibles : remplacement progressif de toutes les instances (“rolling-update”), création de deux environnements disponibles en parallèle permettant une bascule immédiate et éventuellement une annulation en cas de problème (“blue-green deployment”), ou bien encore déploiement très progressif à une faible population (“canary”).



Kubernetes ne résoudra pas vos problèmes (tout seul)



Du fait de ses nombreux atouts, la tentation est parfois grande d’assimiler Kubernetes à une baguette magique qui résoudrait instantanément l’intégralité des problèmes d’une quelconque organisation. Pourtant, utiliser Kubernetes ne fait pas gagner sur tous les tableaux.

 

Le plus grand risque est l’augmentation drastique de la complexité du système déployé. Avant de songer à déployer une application, il faut au préalable maîtriser un certain nombre de concepts parfois assez abstraits : Pod, Node, Service, Selector, Endpoint et bien d’autres. La montée en compétences pour maîtriser et implémenter ces concepts de base ne doit pas être sous-estimée.

 

Par ailleurs, pour bénéficier des nombreux avantages cités précédemment, il est nécessaire que l’application s’y prête. Un pré-requis est bien évidemment la containerisation des charges de travail : sans maîtriser Docker ou un autre système de container, inutile d’imaginer utiliser Kubernetes. Également, pour profiter pleinement de la scalabilité offerte, il vaut mieux dire adieu aux bases de données relationnelles, MySQL en tête, car non scalable horizontalement par définition.

 

K8s ou pas K8s ?

 

Tout cela étant dit, faut-il ou non franchir le pas ? La réponse est d’après moi assez simple : dans le cas d’une application “cloud-native”, conçue avant tout pour le cloud, Kubernetes est l’incontournable outil qui simplifiera la vie à qui prend la peine de se plonger sérieusement dans ses rouages. Des points bonus sont accordées aux applications construites avec une approche microservices. De nombreuax cloud providers dispose d’une offre Kubernetes “managée” comme Kubernetes Engine sur Google Cloud, mais aussi chez nos compatriotes OVH. Ces solutions permettent de s’abstraire totalement de la gestion du master, et permet d’éviter de manipuler le dashboard Kubernetes, qui a donné des maux de têtes à beaucoup.



Dans le cas d’une application monolithique, par exemple reposant sur un framework Laravel, Django, WordPress, ou autre, mon conseil est d’éviter. Sur le sujet, Kelsey Hightower, à qui on ne peut pas reprocher un manque de connaissances sur le sujet, prédisait avec humour il y trois ans déjà, qu’en 2020 les monolithes seraient de retour en grâce après que le public découvre les désavantages des monolithes distribués.



Kelsey Hightower tweet



Le mot de la fin toutefois sera pour Vincent Connare, qui disait de sa célébrissime création, le Comic Sans MS : “Si vous aimez cette police, vous ne connaissez pas beaucoup la typographie. Et si vous la détestez, alors vous ne connaissez pas non plus grand chose à la typographie et vous devriez vous trouver une autre passion.”

 

Kubernetes, c’est quelque part un peu similaire : si vous pensez que c’est la solution à tous vos problèmes, vous êtes foutus. Et si vous détestez Kubernetes, vous passez à côté de quelque chose de grand.