👉
À dĂ©couvrir dans notre dernier article de blog

5 outils incontournables pour développer avec Kubernetes Publié le Invalid date

Que vous en soyez à vos premiers pas, ou que vous soyez un véritable adepte, développer des applications sur Kubernetes peut vite virer au cauchemar quand on n'a pas les bons outils. Voici notre top 5 des outils incontournables à maßtriser pour que travailler avec Kubernetes soit un vrai plaisir !

Telepresence

DĂ©velopper avec Kubernetes est souvent perçu comme une surcharge de travail pour les dĂ©veloppeurs. đŸ€Ż Ils se demandent souvent “comment tester mon code dans un cluster ?”. Pourtant, de nombreuses solutions existent, et nĂ©cessitent bien souvent d’avoir un cluster sur sa machine de dĂ©veloppement. On peut par exemple citer minikube, kind ou encore docker-compose. Ces clusters sont souvent limitĂ©s et trĂšs diffĂ©rents d’un cluster de production.

C’est lĂ  qu’intervient Telepresence. Cet outil vous permet d'exĂ©cuter un processus ou un conteneur directement au sein d’un cluster existant. Voyons un exemple :

Vous accédez à un cluster Kubernetes via kubectl depuis votre machine. Vous avez un serveur web Django sur votre machine et vous souhaitez le tester au sein du cluster.

Vous pouvez dĂ©marrer le serveur localement, et Telepresence va crĂ©er un proxy au sein du cluster qui redirigera tous les appels rĂ©seaux vers votre serveur Django. Votre serveur sera exĂ©cutĂ© comme s'il Ă©tait au sein du cluster, mais tout en Ă©tant sur votre machine. Vous pourrez changer le code et voir le rĂ©sultat en temps rĂ©el, ou encore utiliser le dĂ©boggueur de votre IDE prĂ©fĂ©rĂ© ! 😍

Telepresence devient vite l’ami du dĂ©veloppeur Kubernetes. Vous pouvez tester votre code sur le cluster le plus proche de la production sans engorger votre machine. PlutĂŽt cool non ?

Helm

Helm est Ă  Kubernetes ce que apt est Ă  Ubuntu. Il agit comme un gestionnaire de paquet pour votre cluster. Un package Helm est appelĂ© "Chart", et regroupe un ensemble de manifests Kubernetes en exposant les variables Ă  adapter lors de l’installation.

Et c'est pas fini ! Helm est aussi un excellent moyen de packager et de distribuer une application pour Kubernetes. Il est possible de les partager sur des dépÎts afin que chacun puisse en bénéficier (ou créer un dépÎt interne privé).

Bref, Helm simplifie la vie des Ops en industrialisant le processus d’installation et de mise Ă  jour d’applications Kubernetes standards (ex. service Mesh, base de donnĂ©es... ). Cet outil simplifie Ă©galement le packaging et la distribution d’applications Cloud Natives.

Helmfile

Chez KIOWY 🚀, on aime beaucoup l’infrastructure as code. đŸ„° Pour que cela soit possible, il faut absolument que toute la description de l’infrastructure soit stockĂ©e dans un dĂ©pĂŽt Git. Lors de notre adoption de Helm, nous nous sommes vite rendu compte d’une limite : installer une chart Helm n’est pas possible dĂ©clarativement.

En effet, installer une chart dans un cluster revient Ă  exĂ©cuter la commande helm install avec l’ensemble des options souhaitĂ©es. Nous avons donc commencĂ© par stocker toutes les installations dans un script shell, jusqu’au jour oĂč nous avons dĂ©couvert la solution : helmfile.

Helmfile vous permet de dĂ©clarer l’état souhaitĂ© de votre cluster dans un seul fichier (helmfile) et va synchroniser le contenu de ce fichier avec les charts Helm de votre cluster. Nous avons donc simplifiĂ© notre processus de dĂ©ploiement continu : modifier le helmfile > git push > la CI exĂ©cute la commande helmfile. Cela simplifie grandement le travail des Ă©quipes qui gĂšrent les clusters, et assure une meilleure traçabilitĂ© de ce qui est installĂ©.

Kustomize

