<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tanguy BAUDRIN</title>
    <description>The latest articles on DEV Community by Tanguy BAUDRIN (@tanguybaudrin).</description>
    <link>https://dev.to/tanguybaudrin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F425223%2F9498dea8-1a10-4476-a8ad-694341f4a8c2.jpeg</url>
      <title>DEV Community: Tanguy BAUDRIN</title>
      <link>https://dev.to/tanguybaudrin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanguybaudrin"/>
    <language>en</language>
    <item>
      <title>On déploie k3s sur raspberry !</title>
      <dc:creator>Tanguy BAUDRIN</dc:creator>
      <pubDate>Thu, 18 Mar 2021 00:00:00 +0000</pubDate>
      <link>https://dev.to/tanguybaudrin/on-deploie-k3s-sur-raspberry-1f2e</link>
      <guid>https://dev.to/tanguybaudrin/on-deploie-k3s-sur-raspberry-1f2e</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfulpp0a15mtq66fkdf7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfulpp0a15mtq66fkdf7.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes, sur des raspberry ? Mais, pourquoi, comment ?
&lt;/h2&gt;

&lt;p&gt;Tout commença début 2019, a l'époque la guerre des orchestrateurs de conteneurs était en train de s'achever, et &lt;strong&gt;Kubernetes était en train de s'imposer&lt;/strong&gt;. OpenShift avait déjà abandonné son moteur maison pour basculer sur kubernetes, Rancher abandonnait également son moteur maison depuis la version 2.0.&lt;/p&gt;

&lt;p&gt;Il était alors temps pour moi d'en apprendre plus sur Kubernetes, mais avoir &lt;strong&gt;un cluster kubernetes ce n'est pas gratuit&lt;/strong&gt; et je souhaitais minimiser les investissements tout en ayant une solution pérenne dans le temps. Les solutions permettant d'avoir un "cluster" sur sa machine &lt;em&gt;(minikube par exemple)&lt;/em&gt; devenaient trop limitantes pour pouvoir continuer à apprendre, il fallait que je puisse &lt;strong&gt;réellement jouer avec un cluster&lt;/strong&gt; qui comporte plusieurs machines.&lt;/p&gt;

&lt;p&gt;C'est à peu près au même moment qu'un certain &lt;a href="https://twitter.com/ibuildthecloud" rel="noopener noreferrer"&gt;Darren shepherd&lt;/a&gt; &lt;em&gt;(Co-fondateur de la société Rancher)&lt;/em&gt; sortait une nouvelle &lt;strong&gt;distribution kubernetes, sobrement appelée k3s&lt;/strong&gt; &lt;em&gt;(k8s, mais plus léger)&lt;/em&gt; dont l'objectif était d'avoir la version la plus légère possible de kubernetes. Avec une fonctionnalité très importante, le &lt;strong&gt;support des processeurs ARM&lt;/strong&gt; !&lt;/p&gt;

&lt;p&gt;Il ne m'en fallait pas beaucoup plus pour sortir un raspberry d'un tiroir &lt;em&gt;(Pi 3 à l'époque)&lt;/em&gt; et &lt;strong&gt;commencer à monter mon cluster&lt;/strong&gt; !&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclaimer : Je ne vais pas m'attarder sur la partie installation "from scratch" de chacun des composants d'administration du cluster kubernetes, pour ça je vous recommande d'aller consulter le tutoriel de &lt;a href="https://twitter.com/kelseyhightower" rel="noopener noreferrer"&gt;Kelsey Hightower&lt;/a&gt;, &lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way" rel="noopener noreferrer"&gt;Kubernetes the hard way&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation de K3s sur un raspberry
&lt;/h2&gt;

&lt;p&gt;De nombreux tutoriels existent déjà pour l'installation de k3s et si vous voulez vous lancer, je vous recommande l'article de &lt;a href="https://twitter.com/alexellisuk" rel="noopener noreferrer"&gt;Alex Ellis&lt;/a&gt; qui m'a servi de tutoriel pour déployer mon cluster la première fois &lt;a href="https://blog.alexellis.io/test-drive-k3s-on-raspberry-pi/" rel="noopener noreferrer"&gt;https://blog.alexellis.io/test-drive-k3s-on-raspberry-pi/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En suivant le tutoriel, vous arriverez rapidement à la phase d'&lt;strong&gt;installation de k3s&lt;/strong&gt;, et pour le coup &lt;strong&gt;c'est très simple&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ curl -sfL https://get.k3s.io | sh -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et c'est tout... C'est pour moi le point fort de cette solution et qui va me permettre d'explorer facilement et ne pas avoir peur de &lt;strong&gt;"crasher"&lt;/strong&gt; le cluster tant il est facile de le reconstruire.&lt;/p&gt;

&lt;p&gt;Dans les secondes qui suivent vous devriez être en mesure d'interroger votre cluster pour avoir les noeuds qui sont disponibles &lt;em&gt;(en l'occurrence un seul noeud)&lt;/em&gt; et voir son état&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ kubectl get nodes
NAME           STATUS   ROLES                  AGE   VERSION
k3s-master     Ready    control-plane,master   38s   v1.20.2+k3s1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ok, j'ai un kubernetes fonctionnel, mais je suis loin d'avoir un cluster ?
&lt;/h2&gt;

