Comme j’ai un peu de temps ce soir, il est temps pour moi de considérer un petit feedback sur mes aventures autour de la mouture 2020 de l’architecture de mes services notamment ce blog personnel désormais sur https://alban.montaigu.io.
Le moins qu’on puisse dire c’est que l’aventure commence à être longue. Depuis déjà longtemps je sais que mon ancienne infra vivihome.net tournant sur rancher 1.x et de simple nodes scaleway avec un docker engine antédiluvien mérite d’être refaite. Le moins que l’on puisse dire d’ailleurs c’est que je manie l’euphémisme avec bonheur en disant cela comme ça. En vrai même wordpress commençait à me dire qu’il est temps de mettre à jour l’infra :).
Le plan de départ était donc de refaire quelque chose dans l’air du temps avec en plus un nouveau domaine. Comme j’étais déjà orienté docker sur l’ancienne infrastructure, la suite logique en cette époque de mai 2020 était bien entendu kubernetes.
Kubernetes, c’est une infra très complexe et un peu pénible à déployer / gérer. Donc scaleway (mon hébergeur), comme de nombreux autres, l’a bien compris et a décidé de proposer quelque chose à la mode : un service de kubernetes managé baptisé « kapsule ». La promesse : toute la puissance de kubernetes sans la complexité de sa gestion.
Je reviendrai peut être la dessus plus en détail plus tard (car ce n’est pas mon point de ce jour) mais en résumé kapsule, c’est sympa et ca marche pas mal. On a un cluster kubernetes rapidement sans se compliquer la vie. De même les indispensables (pour moi) sont aussi là et pas trop mal intégrés : le stockage bloc et le loadbalancer.
Maintenant j’en viens à l’essentiel. Alors cette expérience kubernetes ça donne quoi pour le néophyte que je suis ? Hey bien, heu, le moins qu’on puisse dire c’est que c’est mitigé.
Ce qui est sûr de mon point de vue très subjectif, c’est que la courbe d’apprentissage est assez raide et longue. On ne va pas se le cacher, il y a vraiment de nombreuses choses à apprendre et dans tous les domaines : réseau, stockage, traitement, termes et pratiques kubernetes… Pour une application qui fonctionne on doit maitriser une quantité énorme de paramètres…
Et bien que depuis quelques temps, la complexité commence à s’arranger (en vrai se dissimuler) grâce a helm et ses nombreux « packages » préparés à l’avance dans des catalogues, une application en production et la maintenir reste (de mon point de vue) un vrai challenge surtout pour le néophyte.
En vrai les fonctions et les possibilités sont infinies. Il faut l’admettre. On peut faire quasi tout ce que l’on veut et de manière automatisée. Ceci étant dit, lorsqu’on raisonne avec des besoins simples comme « déployer un wordpress » le chemin pour y arriver est loin d’être simple… Du moins quand on aime s ce que l’on fait et maitriser un minimum.
Des exemples en vrac passés sous silence sur de trop nombreux sites :
- l’ip réelle du client de votre site sur votre wordpress (externalTrafficPolicy Cluster vs Local, L7 vs L3 balancer, la différences des noms d’options selon votre version d’ingress nginx, les incompatibilités de chacune des solutions avec votre install wordpress et les choix cornéliens que vous devriez faire)
- La difficulté de gérer votre stockage bloc et faire en sorte qu’il soit conservé correctement lors de reboot / d’upgrade
- La difficulté de corriger vos déploiements / pods lorsque tout se met a redémarrer / crasher dans tous les sens
- L’impact parfois irrémédiable qu’un simple paramètre helm ou kubernetes manquant ou erroné peut
- Le nombre de fois incalculable ou vous conclurez que la seule solution de corriger votre souci est de tout effacer et tout recommencer.
- Le moment ou vous pensez que tout est en place, que vous voyez un upgrade à faire sur votre déploiement helm et que tout saute en essayant de l’appliquer
- Les choses aussi bêtes que « comment redémarrer mon pod ? » qui trouve une réponse improbable comme « ca n’existe pas, il faut scale down / up » ou au mieux redémarrer votre déploiement.
- La grande problématique des stack helm qui vous déploient par défaut des loadblancers à 10 euros le mois au lieu d’en mettre un seul et de compléter ses règles.
HOLD ON !
A cette heure du jour ou j’écris ces lignes, somme toute assez tardive, je me dis que je pourrais continuer encore longtemps la liste des problématiques rencontrées ayant mené à au moins 2 semaines de galères et de réinstallations. Néanmoins l’essentiel n’est pas là.
Ma pensée profonde est en fait plus métaphysique. Kubernetes et tout le reste. C’est puissant c’est indéniable. Néanmoins à ce jour je trouve que c’est surtout une extraordinaire usine à gaz. Il y a de quoi se planter mauvaisement à tous les endroits et ils sont nombreux…
Alors en allant toujours plus loin dans le domaine métaphysique, cela m’amène a me poser la question suivante : ai-je ce sentiment parce que je suis trop vieux ? Ai-je atteint la date de péremption ? Pourquoi est-ce que je ne peux m’empêcher de me dire qu’avec un serveur simple sans kubernetes j’aurai installé et déployé mon wordpress seulement en quelques heures et de manière bien mieux maitrisée ? Ou alors est-ce que dans le fond Kubernetes c’est beau mais surtout une usine à gaz…
Affaire à méditer pour moi, la suite dans le prochain épisode :).