It Runs on My Cluster - III - Le grand bain
Troisième blog post de la série It Runs on My Cluster

III - 🛁Le grand bain
Un jour d'hiver pluvieux, mon téléphone sonne, c'était un nouveau tournant dans ma carrière professionnelle qui m'appelait. Bon c'est faux, c'était en plein été et c'était un e-mail 📧, mais ça fait tout de suite moins dramatique 😛. Dans l'e-mail que j'ai reçu, il y a maintenant quelques années, était présentée une opportunité de poste dans mon entreprise. Un poste qui m'excitait autant qu'il me stressait : Responsable du projet de mise en place de Kubernetes.
Est-ce que j'ai accepté? Oui sans hésité 👌, c'était une évidence, j'avais toutes les qualités requises pour ce poste, enfin presque. J'étais développeur, je ne connaissais rien à la mise en place de clusters Kubernetes et encore moins à la gestion d'un tel projet dans une entreprise comme la mienne (~1000 salariés). Mais j'étais persuadé que bien entouré et avec beaucoup de travail je pourrais y arriver. Ma prise de poste fut rapide, j'arrivais dans une équipe de deux autres personnes, un ancien DBA débutant sur Kubernetes et un nouvel embauché qui, lui, connaissait bien Kubernetes. Bon OK, dit comme ça, c'est une histoire qui ne commence pas sous les meilleures auspices, et c'est pour ça que j'aime cette histoire 💕. Nous avions aussi un consultant expert qui nous conseillait (oui, on triche un peu). Cette équipe resserrée aux profils multiples est selon moi une des clés 🔑 de succès de ce projet.
Avec cette équipe motivée mais débutante nous avions un grand défit à relever, monter cinq clusters Kubernetes, industrialisés, sécurisés et conformes à l'état de l'art du marché dans un délai de 6 mois 📆. Pour tout vous dire, au bout de 4 mois nous n'avions toujours rien sorti ! Enfin, pas tout à fait. Nous étions montés en compétences et surtout nous avions construit une vision de toutes pièces. Nous savions ce que nous voulions et surtout ce que nous ne voulions pas. Avoir une vision, c'est déjà une première étape, mais il fallait ensuite la partager; la partager avec notre direction et surtout avec toutes les parties prenantes. Des parties prenantes il y en avait quelques unes, les développeurs, les équipes sécurité, les exploitants applicatifs, les équipes systèmes, les équipes réseaux, et j'en passe.
Nous avons donc présenté notre vision 🔭 qui est la suivante : "Le code reste quand les cliques s'envolent" ! On peut aussi la traduire comme suit : "la vérité est dans le code". Vous l'aurez peut être deviné, nous avions décidé qu'aucune action ne serait manuelle, mais surtout que tout serait géré en Infrastructure as Code.
Cette philosophie nous l'avons construite au fur et à mesure, le plus dur la dedans c'est de s'y astreindre ⛓️. Ayant Ansible dans notre entreprise, nous avions commencé la dessus, mais nous avons vite rencontré un problème majeur : l'impossibilité d'avoir rapidement un serveur Ansible à disposition. C'est un problème finalement très commun et simple à résoudre, mais pas dans nos délais. Notre consultant nous a donc aiguillé dans une autre voie : Terraform. Je connaissais à peine de nom et j'en ignorais les capacités. Il nous a vite produit quelques Terraform, nous sommes donc montés rapidement en compétence sur cet outil qui finalement possède un langage assez commun (le Hashicorp Configuration language ou HCL). Après avoir largement modifié les fichiers Terraform initialement fourni, nous avions monté et démonté un grand nombre de clusters de tests.
Terraform nous a donc aidé pour atteindre notre objectif 🎯. C'est finalement au bout de 5 mois et 2 semaines que nous avions provisionné un premier cluster de développement utilisable et industrialisé. On en était fier, est-ce qu'il était parfait et complet? Bien sûr que non, mais c'était déjà une bonne base. Mais si vous avez bien suivi, il ne fallait pas 1 cluster mais 4 de plus. Je peux vous assurer que quand on a affirmé à toutes les parties prenantes que nous avions mis 5 mois pour sortir un cluster mais que nous allons en sortir 4 autres en moins de 2 semaines ils n'étaient pas super confiants (je n'étais pas méga serein non plus 😉). Mais grâce à la puissance de l'Infrastructure as Code, grâce aussi aux produits que nous avions choisi (j'y reviendrai plus tard) alors oui nous l'avons fait, pas en 2 semaines mais en 3. Pour nous c'était un exploit.
Bon à ce stade nous avions quoi? 5 clusters (un par environnements, développement, test, qualif, bench, production). Tous sous la même distributions, une gestion des habilitations en lien avec notre Active Directory et quelques outils pas forcément bien configurés encore (logging, monitoring, policy, security). Mais à part ça, pas d'applications, rien, zéro, nada... Mais ça ne saurait tarder.