&lt;p&gt;En effet ! Mais cette configuration m'a déjà permis de &lt;strong&gt;faire mes armes pendant plusieurs semaines&lt;/strong&gt; &lt;em&gt;(ça prend du temps de commander un raspberry parfois ^^)&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Alors clairement vous ne pourrez &lt;strong&gt;pas déployer de solutions consommatrices en ressources avec cette configuration&lt;/strong&gt;, pour ma part j'ai tout de suite voulu mettre en place du monitoring à base de prometheus &lt;strong&gt;(quand on a goûté au DevOps on ne s'en passe plus :p)&lt;/strong&gt; et clairement un raspberry pi3 seul n'est pas suffisant pour ça. J'ai quand même pu déployer &lt;strong&gt;une application PHP, avec une base de données&lt;/strong&gt;, le tout utilisant un partage NFS sur mon NAS pour la persistance de données.&lt;/p&gt;

&lt;p&gt;Un vrai premier cas d'usage en réalité, avec la possibilité de jouer avec &lt;strong&gt;les volumes, les cronjobs, les ingress, etc...&lt;/strong&gt; Mais j'ai réellement pu commencer à travailler des notions plus complexes avec l'arrivée de mon deuxième raspberry, et donc &lt;strong&gt;l'installation de mon premier agent&lt;/strong&gt;. L'installation est toujours très simple, et la principale différence vient de l'ajout d'un fichier de configuration pour donner les informations de connexion et d'enregistrement auprès du premier noeud du cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Dans le fichier /etc/rancher/k3s/config.yaml
token: &amp;lt;&amp;lt; token pour s'authentifier auprès du master &amp;gt;&amp;gt;
server: &amp;lt;&amp;lt; IP du premier raspberry &amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Puis de lancer la commande d'installation, en précisant qu'on installe un agent cette fois-ci :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ curl -sfL https://get.k3s.io | sh -s agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et quelques secondes plus tard on obtient :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ kubectl get nodes
NAME           STATUS   ROLES                  AGE   VERSION
k3s-worker-1   Ready    &amp;lt;none&amp;gt;                 50s   v1.20.2+k3s1
k3s-master     Ready    control-plane,master   38d   v1.20.2+k3s1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Une fois qu'on commence à avoir plusieurs machines on va pouvoir se rendre compte un peu plus &lt;strong&gt;des contraintes du modèle distribué&lt;/strong&gt;. Avec notamment la gestion de &lt;strong&gt;volumes partagés&lt;/strong&gt;, la gestion du &lt;strong&gt;réseau entre les différents noeuds&lt;/strong&gt; etc... On peut réellement commencer à parler de cluster !&lt;/p&gt;

&lt;h2&gt;
  
  
  Ok, c'est bien mais aujourd'hui il sert à quoi ce cluster ?
&lt;/h2&gt;

&lt;p&gt;Personnellement après plus de deux ans, je dois dire que ce cluster a été &lt;strong&gt;un outil clef dans ma veille et dans mon apprentissage de Kubernetes&lt;/strong&gt;. J'y aie depuis rajouté un troisième raspberry &lt;em&gt;(un pi 4 avec 4 Go de ram cette fois-ci !)&lt;/em&gt; qui est devenu le master de mon cluster. Pendant un temps, j'ai eu besoin d'un agent avec un processeur x86, et j'avais donc &lt;strong&gt;une VM Hyper-V sur un serveur windows avec un agent k3s installé&lt;/strong&gt;, et ça fonctionne très bien !&lt;/p&gt;

&lt;p&gt;Ce dernier cas d'usage m'a d'ailleurs permis d'explorer &lt;strong&gt;les taints et les tolerations&lt;/strong&gt; au niveau de kubernetes pour déployer les pods qui avaient besoin d'un processeur x86 sur le bon noeud automatiquement.&lt;/p&gt;

&lt;p&gt;Au final, je vous l'accorde, &lt;strong&gt;l'utilisation de kubernetes n'est absolument pas nécessaire&lt;/strong&gt;, et je pourrais tout déployer sans avoir à l'installer. Mais le fait de se contraindre à utiliser la solution presque au quotidien &lt;strong&gt;m'a permis de soulever pas mal de problématiques&lt;/strong&gt; et de comprendre plus en détail le fonctionnement d'un cluster kubernetes. Aujourd'hui, je n'en ai clairement plus besoin pour l'apprentissage &lt;em&gt;(j'ai la chance de faire beaucoup de kubernetes en mission, et même de donner des formations sur le sujet)&lt;/em&gt;, mais je continue quand même de le maintenir et de l'utiliser &lt;strong&gt;pour sa facilité à être maintenu dans le temps&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Dans un prochain article sur le sujet je vous partagerais plus de détails sur les différents éléments que j'ai déployé dans ce cluster avec les contraintes associées, à commencer par la gestion du trafic entrant, la gestion du monitoring, la gestion des volumes, etc...&lt;/p&gt;