AprĂšs avoir “kubernetisĂ©â€ un certain nombre d’applications, on se rend vite compte d’une chose : on ne fait que rĂ©pĂ©ter en boucle 90% du mĂȘme code YAML. Beaucoup d’applications sont conçues sur la mĂȘme architecture (Webapp, API, Backend), et on a parfois envie d’ajouter un peu de logique et de gĂ©nĂ©ration automatique Ă  notre YAML.

Prenons un exemple simple : les labels. C’est une bonne pratique de bien identifier les ressources du cluster via des labels. Pour cela, on pourra ajouter un label app=ma-super-application. Mais comment s’assurer que si un dĂ©veloppeur crĂ©e une nouvelle ressource YAML, il ajoutera ce label ? Et sans se tromper ? Que se passerait-il si le nom de l’application venait Ă  changer ? Est-ce que je dois changer mes 218 fichiers YAML et devenir un as du "chercher+remplacer" ?

Il existe une solution : Kustomize. Avec cet outil, vous pouvez dĂ©finir des objets YAML de base, et intĂ©grer ensuite des modifications (variantes), ainsi que rĂ©aliser des actions lors de la gĂ©nĂ©ration du YAML final (crĂ©er des secrets, ajouter des labels communs,...). Et tout cela de maniĂšre dĂ©clarative ! Chez KIOWY 🚀 ça nous plait ! Et nous utilisons dĂ©sormais Kustomize dans tous nos projets. Cerise sur le gĂąteau : Kustomize est intĂ©grĂ© Ă  kubectl donc pour dĂ©ployer rien de plus simple : kubectl apply -k <path>

Kubetail

Nous voilĂ  dĂ©jĂ  arrivĂ©s Ă  la prĂ©sentation du dernier outil et pas des moindres : Kubetail. Ce petit utilitaire en ligne de commande permet de rĂ©aliser une action simple mais oh combien utile : streamer les logs de plusieurs pods en mĂȘme temps !

Si vous ĂȘtes vous aussi un adepte de Kubernetes, peut-ĂȘtre avez vous dĂ©jĂ  vĂ©cu ce moment oĂč l’on est Ă  la recherche d'une erreur sur un service, mais notre service est assurĂ© par plusieurs (beaucoup) de pods. La commande kubectl logs ne nous permet de voir qu’un seul pod Ă  la fois, et bien souvent on se retrouve alors Ă  afficher les logs de chaque pods un par un... et si on n'a pas l’autocomplĂ©tion kubectl, cela devient vraiment trĂšs long... 😓

Avec Kubetail, c’est trĂšs simple ! Si vos pods commencent par le nom app1 par exemple, il suffit d'exĂ©cuter kubetail app1 pour voir les logs de tous les pods app1 (avec coloration des lignes et tout et tout !). Mais Kubetail va encore plus loin : vous pouvez afficher les logs de plusieurs pods de noms diffĂ©rents, de plusieurs conteneurs, ou mĂȘme chercher des noms via des regex : avec Kubetail tout est possible !

Ainsi s’achĂšve notre top 5 des outils incontournables avec Kubernetes ! MĂȘme si c'est un bon dĂ©but, il en existe des centaines d'autres Ă  ajouter dans votre boĂźte Ă  outils pour simplifier l'utilisation de Kubernetes.

N'hĂ©sitez pas Ă  contacter la team KIOWY Ă  [email protected] (ou via le chat en ligne) pour vous aider Ă  y voir plus clair 💡ou alors tout simplement si vous souhaitez nous parler du dernier outil que vous avez dĂ©couvert ! 😉

Nos derniers articles

7 bonnes pratiques opérationnelles K8S

Reminder de l’édition 2021 du Calendrier de l’Avent du Cloud et excellentes premiĂšres pierres pour amĂ©liorer vos habitudes, voici 7 bonnes pratiques opĂ©rationnelles pour la gestion de votre cluster Kubernetes.

Comment synchroniser automatiquement votre DNS externe avec Kubernetes ?

Quand tout est automatisé sur un cluster Kubernetes, déployer une application devient automagique ! Et pourtant il y a une étape qui reste manuelle : la synchronisation du DNS externe.

5 outils incontournables pour développer avec Kubernetes

DĂ©velopper des applications sur Kubernetes peut vite virer au cauchemar quand on n'a pas les bons outils. Voici 5 outils incontournables Ă  maĂźtriser pour que travailler avec Kubernetes soit un vrai plaisir !