La version bêta de KIOWY Platform 🚀
est disponible ! En savoir +

Retour

5 outils incontournables pour développer avec Kubernetes 18.06.2021

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

Logo de 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

Logo de 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

Logo de 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 ! 😉