&lt;p&gt;En attendant n'hésitez pas &lt;strong&gt;à réagir en me posant des questions&lt;/strong&gt; ou en partageant cet article&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>kubernetes</category>
      <category>k3s</category>
    </item>
    <item>
      <title>Le DevOps, c'est quoi exactement ?</title>
      <dc:creator>Tanguy BAUDRIN</dc:creator>
      <pubDate>Fri, 05 Mar 2021 00:00:00 +0000</pubDate>
      <link>https://dev.to/tanguybaudrin/le-devops-c-est-quoi-exactement-3mjd</link>
      <guid>https://dev.to/tanguybaudrin/le-devops-c-est-quoi-exactement-3mjd</guid>
      <description>&lt;p&gt;&lt;strong&gt;Pour ce premier article, je vous propose un edito ou je vous partage ma vision et ma compréhension de ce qui aujourd'hui est devenu un "buzz-word"&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DevOps, ça veut dire quoi ?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Le devops — ou DevOps (selon la graphie habituellement utilisée en langue anglaise) — est un mouvement en ingénierie informatique et une pratique technique visant à l'unification du développement logiciel (dev) et de l'administration des infrastructures informatiques (ops), notamment l'administration système.&lt;/p&gt;
&lt;br&gt;
— &lt;cite&gt;&lt;a href="https://fr.wikipedia.org/wiki/Devops"&gt;Wikipedia&lt;/a&gt;&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;p&gt;Comme le décrit si bien Wikipedia, le DevOps c'est avant tout un &lt;strong&gt;mouvement&lt;/strong&gt;, une &lt;strong&gt;philosophie&lt;/strong&gt;, au même titre que d'autres mouvement bien connus comme l'Agilité avec lequel il a d'ailleurs de fort liens.&lt;/p&gt;

&lt;p&gt;Aujourd'hui le terme est devenu &lt;strong&gt;"à la mode"&lt;/strong&gt; dans le monde de l'informatique et on le retrouve dans de nombreux &lt;strong&gt;usages qui ne sont pas adapté&lt;/strong&gt; (Non, non, DevOps ne sers pas à qualifier une personne qui sais écrire du code et administrer un serveur)&lt;/p&gt;

&lt;h2&gt;
  
  
  Et quel est le but ?
&lt;/h2&gt;

&lt;p&gt;Le mouvement DevOps est la suite naturelle &lt;strong&gt;du mouvement Agile&lt;/strong&gt;, ce mouvement ayant à l'origine pour objectif de permettre aux &lt;strong&gt;équipes métiers&lt;/strong&gt; et aux &lt;strong&gt;équipes de développement&lt;/strong&gt; de travailler ensemble à l'optimisation de la &lt;strong&gt;production de valeur ajoutée&lt;/strong&gt; directement pour les utilisateurs.&lt;/p&gt;

&lt;p&gt;Le mouvement DevOps partage ce &lt;strong&gt;même objectif&lt;/strong&gt;, mais en incluant également les &lt;strong&gt;équipes opérationnelles&lt;/strong&gt; &lt;em&gt;(Ingénieurs réseau, Administrateurs système, Administrateurs de base de données etc...)&lt;/em&gt; dans la recherche de la meilleure façon de produire de la &lt;strong&gt;valeur ajouté pour les utlisateurs finaux&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Vous l'aurez donc compris l'objectif du mouvement Devops est d'embrasser l'ensemble des équipes IT et de rayonner bien aux-delà des "simples" équipes de développement ou d'opérationnels &lt;em&gt;(On entends même aujourd'hui parler de DevSecOps, et pouquoi pas un jour de DevSecFinOps...)&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ok, mais comment ça fonctionne ?
&lt;/h2&gt;

