<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>cloud on Zwindler's Reflection</title><link>https://blog.zwindler.fr/categories/cloud/</link><description>Recent content in cloud on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Sun, 18 Jan 2026 12:00:00 +0200</lastBuildDate><atom:link href="https://blog.zwindler.fr/categories/cloud/index.xml" rel="self" type="application/rss+xml"/><item><title>REX : Mon parcours vers le titre de Kubestronaut</title><link>https://blog.zwindler.fr/2026/01/18/rex-kubestronaut/</link><pubDate>Sun, 18 Jan 2026 12:00:00 +0200</pubDate><guid>https://blog.zwindler.fr/2026/01/18/rex-kubestronaut/</guid><description>&lt;img src="https://blog.zwindler.fr/2026/01/kubestronaut.webp" alt="Featured image of post REX : Mon parcours vers le titre de Kubestronaut" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;J&amp;rsquo;avais un peu annoncé la couleur lors de mon précédent post &lt;a class="link" href="https://blog.zwindler.fr/2025/11/04/a-quoi-ca-sert-des-certifs-en-2025/" &gt;&amp;ldquo;À quoi ça sert, des certifs en 2025 ?&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai passé, avec succès, les 5 certifications &amp;ldquo;officielles&amp;rdquo; de la CNCF / de Kubernetes, ce qui devrait me donner (pour l&amp;rsquo;instant ça n&amp;rsquo;est pas officiel, a priori ce n&amp;rsquo;est pas immédiat) le titre tant convoité (ou non ?) de &lt;strong&gt;Kubestronaut&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Et comme c&amp;rsquo;est un side project sur le long cours (j&amp;rsquo;ai commencé en 2025 le parcours complet), je vous propose un petit REX de comment je l&amp;rsquo;ai vécu.&lt;/p&gt;
&lt;p&gt;Note : pas mal de gens ont déjà raconté leur expérience, et il y a déjà de supers articles de la communauté Cloud Native FR. Je vais essayer de ne pas trop faire de redite et je vous ai mis plein de liens en fin d&amp;rsquo;article vers d&amp;rsquo;autres ressources similaires en français.&lt;/p&gt;
&lt;h2 id="cest-quoi-ces-certifs-déjà-"&gt;C&amp;rsquo;est quoi ces certifs déjà ??
&lt;/h2&gt;&lt;p&gt;Les 5 certifications officielles Kubernetes de la CNCF sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class="link" href="https://www.cncf.io/training/certification/kcna/" target="_blank" rel="noopener"
&gt;KCNA (Kubernetes and Cloud Native Associate)&lt;/a&gt;&lt;/strong&gt; : certification d&amp;rsquo;entrée de gamme qui valide les concepts de base de Kubernetes et du cloud native&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class="link" href="https://www.cncf.io/training/certification/kcsa/" target="_blank" rel="noopener"
&gt;KCSA (Kubernetes and Cloud Native Security Associate)&lt;/a&gt;&lt;/strong&gt; : certification d&amp;rsquo;entrée de gamme focalisée sur les concepts de sécurité dans Kubernetes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class="link" href="https://www.cncf.io/training/certification/cka/" target="_blank" rel="noopener"
&gt;CKA (Certified Kubernetes Administrator)&lt;/a&gt;&lt;/strong&gt; : certification pratique qui valide les compétences d&amp;rsquo;administration d&amp;rsquo;un cluster Kubernetes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class="link" href="https://www.cncf.io/training/certification/ckad/" target="_blank" rel="noopener"
&gt;CKAD (Certified Kubernetes Application Developer)&lt;/a&gt;&lt;/strong&gt; : certification pratique qui valide les compétences de développement d&amp;rsquo;applications sur Kubernetes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class="link" href="https://www.cncf.io/training/certification/cks/" target="_blank" rel="noopener"
&gt;CKS (Certified Kubernetes Security Specialist)&lt;/a&gt;&lt;/strong&gt; : certification pratique avancée qui valide les compétences en sécurisation d&amp;rsquo;un cluster Kubernetes (prérequis : CKA)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pourquoi-kubestronaut-"&gt;Pourquoi Kubestronaut ??
&lt;/h2&gt;&lt;p&gt;D&amp;rsquo;abord, pour ceux qui ne me connaissent pas, je suis expert de Kubernetes depuis 2017/2018, donc j&amp;rsquo;aurais pu avoir ces certifs, ou au minimum un sous-ensemble de ces 5 certifs depuis longtemps. Mais ayant toujours travaillé chez des clients finaux (donc pas de consulting, que ce soit en freelance ou en ESN, où avoir un papier peut apporter un peu de légitimité complémentaire pour décrocher un client), je n&amp;rsquo;en ai jamais ressenti le besoin.&lt;/p&gt;
&lt;p&gt;Je ne vais pas mentir et dire que je n&amp;rsquo;avais pas du tout &lt;em&gt;ENVIE&lt;/em&gt; de les avoir. C&amp;rsquo;est toujours agréable de se dire qu&amp;rsquo;on a la CNCF qui a validé officiellement qu&amp;rsquo;on sait de quoi on parle (même si en vrai, les compétences validées sont discutables. On en reparlera). Mais le tarif prohibitif (en tout cas si j&amp;rsquo;avais dû les payer de ma poche) m&amp;rsquo;avait toujours rebuté.&lt;/p&gt;
&lt;h2 id="la-moula"&gt;La moula
&lt;/h2&gt;&lt;p&gt;Car OUI, ça coûte bonbon (pour rester poli).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comptez 445$ l&amp;rsquo;unité pour les CKA, CKAD, CKS&lt;/li&gt;
&lt;li&gt;250$ l&amp;rsquo;unité pour les KCNA / KCSA&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;How will the CKA benefit me?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Credential Recognition&lt;/li&gt;
&lt;li&gt;Career Advancement&lt;/li&gt;
&lt;li&gt;Networking Opportunities&lt;/li&gt;
&lt;li&gt;Cross-industry Career Opportunities&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Source : &lt;a class="link" href="https://training.linuxfoundation.org" target="_blank" rel="noopener"
&gt;https://training.linuxfoundation.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est bien gentil mais &lt;strong&gt;ça fait quand même plus de 1500€&lt;/strong&gt;. Heureusement, on peut compter sur les promos très régulièrement et des prix de gros via des bundles pour diminuer la douloureuse.&lt;/p&gt;
&lt;p&gt;Le but du jeu est de trouver la meilleure combinaison Bundle + promo pour économiser le plus, et a priori à présent, le mieux que j&amp;rsquo;ai trouvé est d&amp;rsquo;acheter pendant la &amp;ldquo;Cyber Monday week&amp;rdquo; (-50/-60% selon les bundles), et d&amp;rsquo;acheter séparément le bundle KCNA+KCSA à -60% et CKA+CKAD+CKS également à -60% (le bundle avec les 5 est moins intéressant car plafonné à -50%)&lt;/p&gt;
&lt;p&gt;Ce qui fait au total un peu plus de 600€ (tout de même).&lt;/p&gt;
&lt;p&gt;À partir de là, vous avez 1 an pour passer les 5 certifs (mais vous pouvez le faire en 2 fois. C&amp;rsquo;est ce que j&amp;rsquo;ai fait en prenant les CKx fin 2024, les KCxA en 2025).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; mon employeur m&amp;rsquo;a payé les CKx, dans l&amp;rsquo;idée de motiver des juniors à passer sérieusement ces certifs. Sans cela, je ne l&amp;rsquo;aurais probablement jamais fait.&lt;/p&gt;
&lt;h2 id="déroulé-et-difficulté"&gt;Déroulé et difficulté
&lt;/h2&gt;&lt;p&gt;Je ne vais pas présenter les examens dans l&amp;rsquo;ordre où je les ai passés, mais plutôt dans l&amp;rsquo;ordre de difficulté dans lequel on les présente d&amp;rsquo;habitude. Car, a posteriori, je trouve que c&amp;rsquo;est relativement représentatif, de mon point de vue, de leur difficulté réelle.&lt;/p&gt;
&lt;p&gt;KCNA : un QCM de culture générale sur le Cloud Native. Vraiment, payer 250$ pour ça, c&amp;rsquo;est du vol. C&amp;rsquo;est vraiment tout ce que je déteste dans les certifs (dont je parlais dans l&amp;rsquo;article sur les certifications techniques). Sur les 60 questions, il n&amp;rsquo;y a toujours qu&amp;rsquo;une bonne réponse et on peut &amp;ldquo;deviner&amp;rdquo; les 3/4 juste en éliminant les mauvaises réponses, souvent ridicules. Pour moi, la KCNA n&amp;rsquo;a aucune valeur technique. J&amp;rsquo;ai fait 97%, ce qui correspond à 2 erreurs sur 60, probablement des questions ambiguës ou des mauvaises réponses où j&amp;rsquo;ai cherché &amp;ldquo;trop compliqué&amp;rdquo; (la réponse la plus simple est la bonne, il faut ignorer les edges cases que seuls les experts peuvent connaître). Je l&amp;rsquo;ai terminé en 30 minutes au lieu des 90.&lt;/p&gt;
&lt;p&gt;KCSA : un QCM un poil plus corsé. J&amp;rsquo;y suis allé là aussi sans préparation, et j&amp;rsquo;ai fait un score honnête (93%, 4 fautes). Certaines questions m&amp;rsquo;ont donné plus de fil à retordre. Il y a une ou deux questions sur le &amp;ldquo;&lt;a class="link" href="https://csrc.nist.gov/pubs/sp/800/161/r1/upd1/final" target="_blank" rel="noopener"
&gt;NIST SP 800-161 Rev. 1&lt;/a&gt;&amp;rdquo; que je ne connaissais pas, et 4-5 questions sur lesquelles je voyais 2 réponses &amp;ldquo;moyennes&amp;rdquo; plausibles, sans pour autant parvenir à les départager parce qu&amp;rsquo;à mon avis pas 100% exactes. Ça peut être un problème de compréhension de l&amp;rsquo;anglais de ma part, ou juste que je ne suis pas aussi bon que je le pense. 93, ça reste très honnête, sachant qu&amp;rsquo;on a droit à 15 fautes. Je l&amp;rsquo;ai terminé en 50 minutes car j&amp;rsquo;ai passé beaucoup de temps à réfléchir sur ces fameuses questions que je trouvais ambiguës.&lt;/p&gt;
&lt;p&gt;CKAD : une des deux certifications historiques. Être Certified Kubernetes Application Developer fait de vous quelqu&amp;rsquo;un capable de &amp;ldquo;concevoir, construire et déployer des applications cloud native&amp;rdquo;. Ce qu&amp;rsquo;il y a de bien avec les CKx, c&amp;rsquo;est que ce sont des examens pratiques. On a une liste de ~17 tâches simples à réaliser en 2h sur des machines virtuelles. Si vous y arrivez, ça veut dire que vous êtes capables techniquement de réaliser de vraies tâches sur de vrais clusters, pas juste que vous avez bachoté. L&amp;rsquo;inconvénient, c&amp;rsquo;est que les tâches à réaliser sont extrêmement lointaines de la réalité des tâches qu&amp;rsquo;on doit faire : créer des manifestes YAML de deployments et de services Kubernetes à la main. Personne ne fait ça (enfin, j&amp;rsquo;espère ?). En termes de difficulté, j&amp;rsquo;ai peut-être eu de la chance, mais je l&amp;rsquo;ai trouvée triviale. Je l&amp;rsquo;ai terminée en 1h au lieu de 2 et j&amp;rsquo;ai eu quasiment 100%.&lt;/p&gt;
&lt;p&gt;CKA : l&amp;rsquo;autre certification historique. Là aussi, 17 exercices pour manipuler des applications dans Kubernetes et aussi jouer un peu avec les composants du control plane (notamment l&amp;rsquo;api-server et etcd). Petit accident de parcours ici, j&amp;rsquo;ai bien réussi les simulateurs (on en reparlera) et pour autant, je n&amp;rsquo;ai pas réussi entièrement à finir au bout des 2h et j&amp;rsquo;ai eu un score assez médiocre (71%). Au-delà des connaissances précédentes nécessaires pour la CKAD, il faut avoir une très bonne connaissance des clusters créés avec &lt;code&gt;kubeadm&lt;/code&gt; puisque vous allez manipuler et modifier 17 clusters créés de cette manière.&lt;/p&gt;
&lt;p&gt;CKS : la dernière certification pratique (en dehors des QCM), mais avec un focus sur la sécurité par rapport à la CKA / CKAD. Celle-ci a réellement de la valeur selon moi. Elle est à la fois complexe, avec un panel assez large d&amp;rsquo;aspects à maîtriser, et surtout &lt;strong&gt;utile&lt;/strong&gt;, car elle couvre des sujets réalistes en termes de sécurité, quel que soit le cluster. Contrairement à la CKA / CKAD, on repart vraiment avec des compétences qu&amp;rsquo;on imagine utiliser en production dans un scénario plus réaliste que les clusters kubeadm fournis.&lt;/p&gt;
&lt;h2 id="aparté--psi-proctored-exam"&gt;Aparté : PSI proctored exam
&lt;/h2&gt;&lt;p&gt;Vraiment un des trucs que je déteste le plus avec ces certifications. Contrairement à d&amp;rsquo;autres certifications tech qui peuvent être passées soit à la maison sous surveillance, soit dans une salle gérée par un organisme spécialisé, les certifs CNCF ne peuvent être passées QUE à distance via &amp;ldquo;proctored exam&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;N&amp;rsquo;ayons pas peur des mots, &lt;strong&gt;l&amp;rsquo;expérience est désastreuse&lt;/strong&gt;. Je ne compte pas les retours que j&amp;rsquo;ai pu avoir de gens qui ont perdu un &amp;ldquo;try&amp;rdquo; à cause de bugs du logiciel ou autre problème technique. À titre perso, j&amp;rsquo;ai dû tester plusieurs machines pour en trouver une qui fonctionnait avec leur bouse de &amp;ldquo;navigateur sécurisé&amp;rdquo;. Et encore, parce que je m&amp;rsquo;y suis pris suffisamment à l&amp;rsquo;avance et que j&amp;rsquo;ai fait le test.&lt;/p&gt;
&lt;p&gt;Ça, plus le fait d&amp;rsquo;avoir à sa disposition une pièce fermée, sans papiers/affiches, sans caméras, sans écrans, dont il va falloir faire le tour en balayant de bas en haut à 360° pour prouver à l&amp;rsquo;examinateur que &amp;ldquo;non, c&amp;rsquo;est bon on ne va pas tricher&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Il serait tellement plus simple d&amp;rsquo;avoir des centres d&amp;rsquo;examen partenaires, mais non, la LF maintient que &amp;ldquo;c&amp;rsquo;est pour notre bien&amp;rdquo;. Moi, j&amp;rsquo;ai dû passer les 5 examens dans la chambre de mon fils, sur une planche et 2 tréteaux, car c&amp;rsquo;était la seule pièce qui convenait. J&amp;rsquo;ai lu des gens qui le font dans leurs WC&amp;hellip; Quel enfer.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2026/01/bureau.avif"
loading="lazy"
alt="Bureau de fortune pour passer les examens Kubernetes"
&gt;&lt;/p&gt;
&lt;h2 id="aparté--killersh"&gt;Aparté : killer.sh
&lt;/h2&gt;&lt;p&gt;C&amp;rsquo;est un peu caché, mais tous les examens CKA/CKAD/CKS donnent l&amp;rsquo;accès à 2 examens blancs sur le site killer.sh. Vraiment, je ne peux QUE vous conseiller de les faire, car ils sont très utiles.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;une part, ils sont selon les cas similaires en termes de difficulté, voire beaucoup plus durs. Si vous avez une bonne note sur killer.sh, il y a de grandes chances que vous ayez votre CKA/AD/S.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2026/01/killer.sh.avif"
loading="lazy"
alt="Interface du simulateur killer.sh pour les examens Kubernetes"
&gt;&lt;/p&gt;
&lt;p&gt;Et comme il y a 2 runs, vous pouvez commencer par tester un run, voir ce que vous avez fait faux (vous avez la plateforme de chaque run pendant 36h, ça laisse le temps de tryhard pour obtenir 100%) et savoir quoi réviser par la suite. Une fois que vous êtes confiants, vous pouvez faire le 2ème run et valider que vous pouvez lancer le vrai examen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2026/01/cka_score-BnSQPwXV.avif"
loading="lazy"
alt="Score obtenu à l’examen CKA"
&gt;&lt;/p&gt;
&lt;p&gt;Si jamais vous n&amp;rsquo;avez pas assez de &amp;ldquo;runs&amp;rdquo;, vous pouvez toujours chercher d&amp;rsquo;autres simulateurs, comme sailor-sh/CK-X. Pour ce qui est des KCNA/KCSA, il y a aussi pas mal de quiz qui ont été générés à la volée à l&amp;rsquo;aide de LLM mais ils sont rarement qualitatifs et les questions sont très éloignées, ainsi que des sites &amp;ldquo;pirates&amp;rdquo; avec des questions authentiques. À vous de voir ce que vous en pensez.&lt;/p&gt;
&lt;h2 id="ce-que-je-savais-déjà-vs-ce-jai-appris"&gt;Ce que je savais déjà vs ce j&amp;rsquo;ai appris
&lt;/h2&gt;&lt;p&gt;KCNA / KCSA : Je n&amp;rsquo;ai rien appris. Ce sont des QCMs basiques, qui n&amp;rsquo;ont aucun intérêt et ne démontrent aucune compétence sur un CV.&lt;/p&gt;
&lt;p&gt;CKAD : Je n&amp;rsquo;ai pas appris grand-chose, à part quelques sous-commandes &lt;code&gt;kubectl&lt;/code&gt; permettant de gagner du temps, comme &lt;code&gt;kubectl expose&lt;/code&gt;, ou quelques détails sur la façon dont sont gérés les cycles de vie des API de Kubernetes. Comme une grosse partie de l&amp;rsquo;examen consiste à générer des manifestes YAML pour les différentes API de Kubernetes, il est important de connaître toutes les sous-commandes de &lt;code&gt;kubectl create&lt;/code&gt; et aussi savoir &lt;strong&gt;quand c&amp;rsquo;est plus rapide&lt;/strong&gt; d&amp;rsquo;aller faire une recherche d&amp;rsquo;un manifeste prêt à l&amp;rsquo;emploi sur la doc officielle, et le copier/coller.&lt;/p&gt;
&lt;p&gt;CKA : En plus des recommandations précédentes, il y a quelques astuces à avoir (que je connaissais déjà), comme ne pas oublier de sauvegarder dans un autre dossier tous les manifestes statiques présents dans &lt;code&gt;/etc/kubernetes/manifests/&lt;/code&gt; car il est facile de flinguer le cluster et perdre tous les points de la question. Il faut aussi savoir rapidement retrouver où sont stockés les logs des conteneurs avec &lt;code&gt;containerd&lt;/code&gt; pour débuguer quand l&amp;rsquo;API server est KO, ne pas hésiter à redémarrer le &lt;code&gt;kubelet&lt;/code&gt; pour gagner du temps en cas de crashloop backoff, savoir manipuler les données dans etcd avec &lt;code&gt;etcdctl&lt;/code&gt;. Là encore, je suis vraiment sceptique sur l&amp;rsquo;intérêt au quotidien, sauf à gérer en prod des clusters créés avec &lt;code&gt;kubeadm&lt;/code&gt; (ce que je ne fais plus depuis bien longtemps).&lt;/p&gt;
&lt;p&gt;CKS : Il y a pas mal d&amp;rsquo;avis divergents sur l&amp;rsquo;intérêt de la CKS parmi ceux qui l&amp;rsquo;ont passée. Tout le monde est unanime pour dire qu&amp;rsquo;elle est dure (c&amp;rsquo;est vrai). C&amp;rsquo;est la plus exigeante, j&amp;rsquo;ai sué à grosses gouttes en la passant, et j&amp;rsquo;ai dû faire quelques révisions sur une partie des sujets que je ne connaissais pas. C&amp;rsquo;est aussi la seule où j&amp;rsquo;ai vraiment l&amp;rsquo;impression d&amp;rsquo;avoir appris des trucs utiles (chiffrement etcd, révisions/découvertes apparmor/seccomp). Un des points mis en avant comme négatif est qu&amp;rsquo;elle oblige à connaître un minimum des choses sur des projets tiers comme falco / trivy / cilium / istio, ce qui sort du cadre strict de Kubernetes et drift sur d&amp;rsquo;autres projets (qui ont leur propre certifs, d&amp;rsquo;ailleurs). À titre perso, je n&amp;rsquo;ai pas trouvé ça &amp;ldquo;choquant&amp;rdquo;, mais je comprends la gêne pour une certif officielle &lt;strong&gt;Kubernetes&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="conclusion--est-ce-que-je-le-referai-"&gt;Conclusion / est-ce que je le referai ?
&lt;/h2&gt;&lt;p&gt;Ça dépend de la question. Je ne suis pas &amp;ldquo;CNCF ambassador&amp;rdquo; alors je ne vais pas me gêner pour dire ce que j&amp;rsquo;en pense.&lt;/p&gt;
&lt;p&gt;Si c&amp;rsquo;est les KCNA/KCSA, c&amp;rsquo;est un grand NON. &lt;strong&gt;Elles ne servent strictement à rien&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si la question c&amp;rsquo;est &amp;ldquo;est-ce que je repasserai les certifs CKx quand elles expireront&amp;rdquo;, c&amp;rsquo;est quasiment sûr que non.&lt;/p&gt;
&lt;p&gt;Sauf à passer freelance / bosser dans une ESN (c&amp;rsquo;est pas du tout prévu) et que ça me soit utile (ça reste à prouver, à mon avis mon CV a plus de valeur), je ne vois pas d&amp;rsquo;avantage à les repasser, que des inconvénients. Franchement l&amp;rsquo;expérience &amp;ldquo;proctored exam&amp;rdquo; était trop pénible, et les KCNA/KCSA n&amp;rsquo;ont aucune valeur à mes yeux.&lt;/p&gt;
&lt;p&gt;Si jamais c&amp;rsquo;est un exercice de pensée en mode &amp;ldquo;imaginons, on revient en 2024, est-ce que tu le refais&amp;rdquo;, la réponse est probablement &amp;ldquo;oui&amp;rdquo;, sous condition.&lt;/p&gt;
&lt;p&gt;Je l&amp;rsquo;ai dit plus haut, c&amp;rsquo;est mon employeur qui m&amp;rsquo;a payé les certifs &lt;strong&gt;CKx&lt;/strong&gt;, avec dans l&amp;rsquo;idée que moi &amp;ldquo;le vieux&amp;rdquo;, motive un peu les &amp;ldquo;jeunes&amp;rdquo; à qui les certifs étaient aussi payées, à les passer.&lt;/p&gt;
&lt;p&gt;Et ça, c&amp;rsquo;était vraiment rigolo : le faire en groupe et &amp;ldquo;se tirer la bourre&amp;rdquo;. Ça a plutôt bien marché d&amp;rsquo;ailleurs, j&amp;rsquo;ai passé chaque certif en premier, mais ils ont fait de meilleurs scores que moi, au final (moi ça me fait rigoler, eux sont contents d&amp;rsquo;avoir mouché le &amp;ldquo;vieux&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;Donc entre le coût pris en charge d&amp;rsquo;un côté, et le côté collaboration / faire grandir l&amp;rsquo;équipe, ça valait le coût (jeu de mots, humour, haha).&lt;/p&gt;
&lt;h2 id="autres-ressources"&gt;Autres ressources
&lt;/h2&gt;&lt;p&gt;Si vous voulez aller plus loin, voici d&amp;rsquo;autres retours d&amp;rsquo;expérience et ressources utiles de la communauté française :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://share.google/0lALIB2zOyOMeBqCG" target="_blank" rel="noopener"
&gt;Comment bien foirer vos certifications Kubernetes CK{A,S}&lt;/a&gt; - Rémi Tech Notes&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/littlejo/certifications-notes/tree/main/KCSA" target="_blank" rel="noopener"
&gt;Notes de certification KCSA&lt;/a&gt; - Joseph Ligier&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://share.google/iMEjNulLkK4km9IOf" target="_blank" rel="noopener"
&gt;Tips &amp;amp; Tricks — Kubernetes Certifications &amp;ldquo;CKA — CKAD — CKS&amp;rdquo;&lt;/a&gt; - Jérôme Masson (Sphinxgaia)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://share.google/ykhcmpgbkj8djnuNt" target="_blank" rel="noopener"
&gt;Guide pour réussir l&amp;rsquo;examen de certification CKA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://share.google/SyRj4EggEz9tCkDSW" target="_blank" rel="noopener"
&gt;Certifications Kubernetes : CKA et CKAD&lt;/a&gt; - Mossroy&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/sailor-sh/CK-X" target="_blank" rel="noopener"
&gt;CK-X - simulateur des certifications Kubernetes&lt;/a&gt; - sailor-sh&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Un an dans le nua.ge</title><link>https://blog.zwindler.fr/2022/10/06/un-an-dans-le-nua-ge/</link><pubDate>Thu, 06 Oct 2022 22:00:00 +0200</pubDate><guid>https://blog.zwindler.fr/2022/10/06/un-an-dans-le-nua-ge/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/10/box.webp" alt="Featured image of post Un an dans le nua.ge" /&gt;&lt;h2 id="cest-lhistoire-dun-cloud"&gt;C&amp;rsquo;est l&amp;rsquo;histoire d&amp;rsquo;un cloud
&lt;/h2&gt;&lt;p&gt;Vous vous en souvenez peut-être ?&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;an dernier, en novembre, un certain nombre de comptes techs twitter recevaient une box contenant des codes pour tester un tout nouveau fournisseur cloud, fièrement Français, du nom de &lt;a class="link" href="https://nua.ge" target="_blank" rel="noopener"
&gt;nua.ge&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;avais été un peu surpris de recevoir, quelques mois plus tôt, un message de la part d&amp;rsquo;Iris, pour me demander si je voulais bien tester avec quelques autres &amp;ldquo;happy few&amp;rdquo; ce tout nouveau service cloud.&lt;/p&gt;
&lt;p&gt;Pour la petite histoire, c&amp;rsquo;était la toute première fois qu&amp;rsquo;on me proposait ce genre de choses. C&amp;rsquo;était aussi la toute première fois où je me suis fait qualifier &amp;ldquo;d&amp;rsquo;influenceuse tech&amp;rdquo;. Amusant.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai attendu un peu (1 an) avant de faire un retour.&lt;/p&gt;
&lt;h2 id="buzz-ou-bad-buzz-"&gt;Buzz, ou bad buzz ?
&lt;/h2&gt;&lt;p&gt;Pourquoi attendre pour ce retour ?&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;abord, parce que beaucoup d&amp;rsquo;autres ont dégainé plus tôt. Je vous ai mis les liens, en fin d&amp;rsquo;article, de tous les articles de mes pairs que j&amp;rsquo;ai retrouvés sur le sujet.&lt;/p&gt;
&lt;p&gt;Ensuite parce que je voulais voir dans quelle direction le service allait aller.&lt;/p&gt;
&lt;p&gt;Beaucoup ont reproché à nua.ge (à l&amp;rsquo;époque) d&amp;rsquo;être un peu &amp;ldquo;pauvre&amp;rdquo; en fonctionnalités, surtout par rapport à son positionnement tarifaire. A priori ce n&amp;rsquo;est pas forcément vrai, nuage se situe plutôt dans la moyenne (cf &lt;a class="link" href="https://projector.cloud-mercato.com/projects/state-of-the-art-of-european-iaas-compute-q2-2022" target="_blank" rel="noopener"
&gt;l&amp;rsquo;étude de coud Mercato&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;La société qui opère nua.ge Oxeva avait répondu à cette critique en disant qu&amp;rsquo;une roadmap était en cours d&amp;rsquo;élaboration et que les points les plus bloquants seraient rapidement adressés.&lt;/p&gt;
&lt;h2 id="premiers-pas-avec-linterface"&gt;Premiers pas avec l&amp;rsquo;interface
&lt;/h2&gt;&lt;p&gt;La première chose que j&amp;rsquo;ai remarqué est que l&amp;rsquo;interface était effectivement assez simple. Le site web vante d&amp;rsquo;ailleurs un service &amp;ldquo;simple mais pas simpliste&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;onboarding était hyper efficace (un des meilleurs que j&amp;rsquo;ai vu). La page de création d&amp;rsquo;une nouvelle VM aussi.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/menu-principal.avif"
loading="lazy"
alt="Vue du menu principal de nua.ge"
&gt;&lt;/p&gt;
&lt;p&gt;On a globalement cinq menus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un menu &amp;ldquo;espace de travail&amp;rdquo; dans lequel on a les machines du projet courant&lt;/li&gt;
&lt;li&gt;un pour gérer ces fameux projets (en créer un nouveau, le supprimer)&lt;/li&gt;
&lt;li&gt;un pour créer des utilisateurs (nouveau)&lt;/li&gt;
&lt;li&gt;un pour le suivi de la consommation&lt;/li&gt;
&lt;li&gt;un pour la facturation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les deux derniers auraient pu être fusionnés je pense, je me trompe toujours et je les inverse&amp;hellip;&lt;/p&gt;
&lt;p&gt;A quelques détails près, c&amp;rsquo;est tout.&lt;/p&gt;
&lt;h2 id="alors-quen-est-il-11-mois-après-"&gt;Alors qu&amp;rsquo;en est il, 11 mois après ?
&lt;/h2&gt;&lt;p&gt;Je vais être franc, j&amp;rsquo;ai eu à ma disposition 10000€ de crédit.&lt;/p&gt;
&lt;p&gt;De quoi tester allègrement toutes les fonctionnalités et même héberger pas mal de trucs pendant un bon moment.&lt;/p&gt;
&lt;p&gt;Au niveau de la stabilité du service, je n&amp;rsquo;ai rien à redire.&lt;/p&gt;
&lt;p&gt;Au cours des 12 derniers mois, le service a subi de brèves coupures réseau (et encore, c&amp;rsquo;est surtout les autres utilisateurs qui l&amp;rsquo;ont remonté). Mon monitoring externe n&amp;rsquo;a pas repéré grand-chose.&lt;/p&gt;
&lt;p&gt;Au niveau infrastructure, ça semble donc être du solide.&lt;/p&gt;
&lt;p&gt;Cependant, au niveau fonctionnalités, je vais être obligé d&amp;rsquo;être d&amp;rsquo;accord avec mes pairs. Même 11 mois après, on a vite fait le tour&amp;hellip; On a des VMs, des projets&amp;hellip; et c&amp;rsquo;est tout.&lt;/p&gt;
&lt;h2 id="des-défauts-corrigés"&gt;Des défauts corrigés
&lt;/h2&gt;&lt;p&gt;La &lt;a class="link" href="https://roadmap.nua.ge/" target="_blank" rel="noopener"
&gt;roadmap publique&lt;/a&gt; a été mise en ligne et il est possible de voter pour des fonctionnalités.&lt;/p&gt;
&lt;p&gt;Ca avait été promis quasiment depuis le lancement : l&amp;rsquo;API publique et documentée a rapidement été mise en ligne et est &lt;a class="link" href="https://api.nua.ge/docs" target="_blank" rel="noopener"
&gt;disponible ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Au fil des mois, l&amp;rsquo;interface a elle aussi été améliorée. Possibilité de transférer des IPs publiques d&amp;rsquo;une machine à l&amp;rsquo;autre, ajout de disques plus gros pour les machines (500 Go si nécessaire au lieu de 100 par défaut).&lt;/p&gt;
&lt;p&gt;Il est également possible d&amp;rsquo;avoir une gestion des utilisateurs avec une gestion des droits basique par projet que j&amp;rsquo;utilise beaucoup.&lt;/p&gt;
&lt;p&gt;La gestion des groupes de sécurité (firewalling / flux réseau) ont été grandement améliorés. Au début on avait le choix qu&amp;rsquo;avec traffic web et traffic SSH, il y a maintenant plus d&amp;rsquo;options.&lt;/p&gt;
&lt;h2 id="mais-dautres-toujours-bien-présents"&gt;Mais d&amp;rsquo;autres toujours bien présents
&lt;/h2&gt;&lt;p&gt;Certains des points remontés dès le début sont malheureusement toujours absents. Stéphane Bortzmeyer avait reproché à nua.ge son &lt;strong&gt;absence d&amp;rsquo;IPv6&lt;/strong&gt;, c&amp;rsquo;est toujours le cas. Je l&amp;rsquo;avais également remonté via le &amp;ldquo;chat&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;provider terraform&lt;/strong&gt; (ou tout autre outil d&amp;rsquo;infrastructure as code) se fait toujours attendre. On &lt;a class="link" href="https://docs.nua.ge/fr/article/apercu-des-possibilites-dautomatisation-avec-lapi-nuage-1mqkvux/" target="_blank" rel="noopener"
&gt;a l&amp;rsquo;API&lt;/a&gt; mais c&amp;rsquo;est très &amp;ldquo;manuel&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;[Edit]Il existe un provider non officiel &lt;a class="link" href="https://github.com/MKCG/terraform-provider-nuage" target="_blank" rel="noopener"
&gt;github.com/MKCG/terraform-provider-nuage&lt;/a&gt;. Son créateur m&amp;rsquo;a contacté pour me l&amp;rsquo;indiquer, ainsi que le fait qu&amp;rsquo;il n&amp;rsquo;avait pas l&amp;rsquo;intention de le maintenir. Cependant, comme il est open source, n&amp;rsquo;importe qui pourrait potentiellement le faire.&lt;/p&gt;
&lt;p&gt;Plus grave, l&amp;rsquo;interface a plein de petites limitations très agaçantes (rarement, on peut les contourner par l&amp;rsquo;API).&lt;/p&gt;
&lt;h2 id="les-projets"&gt;Les projets
&lt;/h2&gt;&lt;p&gt;Il ne semble &lt;strong&gt;pas possible de modifier un projet&lt;/strong&gt; existant. On doit le supprimer (et tout ce qu&amp;rsquo;il y a dedans) et en refaire un nouveau.&lt;/p&gt;
&lt;p&gt;Toujours en parlant des projets, ils ont des quotas, fixés par défaut à 40 coeurs, 256 Go de RAM, 2 To de stockage et 20 IP publiques.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/projets.avif"
loading="lazy"
alt="vue de création de projet pour nua.ge"
&gt;&lt;/p&gt;
&lt;p&gt;Je trouve cette fonctionnalité très utile ! Cependant, quel intérêt de les afficher dans l&amp;rsquo;UI au moment de la création du projet, s&amp;rsquo;il n&amp;rsquo;est possible de les modifier ? Les &lt;strong&gt;quotas sont donc immuables&lt;/strong&gt;, à la hausse (admettons) comme à la baisse !&lt;/p&gt;
&lt;h2 id="les-vms"&gt;Les VMs
&lt;/h2&gt;&lt;p&gt;Encore plus grave, il n&amp;rsquo;est pas possible de modifier une machine virtuelle.&lt;/p&gt;
&lt;p&gt;Dans l&amp;rsquo;interface, les seules actions possibles sont : allumer, éteindre, redémarrer. &lt;strong&gt;Impossible de changer sa taille&lt;/strong&gt; en cours de route, même éteinte. Il faut la détruire et en refaire une autre. Vous avez intérêt à bien prévoir votre capacity planning&amp;hellip;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai dû réinstaller entièrement des serveurs elasticsearch trop gros à cause de ça et j&amp;rsquo;ai bien ragé. Je suis toujours en colère, je crois.&lt;/p&gt;
&lt;p&gt;On aurait pu contourner le problème en ré-attachant les disques, sauf qu&amp;rsquo;&lt;strong&gt;ils ne sont pas détachables&lt;/strong&gt;. Un disque appartient à une VM, point. Il est créé avec, détruit avec.&lt;/p&gt;
&lt;p&gt;Cerise sur le gâteau, ça veut dire que ça compliquera aussi la réversibilité (pourtant un point capital dans le cloud&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Enfin, c&amp;rsquo;est plus une problématique de poweruser / bidouilleur, mais il n&amp;rsquo;est &lt;strong&gt;pas possible de donner un nom &amp;ldquo;long&amp;rdquo; à une machine&lt;/strong&gt; (mavm.example.org). C&amp;rsquo;est gênant, parce que la VM est ensuite déployée à l&amp;rsquo;aide de templates &lt;em&gt;cloud-init&lt;/em&gt; et il est non trivial de changer le hostname en FQDN de manière pérenne.&lt;/p&gt;
&lt;p&gt;En partie à cause de ça, j&amp;rsquo;ai été incapable d&amp;rsquo;installer Proxmox VE au dessus d&amp;rsquo;une installation Debian 11 fraîche (alors que j&amp;rsquo;avais réussi sur le IaaS de Scaleway).&lt;/p&gt;
&lt;p&gt;Il manque pas mal de modules dans les Ubuntu 22.04 donc dès que j&amp;rsquo;en bootstrap une, je lance&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install curl linux-image-generic-hwe-22.04 -y &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Ca fonctionne et j&amp;rsquo;en ai abondamment profité.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;utilise nua.ge depuis quasiment 1 an pour héberger des serveurs pour plusieurs associations auxquelles je participe, et je ne peux pas dire que je suis insatisfait du service rendu pour ces besoins basiques.&lt;/p&gt;
&lt;p&gt;Oui, une bonne partie des promesses initiales sont là : l&amp;rsquo;interface est hyper simple, le billing est limpide, l&amp;rsquo;infra semble solide.&lt;/p&gt;
&lt;p&gt;Cependant, si je n&amp;rsquo;avais pas mes crédits gratuits, est ce que j&amp;rsquo;aurais choisi &lt;a class="link" href="https://nua.ge" target="_blank" rel="noopener"
&gt;nua.ge&lt;/a&gt; pour héberger ces associations ?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Car une fois l&amp;rsquo;enthousiasme des milliers d&amp;rsquo;euros de coupons et du parrainage retombés, il ne restera plus que les clients payant leurs factures.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cette punchline de &lt;a class="link" href="https://www.nextinpact.com/article/68480/a-decouverte-nua-ge-cloud-simple-mais-pas-simpliste-groupe-la-poste" target="_blank" rel="noopener"
&gt;David Legrand&lt;/a&gt; résonne toujours&amp;hellip;&lt;/p&gt;
&lt;h2 id="sources-additionnelles"&gt;Sources additionnelles
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.nextinpact.com/article/68480/a-decouverte-nua-ge-cloud-simple-mais-pas-simpliste-groupe-la-poste" target="_blank" rel="noopener"
&gt;nextinpact.com - À la découverte de Nua.ge, le cloud « simple mais pas simpliste » du groupe La Poste&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bortzmeyer.org/nuage.html" target="_blank" rel="noopener"
&gt;bortzmeyer.org - L&amp;rsquo;offre d&amp;rsquo;hébergement nua.ge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.damyr.fr/posts/nuage-yet-a-new-cloud-souverain/" target="_blank" rel="noopener"
&gt;damyr.fr - Nuage, une Nième offre cloud souverain ?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://projector.cloud-mercato.com/projects/state-of-the-art-of-european-iaas-compute-q2-2022" target="_blank" rel="noopener"
&gt;Cloud Mercato - State of the art of European IaaS Compute - Q2 2022&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Et si on testait le Clever Operator pour Kubernetes ?</title><link>https://blog.zwindler.fr/2022/05/17/et-si-on-testait-clever-kubernetes-operator/</link><pubDate>Tue, 17 May 2022 10:00:00 +0000</pubDate><guid>https://blog.zwindler.fr/2022/05/17/et-si-on-testait-clever-kubernetes-operator/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/05/clever-trott.webp" alt="Featured image of post Et si on testait le Clever Operator pour Kubernetes ?" /&gt;&lt;h2 id="clever-operator"&gt;Clever Operator
&lt;/h2&gt;&lt;p&gt;Il y a quelques mois, je suis tombé sur cet article de Clever Cloud qui disait avoir &lt;a class="link" href="https://www.clever-cloud.com/fr/blog/fonctionnalites/2022/03/16/clever-operator/" target="_blank" rel="noopener"
&gt;annonçait la sortie de l&amp;rsquo;Operator pour Kubernetes&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nous avons commencé à travailler sur le Clever Operator suite aux retours de certains de nos clients utilisant k8s ou Openshift qui n’étaient pas vraiment satisfaits des solutions de gestion de base de données fournies par ces plateformes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;rsquo;est pas un secret, j&amp;rsquo;ai beaucoup râlé sur les gens qui disent que Kubernetes c&amp;rsquo;est compliqué et/ou que ça apporte plus de problèmes que ça n&amp;rsquo;en résout (cf &lt;a class="link" href="https://blog.zwindler.fr/2019/09/03/concerning-kubernetes-combien-de-problemes-ces-stacks-ont-generes/%29" target="_blank" rel="noopener"
&gt;https://blog.zwindler.fr/2019/09/03/concerning-kubernetes-combien-de-problemes-ces-stacks-ont-generes/)&lt;/a&gt;. On en a notamment parle avec Quentin ADAM ;-).&lt;/p&gt;
&lt;p&gt;Mais ce que je ne disais pas clairement à cette époque, c&amp;rsquo;est que Kubernetes, c&amp;rsquo;est quand même plus simple quand il s&amp;rsquo;agit d&amp;rsquo;autonomiser les devs sur des workloads stateless.&lt;/p&gt;
&lt;p&gt;Ou alors du stateful, mais pas trop violent : genre stockage de fichiers (Prometheus par exemple), voire fichiers partagés (avec un FS distribué, partagé entre plusieurs apps ou instances d&amp;rsquo;une même app).&lt;/p&gt;
&lt;p&gt;Par contre, les bases de données, là, on rigole tout de suite beaucoup moins&amp;hellip;&lt;/p&gt;
&lt;p&gt;Attention, je ne dis pas que c&amp;rsquo;est impossible. Plein de gens le font, en prod (moi compris). Mais c&amp;rsquo;est tout de suite un autre niveau de complexité, car il faut gérer le cycle de vie de la base de données, les mises à jours, les pertes de noeuds proprement, etc.&lt;/p&gt;
&lt;p&gt;Pour faciliter ça, il existe les &amp;ldquo;Opérateurs&amp;rdquo; dans Kubernetes, qui ont pour but d&amp;rsquo;ajouter toute une logique fonctionnelle pour gérer ça (comme celui pour &lt;a class="link" href="https://blog.zwindler.fr/2020/09/28/mes-bases-mongodb-dans-kubernetes/" target="_blank" rel="noopener"
&gt;MongoDB dont je parle dans cet article&lt;/a&gt;), mais c&amp;rsquo;est pas encore parfait.&lt;/p&gt;
&lt;p&gt;Ajoutez à cela le fait que DBA, c&amp;rsquo;est un job &amp;ldquo;à part&amp;rdquo;, avec des compétences bien spécifiques et qui nécessite vraiment de savoir ce qu&amp;rsquo;on fait.&lt;/p&gt;
&lt;p&gt;Du coup&amp;hellip; j&amp;rsquo;aurais pu dire (en moins classe) :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Les DBs dans Kube, c&amp;rsquo;est ch**nt. Ca serait cool si quelqu&amp;rsquo;un dont c&amp;rsquo;est l&amp;rsquo;expertise pouvait gérer ça pour moi, en dehors de Kube.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Qui a dit &amp;ldquo;Clever Cloud&amp;rdquo; ?&lt;/p&gt;
&lt;h2 id="clever-operator-1"&gt;Clever Operator
&lt;/h2&gt;&lt;p&gt;Ok, admettons qu&amp;rsquo;on ait un Kubernetes fonctionnel. On va plugger Clever Cloud dessus pour voir ce qu&amp;rsquo;on peut faire. Le billet sur le blog de Clever indique 2 manières de déployer l&amp;rsquo;operator (plot twist, il y en a une 3ème qui est mieux).&lt;/p&gt;
&lt;p&gt;La première consiste à utiliser &lt;a class="link" href="https://operatorhub.io/" target="_blank" rel="noopener"
&gt;operatorhub.io&lt;/a&gt;, un site communautaire pour partager des opérateurs Kubernetes.&lt;/p&gt;
&lt;p&gt;Pour utiliser cette méthode, il faut déployer le &lt;code&gt;operator-lifecycle-manager&lt;/code&gt;, lui-même un opérateur, dans notre kubernetes. J&amp;rsquo;ai essayé et j&amp;rsquo;ai plein de critiques à faire sur ce tool.&lt;/p&gt;
&lt;p&gt;Déjà, la doc nous demande de faire un &lt;code&gt;curl | bash&lt;/code&gt; (déjà une hérésie en soit), ensuite, il se déploie sans prévenir sur mon contexte Kubernetes par défaut. Enfin, c&amp;rsquo;est pas bien clair ce qu&amp;rsquo;il faut faire pour le customiser (notamment pour ajouter nos credentials).&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai essayé 1h, j&amp;rsquo;ai laissé tomber, mais si vous avez l&amp;rsquo;habitude d&amp;rsquo;utiliser Operatorhub.io vous aurez peut être des infos que je n&amp;rsquo;ai pas.&lt;/p&gt;
&lt;p&gt;La seconde méthode proposée est de déployer (ou de builder) soit même le container Docker dans notre cluster Kubernetes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vous pouvez le built à partir du code source sur Github ou utiliser notre image docker sur Docker Hub.
Puis, configurez le. Ça se résume à paramétrer les variables d’environnement CLEVER_OPERATOR_*. Par exemple, vous devez créer un token pour vous connecter à l’API.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je suis un poil sceptique sur le &amp;ldquo;ça se résume à&amp;rdquo; 😏.&lt;/p&gt;
&lt;p&gt;Quand on va voir le code du clever operator (&lt;a class="link" href="https://github.com/CleverCloud/clever-operator/tree/main/deployments/kubernetes/v1.21.0" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt;), on se rend tout de suite compte qu&amp;rsquo;il va falloir déployer &lt;strong&gt;beaucoup&lt;/strong&gt; de ressources Kube et pas juste un container (~650 lignes de YAML).&lt;/p&gt;
&lt;p&gt;En même temps c&amp;rsquo;est logique, il y a le fichier du &lt;code&gt;Deployment&lt;/code&gt;, des &lt;code&gt;Roles&lt;/code&gt;, plusieurs définitions de &lt;code&gt;CRDs&lt;/code&gt;, bref&amp;hellip;&lt;/p&gt;
&lt;h2 id="diy"&gt;DIY
&lt;/h2&gt;&lt;p&gt;Edit du 24/05 : depuis la rédaction de l&amp;rsquo;article, j&amp;rsquo;ai proposé une PR à Florentin (le dev de la feature chez Clever) pour ajouter une Helm Chart. Le principe est le même, on va devoir renseigner des valeurs dans values.yaml donc vous pouvez quand même dérouler l&amp;rsquo;article.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;cd deployments/kubernetes/helm
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;helm install clever-operator -n clever-operator --create-namespace -f values.yaml .
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Du coup, j&amp;rsquo;ai déjà spoilé la solution (qui est d&amp;rsquo;ailleurs mise en avant dans le README.md du &lt;a class="link" href="https://github.com/CleverCloud/clever-operator/blob/main/deployments/kubernetes/v1.21.0/10-custom-resource-definition.yaml" target="_blank" rel="noopener"
&gt;dépot Github.com&lt;/a&gt;). On va déployer le YAML à la main.&lt;/p&gt;
&lt;p&gt;On installe les &lt;code&gt;CRDs&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;kubectl apply -f https://raw.githubusercontent.com/CleverCloud/clever-operator/main/deployments/kubernetes/v1.21.0/10-custom-resource-definition.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/postgresqls.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/redis.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/mysqls.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/mongodbs.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/pulsars.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/configproviders.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;customresourcedefinition.apiextensions.k8s.io/elasticsearches.api.clever-cloud.com configured
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;kubectl api-resources --api-group=api.clever-cloud.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; NAME SHORTNAMES APIVERSION NAMESPACED KIND
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; mongodbs mo api.clever-cloud.com/v1 true MongoDb
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; mysqls my api.clever-cloud.com/v1 true MySql
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; postgresqls pg api.clever-cloud.com/v1 true PostgreSql
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; pulsars pulse,pul api.clever-cloud.com/v1beta1 true Pulsar
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; redis r api.clever-cloud.com/v1 true Redis
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si je peux me permettre ce commentaire, je trouve ça audacieux, ces shortnames 😱&amp;hellip; Attention aux collisions avec d&amp;rsquo;autres CRDs 🤔.&lt;/p&gt;
&lt;p&gt;Et ensuite on récupère et on va modifier le fichier du &lt;code&gt;Deployment&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -LO https://raw.githubusercontent.com/CleverCloud/clever-operator/main/deployments/kubernetes/v1.21.0/20-deployment.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="préparer-la-configuration"&gt;Préparer la configuration
&lt;/h2&gt;&lt;p&gt;Bon, à un moment donné, il va bien falloir que je connecte l&amp;rsquo;API clever cloud avec mon operator, notamment en renseignant les fameuses variables d’environnement &lt;code&gt;CLEVER_OPERATOR_*&lt;/code&gt; dont parle l&amp;rsquo;article.&lt;/p&gt;
&lt;p&gt;Si on regarde la tête de notre fichier &lt;code&gt;20-deployment.yaml&lt;/code&gt;, on remarque qu&amp;rsquo;il existe une ressource &lt;code&gt;ConfigMap&lt;/code&gt; prévue pour renseigner les credentials (ligne 100).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: clever-operator-system
name: clever-operator-configuration
data:
config.toml: |
[api]
token = &amp;#34;&amp;#34;
secret = &amp;#34;&amp;#34;
consumerKey = &amp;#34;&amp;#34;
consumerSecret = &amp;#34;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si vous êtes curieux (c&amp;rsquo;est mon cas), ce volume est ensuite appelé dans le &lt;code&gt;Deployment&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; volumes:
- name: config
configMap:
name: clever-operator-configuration
items:
- key: &amp;#34;config.toml&amp;#34;
path: &amp;#34;config.toml&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Puis monté dans la spec du template de container&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; volumeMounts:
- name: config
mountPath: &amp;#34;/etc/clever-operator&amp;#34;
readOnly: true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note : Idéalement, on voudra éviter de faire ça, dans la vraie vie. Les &lt;code&gt;ConfigMaps&lt;/code&gt; (comme les &lt;code&gt;Secrets&lt;/code&gt;) dans Kubernetes sont lisibles par beaucoup de monde (la seule différence pour les &lt;code&gt;Secrets&lt;/code&gt;, c&amp;rsquo;est que les chaines de caractères sont &lt;em&gt;base64ifiée&lt;/em&gt;. Si si, c&amp;rsquo;est dans le dico, &amp;ldquo;base64ifier&amp;rdquo;) et donc absolument pas adaptés pour la gestion de &lt;em&gt;secrets&lt;/em&gt;.
On pourrait aussi ajouter ces secrets comme variables d&amp;rsquo;environnement dans le &lt;code&gt;Deployment&lt;/code&gt; (comme proposé dans la méthode 2 par l&amp;rsquo;article), mais c&amp;rsquo;est pire (on peut en débattre) encore niveau sécu.
Idéalement, il faudra injecter ces valeurs avec un gestionnaire de secret tier, comme &lt;a class="link" href="https://blog.zwindler.fr/2020/08/31/gerez-vos-secrets-kubernetes-dans-vault" &gt;Vault par exemple&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="mais-où-on-les-trouve-ces-valeurs-à-renseigner-"&gt;Mais où on les trouve, ces valeurs à renseigner ?
&lt;/h2&gt;&lt;p&gt;Alors je n&amp;rsquo;avais jamais utilisé Clever Cloud avant, donc ça n&amp;rsquo;était pas super évident pour moi 😅.&lt;/p&gt;
&lt;p&gt;On va d&amp;rsquo;abord devoir créer une &lt;strong&gt;organisation&lt;/strong&gt; et récupérer son ID (en haut à droite de l&amp;rsquo;interface). Elle a la forme &lt;code&gt;orga_xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour la partie &lt;strong&gt;consumerKey&lt;/strong&gt; et &lt;strong&gt;consumerSecret&lt;/strong&gt;, j&amp;rsquo;ai trouvé avec la documentation officielle. Dans mon organisation côté UI de Clever Cloud, on peut cliquer sur &amp;ldquo;Create&amp;hellip; / an oauth consumer&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/oauth_consumer.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Pour la partie &lt;strong&gt;token&lt;/strong&gt; et &lt;strong&gt;secret&lt;/strong&gt;, je n&amp;rsquo;ai pas trouvé comment en créer un en console web et je n&amp;rsquo;ai pas trouvé dans la doc.&lt;/p&gt;
&lt;p&gt;En bidouillant un peu (monkey testing), j&amp;rsquo;ai trouvé qu&amp;rsquo;on pouvait en récupérer en utilisant la &lt;a class="link" href="https://www.clever-cloud.com/doc/getting-started/cli/" target="_blank" rel="noopener"
&gt;CLI de clever cloud&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;curl -fsSL https://clever-tools.clever-cloud.com/gpg/cc-nexus-deb.public.gpg.key | gpg --dearmor -o /usr/share/keyrings/cc-nexus-deb.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;echo &amp;#34;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/cc-nexus-deb.gpg] https://nexus.clever-cloud.com/repository/deb stable main&amp;#34; | tee -a /etc/apt/sources.list
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;sudo apt-get install clever-tools
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;clever login
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Opening https://console.clever-cloud.com/cli-oauth?cli_version=2.9.1&amp;amp;cli_token=... in your browser to log you in…
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;We&amp;#39;re still waiting for the login process (in your browser) to be completed…
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Login successful as Denis GERMAIN &amp;lt;...&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fenêtre de navigateur s&amp;rsquo;ouvre pour se loguer et magie magie, on a un &lt;strong&gt;token&lt;/strong&gt; et un &lt;strong&gt;secret&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;CLEVER_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;aaa
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;CLEVER_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;aaa
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tadaa !&lt;/p&gt;
&lt;h2 id="deployer-lopérateur"&gt;Deployer l&amp;rsquo;opérateur
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Tout est prêt, allons-y.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On peut apply le manifest et déployer le deployment&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;kubectl apply -f 20-deployment.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;namespace/clever-operator-system created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;serviceaccount/clever-operator created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;clusterrole.rbac.authorization.k8s.io/system:clever-operator created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;clusterrolebinding.rbac.authorization.k8s.io/system:clever-operator created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;poddisruptionbudget.policy/clever-operator created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;networkpolicy.networking.k8s.io/clever-operator created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;configmap/clever-operator-configuration created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;deployment.apps/clever-operator created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;del&gt;Note: la dernière version de l&amp;rsquo;image Docker du Clever Operator a &amp;ldquo;un bug&amp;rdquo; du à une version trop ancienne de la GLIBC. Florentin de chez Clever est en discussion avec Redhat pour fix ça (`GLIBC_2.29&amp;rsquo; not found).&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Il &amp;ldquo;suffit&amp;rdquo; de prendre une version plus ancienne de l&amp;rsquo;image et ça remarche, en attendant un fix définitif.&lt;/del&gt; (FIXED)&lt;/p&gt;
&lt;h2 id="on-teste-tout-ça"&gt;On teste tout ça
&lt;/h2&gt;&lt;p&gt;Normalement, là on est bons.&lt;/p&gt;
&lt;p&gt;Dans la liste des bases (des add-ons dans la terminology Clever Cloud) supportées par ce operator, il y a donc :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ElasticSearch&lt;/li&gt;
&lt;li&gt;MongoDb&lt;/li&gt;
&lt;li&gt;MySql&lt;/li&gt;
&lt;li&gt;PostgreSql&lt;/li&gt;
&lt;li&gt;Pulsar&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La documentation des CRDs &lt;a class="link" href="https://github.com/CleverCloud/clever-operator/blob/main/docs/40-custom-resources.md" target="_blank" rel="noopener"
&gt;est disponible ici&lt;/a&gt; et elle est bien faite.&lt;/p&gt;
&lt;p&gt;Je ferai des tests plus poussés (déployer une vraie application) plus tard, mais déjà pour tester, j&amp;rsquo;ai pu lancer un mysql managée;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat mysql.yml
---
apiVersion: api.clever-cloud.com/v1
kind: MySql
metadata:
namespace: default
name: mysql
spec:
organisation: orga_xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
options:
version: 80
encryption: false
instance:
region: par
plan: dev
kubectl apply -f mysql.yml
mysql.api.clever-cloud.com/mysql created
kubectl get my
NAME AGE
mysql 14s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/db_clever.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;opérateur a également la gentillesse de nous créer un &lt;code&gt;Secret&lt;/code&gt; avec les variables de connexion. C&amp;rsquo;est donc hyper simple de relier notre app à notre nouvelle DB :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;kubectl get secret mysql-secrets -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;apiVersion: v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;data:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_DB: aaa=
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_HOST: aaa==
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_PASSWORD: aaa=
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_PORT: aaa==
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_URI: aaa==
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_USER: aaa==
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; MYSQL_ADDON_VERSION: aaa
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;kind: Secret
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl run -it mysqlclient --image mysql /bin/bash
root@mysqlclient:/# mysql aaa --host aaa-mysql.services.clever-cloud.com --user aaa -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
mysql&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;J&amp;rsquo;ai été très content de tester cet operator, et surtout de pouvoir échanger avec son développeur, Florentin DUBOIS, qui m&amp;rsquo;a aidé et à qui j&amp;rsquo;ai pu remonter quelques petits défauts de jeunesse de l&amp;rsquo;outil.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;intégration entre Clever et Kubernetes marche vraiment bien, c&amp;rsquo;est fluide. La documentation des &lt;code&gt;CRDs&lt;/code&gt; est bien faite, on est pas perdus. Enfin, la génération à la volée du &lt;code&gt;Secret&lt;/code&gt; contenant les informations de connexion directement dans Kubernetes est vraiment une fonctionnalité bien pratique, puisqu&amp;rsquo;on voudra souvent monter directement les informations qu&amp;rsquo;il contient dans un &lt;code&gt;Pod&lt;/code&gt; du même namespace.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;De mon point de vue, il manque une Chart Helm, pour rentre le déploiement simple et flexible de l&amp;rsquo;opérateur, et sans trop spoiler ça devrait arriver bientôt ;-).&lt;/del&gt; (FIXED)&lt;/p&gt;
&lt;p&gt;A moi le pouvoir tout puissant des bases de données que je n&amp;rsquo;ai pas à gérer !&lt;/p&gt;</description></item><item><title>Retours sur Touraine Tech 2022</title><link>https://blog.zwindler.fr/2022/01/24/retours-sur-touraine-tech-22/</link><pubDate>Mon, 24 Jan 2022 06:30:00 +0000</pubDate><guid>https://blog.zwindler.fr/2022/01/24/retours-sur-touraine-tech-22/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/01/ada2.webp" alt="Featured image of post Retours sur Touraine Tech 2022" /&gt;&lt;h2 id="tnt-22-irl"&gt;TNT 22, IRL
&lt;/h2&gt;&lt;p&gt;Vendredi j&amp;rsquo;étais à Touraine Tech !&lt;/p&gt;
&lt;p&gt;Malgré le contexte sanitaire encore plus compliqué qu&amp;rsquo;en fin d&amp;rsquo;année dernière (&amp;hellip;), cette édition a pu se dérouler en présentiel, au Polytech Tours, quasi normalement.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/01/tnt2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Bon&amp;hellip; en vrai, côté orga, ça a du être bien galère, mais côté speakers / participants, tout était tellement &lt;em&gt;smooth&lt;/em&gt; qu&amp;rsquo;on a rien vu. Bravo :)&lt;/p&gt;
&lt;p&gt;TNT était l&amp;rsquo;occasion pour moi de faire mon talk &amp;ldquo;Dis papa ? C&amp;rsquo;est quoi un SRE ?&amp;rdquo; autrement qu&amp;rsquo;en visio et aussi de rencontrer pas mal de speakers (il y avait beaucoup de talks très sympas, je vous met &lt;a class="link" href="https://touraine.tech/#schedule" target="_blank" rel="noopener"
&gt;le programme ici&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id="keynote-douverture"&gt;Keynote d&amp;rsquo;ouverture
&lt;/h2&gt;&lt;p&gt;La Keynote d&amp;rsquo;ouverture, présentée par &lt;strong&gt;Camille Justeau&lt;/strong&gt;, a été consacrée à une réflexion sur l&amp;rsquo;écologie et la lowtech.&lt;/p&gt;
&lt;p&gt;La conférence commence par relayer l&amp;rsquo;information que nous avons atteint une 5eme des 9 limites planétaires, selon &lt;a class="link" href="https://www.stockholmresilience.org/" target="_blank" rel="noopener"
&gt;un groupe de chercheurs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En partant du principe qu&amp;rsquo;améliorer l&amp;rsquo;efficience des composants électroniques ne suffira pas à minimiser notre impact sur l&amp;rsquo;environnement, beaucoup des éléments nécessaires aux smartphones, serveurs informatiques, etc risquent de ne plus être disponibles. Il devient donc urgent de consommer mieux (à défaut de consommer moins).&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est le principe de la lowtech, qui consiste à amener une réflexion sur ce dont on a vraiment besoin pour nos services numériques du quotidien.&lt;/p&gt;
&lt;p&gt;Au delà de l&amp;rsquo;aspect purement écologique, il y a des réflexions intéressantes sur l&amp;rsquo;aspect &amp;ldquo;choix des équipements&amp;rdquo;. En effet, mettre en avant des composants durables, réparables, aux sources ouvertes, permet de pérenniser les matériels et donc limiter le gaspillage.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Utile&lt;/li&gt;
&lt;li&gt;Durable&lt;/li&gt;
&lt;li&gt;Accessible&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="dis-père-castor-raconte-nous-une-histoire-dops"&gt;Dis Père castor, raconte nous une histoire d&amp;rsquo;Ops
&lt;/h2&gt;&lt;p&gt;Slides de son talk (lien cassé)&lt;/p&gt;
&lt;p&gt;Ce talk de &lt;strong&gt;David Aparicio&lt;/strong&gt;, est une collection de postmortems et d&amp;rsquo;incidents de prod. Chaque exemple est raconté puis décortiqué par David, qui donne des clés pour éviter que cela vous arrive, ou a minima en réduire l&amp;rsquo;impact.&lt;/p&gt;
&lt;p&gt;Pele mêle, je citerai :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;faire des blameless postmortems&lt;/li&gt;
&lt;li&gt;imposer de faire de meilleures docs, plus de runbooks, jouer des wheels of misfortune&lt;/li&gt;
&lt;li&gt;mettre en place de workarounds quand le produit a vocation à disparaître très prochainement&lt;/li&gt;
&lt;li&gt;rendre explicite les messages d&amp;rsquo;erreur&lt;/li&gt;
&lt;li&gt;mettre en place de circuit breaker pour éviter les bootstorms&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="dis-papa--cest-quoi-un-sre-"&gt;Dis papa ! C&amp;rsquo;est quoi un SRE ?
&lt;/h1&gt;&lt;p&gt;C&amp;rsquo;est mon talk ;-)&lt;/p&gt;
&lt;p&gt;En attendant que la vidéo soit disponible je vous remet &lt;a class="link" href="https://blog.zwindler.fr/2022/01/12/touraine-tech-22-dis-papa-cest-quoi-un-sre/" &gt;le lien vers l&amp;rsquo;article qui en parle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/01/dis_papa_cest_quoi_un_SRE.avif"
loading="lazy"
alt="Un photo avec tous les retours, merci les orgas :-D"
&gt;&lt;/p&gt;
&lt;p&gt;[Edit]La vidéo est &lt;a class="link" href="https://www.youtube.com/watch?v=l8W8XGK3gSo" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt;[/Edit]&lt;/p&gt;
&lt;h2 id="would-like-to-learn-how-manage-your-passwords-like-your-code"&gt;Would like to learn how manage your passwords like your code?
&lt;/h2&gt;&lt;p&gt;Dans cette session de 15 minutes, &lt;strong&gt;Sébastien&lt;/strong&gt; nous a montré comment, chez OVHcloud, une partie des mots de passe sont générés, stockés et mis à jour de manière sécurisée à l&amp;rsquo;aide de &lt;a class="link" href="https://www.passwordstore.org/" target="_blank" rel="noopener"
&gt;passwordstore&lt;/a&gt; (ou &lt;code&gt;pass&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Ce logiciel utilise GPG et est suffisamment simple et automatisable pour fiabiliser la gestion des secrets.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;outil dispose d&amp;rsquo;un submodule dans Ansible ainsi que d&amp;rsquo;un operator dans Kube pour faciliter son usage.&lt;/p&gt;
&lt;p&gt;Personnellement j&amp;rsquo;utilise plutôt Hashicorp Vault (mais c&amp;rsquo;est plus compliqué à utiliser) ou bien &lt;code&gt;ansible-playbook&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="observabilité-zero-to-opentelemetry"&gt;Observabilité Zero to OpenTelemetry
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/foxlegend/observablity-from-zero-to-opentelemetry" target="_blank" rel="noopener"
&gt;Démo disponibles ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Charles-Marie Ambrosetti&lt;/strong&gt; et &lt;strong&gt;David Pequegnot&lt;/strong&gt; nous ont fait un talk très sympathique d&amp;rsquo;introduction à l&amp;rsquo;observabilité, notamment grâce à &lt;a class="link" href="https://opentelemetry.io/" target="_blank" rel="noopener"
&gt;OpenTelemetry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pas besoin d&amp;rsquo;un APM coûteux, toutes les briques open source sont à disposition ;-p.&lt;/p&gt;
&lt;p&gt;Ils nous ont montrés qu&amp;rsquo;en injectant quelques libs mises à disposition par le produit, on était capable d&amp;rsquo;instrumenter le code et récupérer des traces, corrélables avec des logs et des métriques.&lt;/p&gt;
&lt;p&gt;Le premier gros avantage d&amp;rsquo;OpenTelemetry est le nombre très important d&amp;rsquo;outils qu&amp;rsquo;il peut accepter, à la fois en entrée et en sortie.&lt;/p&gt;
&lt;p&gt;Le second avantage est qu&amp;rsquo;il n&amp;rsquo;est pas nécessaire de réécrire du code (même si c&amp;rsquo;est possible). Pour certains langage il suffit d&amp;rsquo;ajouter une lib au démarrage (java) ou de changer de binaire (python).&lt;/p&gt;
&lt;p&gt;On va donc pouvoir corréler sans effort grâce aux services déjà présent dans nos infras.&lt;/p&gt;
&lt;p&gt;La démo a été faites avec le code de démo Spring &amp;ldquo;&lt;a class="link" href="https://github.com/spring-projects/spring-petclinic" target="_blank" rel="noopener"
&gt;petclinic&lt;/a&gt;&amp;rdquo;, un serveur Prometheus et un serveur grafana avec Loki (pour visualiser les logs) et tempo (pour visualiser les traces).&lt;/p&gt;
&lt;h2 id="petit-guide-pratique-pour-commencer-un-design-system"&gt;Petit guide pratique pour commencer un design system
&lt;/h2&gt;&lt;p&gt;Par curiosité, je suis allé voir le talk de &lt;strong&gt;Cécile Freyd-Foucault&lt;/strong&gt; sur les &lt;em&gt;design systems&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;N&amp;rsquo;ayant jamais travaillé avec des designers, je ne savais pas du tout à quoi m&amp;rsquo;attendre.&lt;/p&gt;
&lt;p&gt;Elle a commencé par nous rappeler que nous utilisons souvent le &amp;ldquo;material design&amp;rdquo; de Google parce qu&amp;rsquo;il est disponible par défaut, mais qu&amp;rsquo;il est tout à fait possible de gérer son propre design system, moyennant quelques précautions.&lt;/p&gt;
&lt;p&gt;Globalement, je n&amp;rsquo;ai pas compris tous les arguments (faire son propre design system permet de limiter le bus Factor ???), mais j&amp;rsquo;ai retrouvé beaucoup de similitudes avec mon métier et beaucoup de bonnes pratiques que je rabâche à longueur de journée.&lt;/p&gt;
&lt;p&gt;Embarquez l&amp;rsquo;équipe dans les choix, soyez pédagogues, écrivez de la Doc, ne le faites pas pour la hype, pensez aux utilisateurs, directs et indirects, commencez par un seul élément (le plus utilisé pour avoir l&amp;rsquo;effet waouw), etc.&lt;/p&gt;
&lt;p&gt;Bref, j&amp;rsquo;ai trouvé ça logique car je travaille comme ça moi aussi ;-)&lt;/p&gt;
&lt;h2 id="gitpod--ide-as-a-service-ou-comment-ne-pas-acheter-un-macbook-pro-à-6000--et-être-heureux-avec-une-petite-machine"&gt;GitPod : IDE as a service, ou comment ne pas acheter un MacBook Pro à 6000 € et être heureux avec une petite machine
&lt;/h2&gt;&lt;p&gt;MA GROSSE surprise de cette journée. Même si en vrai, en fait c&amp;rsquo;était prévisible, ce talk tourne dans toutes les confs et a de supers retours.&lt;/p&gt;
&lt;p&gt;Mais même comme ça, j&amp;rsquo;étais pas prêt pour toutes les possibilités que cela allait m&amp;rsquo;ouvrir.&lt;/p&gt;
&lt;p&gt;Grosso modo, &lt;strong&gt;Horacio&lt;/strong&gt; et &lt;strong&gt;Philippe&lt;/strong&gt; nous ont parlé de divers usecases dans lesquels ils avaient besoin d&amp;rsquo;environnements de développement plus ou moins complexes qui marchent &amp;ldquo;à tous les coups&amp;rdquo; et comment &lt;a class="link" href="https://www.gitpod.io/" target="_blank" rel="noopener"
&gt;GitPod&lt;/a&gt; rempli parfaitement ce besoin.&lt;/p&gt;
&lt;p&gt;Depuis un dépôt de code hébergé sur Github ou Gitlab (en ligne ou on-prem), on peut obtenir un environnement de développement complet ainsi qu&amp;rsquo;un IDE VScode (avec toutes les extensions et les fonctionnalité de prévisualisation), accessible depuis n&amp;rsquo;importe quel device depuis un navigateur web.&lt;/p&gt;
&lt;p&gt;Et pour avoir vu les démos, c&amp;rsquo;est bluffant.&lt;/p&gt;
&lt;p&gt;Il est possible de customiser les binaires/services disponibles dans la machine derrière l&amp;rsquo;IDE, voire même en lancer plusieurs via un &lt;code&gt;docker compose&lt;/code&gt; et ainsi reproduire un environnement de développement complet depuis un navigateur.&lt;/p&gt;
&lt;p&gt;Les possibilités ouvertes sont nombreuses et Horatio et Philippe nous donnent quelques exemples :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faire des labs virtuels&lt;/li&gt;
&lt;li&gt;Préparer rapidement des environnements de développement pour onboarder des nouveaux arrivants&lt;/li&gt;
&lt;li&gt;Assister les contributeurs nouveaux à un projet open source en leur donnant un environnement prêt à utiliser&lt;/li&gt;
&lt;li&gt;Avoir plusieurs onglets pour faciliter le travail sur plusieurs branches en simultanée&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je me vois déjà écrire le blog dessus avec Hugo, ou mes supports de conf avec marp, et je ne parle pas des cas d&amp;rsquo;usages pro que je lui réserve&amp;hellip; [Edit]Je viens de faire mes premières modifs depuis Gitpod \o/[/Edit]&lt;/p&gt;
&lt;p&gt;Vraiment une super découverte.&lt;/p&gt;
&lt;h2 id="keynote-de-fin"&gt;Keynote de fin
&lt;/h2&gt;&lt;p&gt;La keynote de fermeture a été réalisé par &lt;strong&gt;Damien&lt;/strong&gt; de WeLoveDevs.&lt;/p&gt;
&lt;p&gt;Damien nous a présenté, de manière humoristique, les résultats de son enquête annuelle &lt;a class="link" href="https://welovedevs.com/fr/resultats-enquete-salaire-bonheur-au-travail-developpeurs/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Ce que veulent les devs&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;était intéressant de voir ces chiffres (même si je commence à bien les connaître à force de consulter TOUTES les études qui sortent), et aussi un peu les messages qu&amp;rsquo;il a voulu faire passer (notamment sur le fait que beaucoup de gens qui se reconvertissent dans l&amp;rsquo;informatique ne trouvent pas de travail, malgré la pénurie).&lt;/p&gt;
&lt;p&gt;Au delà des chiffres, Damien nous a partagé quelques livres à lire si on veut mieux comprendre l&amp;rsquo;entreprise.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai aussi retenu les références suivantes (sur le savoir être) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://livre.fnac.com/a9518132/Marshall-B-Rosenberg-Les-mots-sont-des-fenetres-ou-bien-ce-sont-des-murs" target="_blank" rel="noopener"
&gt;Les mots sont des fenêtres&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://livre.fnac.com/mp35619200/Radical-Candor" target="_blank" rel="noopener"
&gt;Radical candor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Encore merci aux orgas, c&amp;rsquo;était vraiment parfait.&lt;/p&gt;</description></item><item><title>[TNT 2022] Dis papa ? C’est quoi un SRE ?</title><link>https://blog.zwindler.fr/2022/01/12/touraine-tech-22-dis-papa-cest-quoi-un-sre/</link><pubDate>Wed, 12 Jan 2022 06:30:00 +0000</pubDate><guid>https://blog.zwindler.fr/2022/01/12/touraine-tech-22-dis-papa-cest-quoi-un-sre/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/01/tnt_logo.webp" alt="Featured image of post [TNT 2022] Dis papa ? C’est quoi un SRE ?" /&gt;&lt;h2 id="première-conférence-de-2022-irl-en-plus-"&gt;Première conférence de 2022, IRL en plus :)
&lt;/h2&gt;&lt;p&gt;Après une grosse année 2021 avec plusieurs confs très sympas, pour grande partie en ligne, je reviens donc en janvier avec &lt;a class="link" href="https://touraine.tech/" target="_blank" rel="noopener"
&gt;Touraine Tech 2022&lt;/a&gt; (IRL, normalement). L&amp;rsquo;événement est (malheureusement ?) déjà sold out&amp;hellip; Vous ne pourrez donc pas me rejoindre à la dernière minute.&lt;/p&gt;
&lt;p&gt;Pour la petite histoire, la conférence se passe à &lt;a class="link" href="https://polytech.univ-tours.fr/" target="_blank" rel="noopener"
&gt;Polytech Tours&lt;/a&gt;, où j&amp;rsquo;ai faillis faire ma formation d&amp;rsquo;ingénieur. Un petit clin d&amp;rsquo;oeil à mon (déjà lointain ?) passé d&amp;rsquo;étudiant donc ;-)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/01/polytech_tours_logo.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai été retenu pour mon talk &amp;ldquo;&lt;em&gt;Dis Papa, c&amp;rsquo;est quoi un SRE ?&lt;/em&gt;&amp;rdquo; que j&amp;rsquo;ai donné l&amp;rsquo;an dernier en ligne à &lt;a class="link" href="https://blog.zwindler.fr/2021/09/27/cloud-nord-2021-dis-papa-cest-quoi-un-sre/" &gt;Cloud Nord&lt;/a&gt; puis &lt;a class="link" href="https://blog.zwindler.fr/2021/10/18/cloud-est-2021-dis-papa-cest-quoi-un-sre/" &gt;Cloud Est&lt;/a&gt;. J&amp;rsquo;ai pris vraiment beaucoup de plaisir avec ce talk mais j&amp;rsquo;ai aussi beaucoup discuté avec mes pairs à la suite de ce talk et j&amp;rsquo;ai beaucoup d&amp;rsquo;idée pour l&amp;rsquo;améliorer.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;espère que cette version plaira à ceux qui peuvent venir et que j&amp;rsquo;aurais l&amp;rsquo;occasion de le donner ailleurs, histoire de déclencher encore d&amp;rsquo;autres discussions :-D.&lt;/p&gt;
&lt;h2 id="le-pitch"&gt;Le pitch
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Ces dernières années, vous avez certainement vu apparaître un nouveau terme dans les annonces d&amp;rsquo;emploi : SRE. Tout le monde en cherche ! Pourtant, bien malin celui qui est capable de décrire le poste d’une manière qui convienne à tout le monde&amp;hellip;&lt;/p&gt;
&lt;p&gt;Au delà de la définition qu’en donne Google, qu’est ce que ça signifie, être SRE ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quelles sont les missions et les compétences du « bon » SRE ?&lt;/li&gt;
&lt;li&gt;Que faut il pour devenir SRE ? S’agit il d’un Dev ou plutôt d’un Ops ?&lt;/li&gt;
&lt;li&gt;Tout le monde n’est pas Google ! Est ce que ce terme est devenu un fourre-tout marketing ou le rôle SRE répond-il a un vrai besoin ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce talk, je vous donnerai donc mon avis ainsi que mon expérience sur ce nouveau (ou pas ?) métier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="les-slides"&gt;Les slides
&lt;/h2&gt;&lt;p&gt;Comme à mon habitude, je met les slides à disposition &lt;a class="link" href="https://blog.zwindler.fr/talks/2022-sre-sre-partout/index.html" &gt;ici pour que vous pouviez cliquer sur les liens en même temps que le talk :-)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>[Cloud Est 2021] Dis papa ? C’est quoi un SRE ?</title><link>https://blog.zwindler.fr/2021/10/18/cloud-est-2021-dis-papa-cest-quoi-un-sre/</link><pubDate>Mon, 18 Oct 2021 20:28:54 +0000</pubDate><guid>https://blog.zwindler.fr/2021/10/18/cloud-est-2021-dis-papa-cest-quoi-un-sre/</guid><description>&lt;img src="https://blog.zwindler.fr/2021/10/1633947580283.webp" alt="Featured image of post [Cloud Est 2021] Dis papa ? C’est quoi un SRE ?" /&gt;&lt;h2 id="non-ce-nest-pas-un-bug-de-la-matrice--après-le-chnord-lest-x1f605"&gt;Non ce n’est pas un bug de la matrice : après le ch’Nord, l’Est 😅
&lt;/h2&gt;&lt;p&gt;Le 8 octobre, je vous ai présenté un &lt;a class="link" href="https://blog.zwindler.fr/2021/09/27/cloud-nord-2021-dis-papa-cest-quoi-un-sre/" &gt;nouveau talk à Cloud Nord, dans lequel je parle du métier de SRE&lt;/a&gt; (surtout de comment moi je le perçoit).&lt;/p&gt;
&lt;p&gt;Si vous l’avez raté, pas de panique ! Vous avez donc une nouvelle chance de le voir, car j’ai été sélectionné pour le faire à &lt;a class="link" href="http://cloudest-event.fr/" target="_blank" rel="noopener"
&gt;Cloud Est&lt;/a&gt; ! Cette édition aura lieu les 21 et 22 Octobre 2021, en ligne, et &lt;a class="link" href="https://www.billetweb.fr/cloud-est" target="_blank" rel="noopener"
&gt;les billets (gratuits) sont disponibles ici&lt;/a&gt;. (Il me manque encore Cloud Sud et Cloud Ouest 🙃)&lt;/p&gt;
&lt;p&gt;Pendant ces deux jours, il y aura beaucoup de beau monde, je vous laisse &lt;a class="link" href="https://www.docdroid.net/tk2eJA6/planning-cloud-est-2-pdf" target="_blank" rel="noopener"
&gt;regarder le programme, très alléchant.&lt;/a&gt; Mon talk est lui planifié le 21 à 11h.&lt;/p&gt;
&lt;p&gt;Il donc s’agit d’un talk que j’ai écris suite à de multiples questions qui m’ont été posées (amis, connaissances sur les réseaux, etc) sur ce poste, différent d’une entreprise à l’autre ! J’en ai profité pour intégrer également quelques retours qui m’ont été fait à Cloud Nord donc il sera encore meilleur :-p.&lt;/p&gt;
&lt;h2 id="le-pitch"&gt;Le pitch
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Ces dernières années, vous avez certainement vu apparaître un nouveau terme dans les annonces d&amp;rsquo;emploi : SRE. Tout le monde en cherche ! Pourtant, bien malin celui qui est capable de décrire le poste d’une manière qui convienne à tout le monde&amp;hellip;&lt;/p&gt;
&lt;p&gt;Au delà de la définition qu’en donne Google, qu’est ce que ça signifie, être SRE ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quelles sont les missions et les compétences du « bon » SRE ?&lt;/li&gt;
&lt;li&gt;Que faut il pour devenir SRE ? S’agit il d’un Dev ou plutôt d’un Ops ?&lt;/li&gt;
&lt;li&gt;Tout le monde n’est pas Google ! Est ce que ce terme est devenu un fourre-tout marketing ou le rôle SRE répond-il a un vrai besoin ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce talk, je vous donnerai donc mon avis ainsi que mon expérience sur ce nouveau (ou pas ?) métier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="les-slides"&gt;Les slides
&lt;/h2&gt;&lt;p&gt;Comme à mon habitude, je met les slides à disposition &lt;a class="link" href="https://blog.zwindler.fr/talks/2022-sre-sre-partout/index.html" &gt;ici pour que vous pouviez cliquer sur les liens en même temps que le talk :-)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>[Cloud Nord 2021] Dis papa ? C’est quoi un SRE ?</title><link>https://blog.zwindler.fr/2021/09/27/cloud-nord-2021-dis-papa-cest-quoi-un-sre/</link><pubDate>Mon, 27 Sep 2021 06:55:00 +0000</pubDate><guid>https://blog.zwindler.fr/2021/09/27/cloud-nord-2021-dis-papa-cest-quoi-un-sre/</guid><description>&lt;img src="https://blog.zwindler.fr/2021/09/1629905048956.webp" alt="Featured image of post [Cloud Nord 2021] Dis papa ? C’est quoi un SRE ?" /&gt;&lt;h2 id="nouveau-talk-où-je-parle-de-mon-métier--sre"&gt;Nouveau talk, où je parle de mon métier : SRE
&lt;/h2&gt;&lt;p&gt;Je serai de nouveau en ligne avec les copains nordistes pour vous parler (vous l’aurez deviné) du métier de SRE !&lt;/p&gt;
&lt;p&gt;J’ai été sélectionné comme speaker pour &lt;a class="link" href="https://www.cloudnord.fr/" target="_blank" rel="noopener"
&gt;l’édition 2021 de Cloud Nord&lt;/a&gt;, un événement 100% en ligne qui aura lieu les 7 et 8 octobre de cette année. La billetterie est dors et déjà &lt;a class="link" href="https://www.billetweb.fr/cloud-nord-2021" target="_blank" rel="noopener"
&gt;disponible ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il s’agit d’un nouveau talk que j’ai écris suite à de multiples questions qui m’ont été posées (amis, connaissances sur les réseaux, etc) sur ce poste, différent d’une entreprise à l’autre !&lt;/p&gt;
&lt;p&gt;Il n’existe évidement pas de réponse universelle à la question « c’est quoi un SRE ? » !&lt;/p&gt;
&lt;p&gt;Mais pour ne pas que SRE devienne un terme fourre-tout, je pense que raconter mon expérience peut aider à remettre un peu de concret dans ce métier inventé par Google et décliné dans nos entreprises.&lt;/p&gt;
&lt;h2 id="le-pitch"&gt;Le pitch
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Ces dernières années, vous avez certainement vu apparaître un nouveau terme dans les annonces d&amp;rsquo;emploi : SRE. Tout le monde en cherche ! Pourtant, bien malin celui qui est capable de décrire le poste d’une manière qui convienne à tout le monde&amp;hellip;&lt;/p&gt;
&lt;p&gt;Au delà de la définition qu’en donne Google, qu’est ce que ça signifie, être SRE ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quelles sont les missions et les compétences du « bon » SRE ?&lt;/li&gt;
&lt;li&gt;Que faut il pour devenir SRE ? S’agit il d’un Dev ou plutôt d’un Ops ?&lt;/li&gt;
&lt;li&gt;Tout le monde n’est pas Google ! Est ce que ce terme est devenu un fourre-tout marketing ou le rôle SRE répond-il a un vrai besoin ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce talk, je vous donnerai donc mon avis ainsi que mon expérience sur ce nouveau (ou pas ?) métier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="slides"&gt;Slides
&lt;/h2&gt;&lt;p&gt;Comme à mon habitude, je met les slides à disposition &lt;a class="link" href="https://blog.zwindler.fr/talks/2022-sre-sre-partout/index.html" &gt;ici pour que vous pouviez cliquer sur les liens en même temps que le talk :-)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Import manuel de records DNS route53 avec Terraform</title><link>https://blog.zwindler.fr/2021/09/20/import-manuel-de-records-dns-route53-avec-terraform/</link><pubDate>Mon, 20 Sep 2021 06:10:00 +0000</pubDate><guid>https://blog.zwindler.fr/2021/09/20/import-manuel-de-records-dns-route53-avec-terraform/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/11/terraform.webp" alt="Featured image of post Import manuel de records DNS route53 avec Terraform" /&gt;&lt;h2 id="terraform-et-linfrastructure-as-code"&gt;Terraform et l’Infrastructure as Code
&lt;/h2&gt;&lt;p&gt;Ce n’est pas la première fois que je parle de terraform, l’outil d’Infrastructure as Code particulièrement efficace dans les environnements cloud (mais pas que) de Hashicorp.&lt;/p&gt;
&lt;p&gt;J’avais fait un &lt;a class="link" href="https://blog.zwindler.fr/2018/01/16/premiers-pas-avec-terraform/" &gt;petit « tour d’horizon »&lt;/a&gt; de l’outil quand il était encore en v0.10 (&lt;a class="link" href="https://www.hashicorp.com/blog/announcing-hashicorp-terraform-1-0-general-availability" target="_blank" rel="noopener"
&gt;Hashicorp a passé terraform en v1.0 en juin&lt;/a&gt;), si vous avez besoin d’un petit rafraîchissement de mémoire ou que vous découvrez l’outil.&lt;/p&gt;
&lt;p&gt;Pour la faire courte, l’intérêt de terraform (et de l’infrastructure as code) par rapport à l’automatisation plus classique est de passer dans un mode « déclaratif » où vous déclarez dans des manifests l’état souhaité de votre infrastructure plutôt que de dérouler un script qui fait les opérations unes à unes.&lt;/p&gt;
&lt;p&gt;Vos manifests deviennent la « source de vérité », auditable, versionnable, absolue (pas de diff possible entre ce que vous pensez avoir déployé et le bidule modifié à la main hier que vous avez oublié).&lt;/p&gt;
&lt;h2 id="réconcilier-lexistant-avec-linfrastructure-as-code"&gt;Réconcilier l’existant avec l’infrastructure as code
&lt;/h2&gt;&lt;p&gt;Tout ça c’est super si jamais vous venez de commencer à travailler dans le cloud et que vous partez de 0.&lt;/p&gt;
&lt;p&gt;Si vous avez déjà de l’existant, c’est plus compliqué puisque vous vous retrouvez avec une partie décrite dans votre dépôt Git et une autre partie « historique ».&lt;/p&gt;
&lt;p&gt;Et même si on peut se dire que cette partie « historique » va finir par disparaitre au profit des nouveaux projets gérés par IaC, il existe une zone floue où on ne sait plus très bien si c’est géré à la main ou en IaC.&lt;/p&gt;
&lt;p&gt;Du coup, autant en profiter quand on a le temps pour réintégrer le legacy dans l’IaC.&lt;/p&gt;
&lt;h2 id="route53-le-dns-by-aws"&gt;Route53, le DNS by AWS
&lt;/h2&gt;&lt;p&gt;Je suis donc arrivé dans un contexte technique où le DNS externe est géré par AWS depuis bien longtemps, et qu’on intègre progressivement les nouveaux records dans terraform. Cependant, j’avais besoin de modifier un record déjà existant (de type TXT) et je n’avais pas envie de le faire à la main.&lt;/p&gt;
&lt;p&gt;Sachez donc qu’il existe pour une grande partie (tous ?) des providers terraform une commande &lt;strong&gt;&lt;em&gt;terraform import&lt;/em&gt;&lt;/strong&gt; qui permet comme son nom l’indique d’importer l’existant dans terraform.&lt;/p&gt;
&lt;p&gt;Le souci est que cette import n’est réalisée que dans le « state » de terraform, pas la configuration elle même.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The current implementation of Terraform import can only import resources into the &lt;a class="link" href="https://www.terraform.io/docs/language/state/index.html" target="_blank" rel="noopener"
&gt;state&lt;/a&gt;. It does not generate configuration. A future version of Terraform will also generate configuration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Vous allez donc devoir écrire le pavé HCL à la main.&lt;/p&gt;
&lt;p&gt;D’un certain côté, c’est presque plus rassurant quand on y réfléchit, car ça permet de bien se poser la question de comment on souhaite découper nos projets, comment on veut construire l’IaC (avec des variables, avec des boucles, etc).&lt;/p&gt;
&lt;h2 id="récupérer-les-ids-uniques"&gt;Récupérer les IDs uniques
&lt;/h2&gt;&lt;p&gt;L’idée ici va être de récupérer le record en donnant à terraform toutes les infos nécessaire pour qu’il retrouve celui qui nous intéresse. A la suite de &lt;strong&gt;terraform import&lt;/strong&gt;, on doit lui donner les informations suivantes :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;terraform import {resource_type}.{resource_name} {zone_id}_{record_name}_{record_type}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans mon cas, le &lt;strong&gt;resource_type&lt;/strong&gt; était &lt;em&gt;&lt;a class="link" href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record" target="_blank" rel="noopener"
&gt;aws_route53_record&lt;/a&gt;&lt;/em&gt;, le &lt;strong&gt;resource_name&lt;/strong&gt; &lt;em&gt;mytxtrecord&lt;/em&gt; (le nom que je veux lui donner dans ma conf et mon state terraform). La zone ID dépend de votre compte AWS/route53, le &lt;strong&gt;record_name&lt;/strong&gt;, c’est le nom du record (comme sur la console) et le &lt;strong&gt;record_type&lt;/strong&gt; dans mon cas, un TXT mais ça aurait très bien pu être un A, un AAAA, un CNAME, etc.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;terraform import aws_route53_record.mytxtrecord ABCDE1234567890_awesomeexample.org_TXT
aws_route53_record.mytxtrecord: Importing from ID &amp;#34;ABCDE1234567890_awesomeexample.org_TXT&amp;#34;...
aws_route53_record.mytxtrecord: Import prepared!
Prepared aws_route53_record for import
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A l’issue de la commande, si tout s’est bien passé, vous devriez avoir un message qui indique le succès de l’opération et l’ajout du record dans le &lt;em&gt;state&lt;/em&gt; de votre terraform. Il ne reste plus qu’à rédiger le pavé HCL pour votre IaC qui a cette tête là dans mon exemple :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;resource &amp;#34;aws_route53_record&amp;#34; &amp;#34;mytxtrecord&amp;#34; {
zone_id = data.aws_route53_zone.awesomedomain.zone_id
name = &amp;#34;awesomeexample.org&amp;#34;
type = &amp;#34;TXT&amp;#34;
ttl = &amp;#34;60&amp;#34;
records = [&amp;#34;existingsuperimportantdata&amp;#34;]
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut commiter ça, puis faire nos modifications comme d’habitude et en toute sécurité :-)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;terraform plan
[...]
Terraform will perform the following actions:
# aws_route53_record.mytxtrecord will be updated in-place
~ resource &amp;#34;aws_route53_record&amp;#34; &amp;#34;mytxtrecord&amp;#34; {
fqdn = &amp;#34;awesomeexample.org&amp;#34;
id = &amp;#34;ABCDE1234567890_awesomeexample.org_TXT&amp;#34;
name = &amp;#34;awesomeexample.org&amp;#34;
~ records = [
+ &amp;#34;newtxtstring=veryimportantdata&amp;#34;,
&amp;#34;existingsuperimportantdata&amp;#34;,
]
~ ttl = 300 -&amp;gt; 60
type = &amp;#34;TXT&amp;#34;
zone_id = &amp;#34;ABCDE1234567890&amp;#34;
}
Plan: 0 to add, 1 to change, 0 to destroy.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="informationssources-additionnelles"&gt;Informations/sources additionnelles
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.terraform.io/docs/cli/import/index.html" target="_blank" rel="noopener"
&gt;www.terraform.io/docs/cli/import/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record" target="_blank" rel="noopener"
&gt;registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://hackernoon.com/how-to-migrate-an-existing-infrastructure-into-terraform-qn173uag" target="_blank" rel="noopener"
&gt;hackernoon.com/how-to-migrate-an-existing-infrastructure-into-terraform-qn173uag&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>