&lt;p&gt;Dans les &lt;strong&gt;concepts&lt;/strong&gt; que l'on va retrouver dans la &lt;strong&gt;mise en place du mouvement DevOps&lt;/strong&gt; au sein d'une organisation on retrouvera systématiquement différentes notions&lt;/p&gt;

&lt;h3&gt;
  
  
  Observabilité
&lt;/h3&gt;

&lt;p&gt;L'un des piliers du mouvement DevOps est l'&lt;strong&gt;observabilité&lt;/strong&gt;, l'observabilité comme son nom l'indique, consiste à rendre "observable" son SI et les différentes solutions déployées. Cela va bien souvent consister à &lt;strong&gt;exposer des "métriques"&lt;/strong&gt; &lt;em&gt;(latence, temps de réponse, nombre d'utilisateurs)&lt;/em&gt; dans le but de mesurer de manière &lt;strong&gt;objective et factuelle&lt;/strong&gt; le niveau de service rendu à l'utlisateur. Cela ne comprends donc pas que des &lt;strong&gt;indicateurs technique&lt;/strong&gt;s, mais aussi des &lt;strong&gt;indicateurs métier&lt;/strong&gt; &lt;em&gt;(satisfaction client, taux de rebond, engagement des utilisateurs)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Automatisation
&lt;/h3&gt;

&lt;p&gt;Une autre brique importante va être la mise en place d'un maximum &lt;strong&gt;d'automatisation&lt;/strong&gt; dans les process de déploiement et de maintenance des solutions. L'objectif étant d'avoir des &lt;strong&gt;actions répétables, traçables et qui minimisent au maximum le risque d'erreur humaine&lt;/strong&gt;. On va alors mettre en place des processus d'intégration continue, &lt;/p&gt;

&lt;h3&gt;
  
  
  Gestion des incidents
&lt;/h3&gt;

&lt;p&gt;Comme pour l'agilité, le mouvement DevOps prone &lt;strong&gt;l'amélioration continue&lt;/strong&gt;, et cela va passer par la mise en place de pratiques de &lt;strong&gt;gestion d'incident&lt;/strong&gt; décrites et appliquées. Dans les phases les plus avancées de la mise en place du mouvement DevOps on va commencer à parler de &lt;strong&gt;"Chaos Engineering"&lt;/strong&gt; ou l'on va volontairement couper des services au niveau de l'infrastructure pour valider le bon fonctionnement de son service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Et en pratique comment je mets en place tout ça ?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dans la pratique&lt;/strong&gt; le DevOps en tant que tel, et bien &lt;strong&gt;ça n'existe pas&lt;/strong&gt;... En réalité, il n'y a pas de &lt;strong&gt;recette toute faite&lt;/strong&gt; pour la mise en place du DevOps, celle-ci doit être &lt;strong&gt;adapté au contexte&lt;/strong&gt; de l'entreprise ou de l'équipe qui souhaite le mettre en place. &lt;/p&gt;

&lt;p&gt;Dans les faits, on retrouve souvent aujourd'hui la mise en place du &lt;strong&gt;"&lt;a href="https://sre.google"&gt;Site reliability engineering&lt;/a&gt;"&lt;/strong&gt; (ou SRE), qui est une approche pratique de la démarche qui est &lt;strong&gt;proposée par Google&lt;/strong&gt;. Elle apporte des solutions concrète a mettre en pratique (SLI/SLA/SLO, Error budget, Post-morter). Mais &lt;strong&gt;le "SRE" n'est pas le "DevOps"&lt;/strong&gt;, tout comme le SCRUM n'est pas l'agilité. Pour faire une analogie dans le monde du &lt;strong&gt;développement orienté objet&lt;/strong&gt;, on peut considérer que le &lt;strong&gt;DevOps est une classe abstraite&lt;/strong&gt;, et que &lt;strong&gt;le SRE est une implémentation&lt;/strong&gt; de cette classe abstraite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;J'espère que cet article vous aura aidé à y voir plus clair sur ce qu'est le DevOps&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>edito</category>
      <category>devops</category>
      <category>sre</category>
    </item>
  </channel>
</rss>
