Comment simplifier le développement dans Kubernetes avec Cloud Code

Aujourd’hui, je vais vous parler d’un nouvel ensemble de plugins magiques pour IntelliJ Idea et Visual Studio Code.

Ce nouvel ensemble de plugins a été dévoilé par Google lors de la Google Next 2019 et s’appelle Cloud Code.

Cloud Code est conçu pour faciliter le développement dans Kubernetes via un linter de la structure, des valeurs et des erreurs descriptives. De plus, Cloud Code est fourni avec des solutions prêtes à l'emploi pour les fonctions courantes de saisie intelligente et de documentation par survol de la souris, il va permettre de simplifier la vie des développeurs sur Kubernetes de façon significative que ce soit pour :

  • Déploiement en un clic sur les clusters Kubernetes : Déployez sur vos clusters Kubernetes à l’aide de Skaffold, directement depuis votre IDE. Configurez Skaffold pour utiliser les stratégies de compilation et de déploiement de votre choix, que ce soit kubectl, Helm, Google Cloud Build (pour les builds distants), Jib ou Kaniko.

  • Développement en continu sur Kubernetes : Afin de maintenir une boucle interne de développement serrée, activez le déploiement continu pour que vos modifications soient appliquées quasiment en temps réel. Si vous modifiez votre configuration ou votre code Kubernetes, Cloud Code reconstruit le ou les conteneurs, et redéploie votre application sur le cluster.

  • Maintenance aisée des ressources Kubernetes : Surveillez vos ressources Kubernetes depuis votre IDE en diffusant et en visualisant les journaux de vos pods et conteneurs à l’aide de l'explorateur Kubernetes. L'utilisation de Cloud Code avec VS Code vous permet également de démarrer, d'arrêter et de suivre l'état de vos clusters à partir du tableau de bord du cluster.

  • Possibilité d'utiliser les fichiers de configuration Skaffold et les modifications YAML pour Kubernetes : Configurez rapidement les fichiers de schéma dans le respect des bonnes pratiques en vous appuyant sur des modèles intelligents, des extraits de code prêts à l'emploi et des saisies semi-automatiques basées sur le contexte et du linting (détection des erreurs formelles dans le code) et les mises en évidence des erreurs sont fournies pour les fichiers YAML de Kubernetes.

  • Outils de débogage : Cloud Code fournit une assistance au débogage pour les applications exécutées sur des clusters Kubernetes.

  • Création de cluster Kubernetes : Avec Cloud Code, vous pourrez déployer en quelques minutes et via votre IDE un cluster Kubernetes sur GCP, AWS ou Azure, ainsi que voir toutes les informations liées à votre cluster et ainsi interagir avec les différents éléments de votre cluster.

Autres fonctionnalités

Si VS Code et IntelliJ disposeront à l'avenir d'un même ensemble de fonctionnalités, l'offre actuelle comporte des fonctionnalités particulières à chaque IDE :

image7

Nous allons maintenant voir quelques fonctionnalités énoncées ci-dessus en pratique avec VS Code.

Installation de Cloud code :

Avant de montrer plus en détails quelques fonctionnalités de Cloud Code, il nous faut l’installer. Pour cela assurez-vous que les éléments suivants sont bien présents dans le PATH de votre machine afin de bénéficier entièrement des fonctionnalités délivrées par Cloud Code :

Si vous utilisez Google Cloud Platform (GCP), vous devez également :

Dans le cadre de cet article, nous allons installer Cloud Code sur VS Code.
Pour installer Cloud Code dans VS Code il n’y a rien de plus simple, il vous suffit d’ouvrir VS Code et d’aller dans l’onglet "Extensions" puis de rechercher Cloud Code et d’appuyer sur installer, vous devriez alors obtenir le résultat ci-dessous :

image2

Maintenant que Cloud Code est installé, vous pourrez voir (ci-dessous) sur votre barre d’icônes à gauche le logo de Cloud Code (que j’ai surligné en jaune). Et si vous cliquez sur le logo vous aurez le “Kubernetes explorer” qui va vous montrer tous vos clusters Kubernetes que ça soit en local ou sur GCP.

image9-2

Création de cluster Kubernetes

À partir de Cloud Code, on peut créer en quelques secondes un cluster Kubernetes, que ce soit sur GKE (Google Kubernetes Engine), EKS (Elastic Kubernetes Service) ou AKS (Azure Kubernetes Service).

Pour pouvoir créer par exemple un cluster GKE, je vais cliquer sur le rouage (en bas à gauche) ou (ctrl + shift + p) et taper Cloud Code pour chercher “Cloud Code : Create GKE cluster”.

image8

Je vais directement tomber sur un formulaire de création de cluster GKE, il suffira juste de cliquer sur “Create Cluster” et d’attendre 5 minutes et notre cluster sera créé et fonctionnel.

image4

On constate bien que dans le GKE explorer (ci-dessous) on retrouve tout en bas de notre IDE VS Code le cluster GKE “cluster-test” sur GCP, défini en tant qu’actif dans le cluster explorer.

On retrouvera aussi toutes les informations de notre cluster, que ce soit sur les différents noeuds du cluster, pod, service, deployments, etc….

Pour supprimer le cluster, il suffit de faire un clic droit et delete le cluster, c’est aussi simple que ça.

image3-1

Maintenant que nous avons pu voir qu’avec Cloud Code, nous pouvons créer un cluster Kubernetes sur les 3 principaux cloud providers, ce qui nous intéresse le plus, c’est de créer des Manifests Kubernetes de façon rapide, en respectant les Golden Rules Kubernetes. Afin de nous simplifier également la vie dans nos développements sur Kubernetes, voici quelques éléments qui vont nous simplifier la vie grâce à Cloud Code.

Template manifest Kubernetes

Si vous n’avez pas l’habitude d’écrire des fichiers YAML Kubernetes, cette option peut vous être très utile car elle vous facilite la création d’un nouveau fichier YAML.
Pour cela, allez sur un fichier vierge et nommez-le bien avec l’extension .yaml sinon cela ne fonctionnera pas. Puis, à l’aide de la commande (ctrl+espace), il va vous afficher les différents manifests Kubernetes possibles à créer, ce qui vous créera un fichier YAML Kubernetes sans erreur, dans le respect des bonnes pratiques. Il utilise des champs répétitifs afin de vous simplifier l’édition avec les différents labels et autres éléments Kubernetes.

image1

Maintenant que nous avons choisi le YAML Kubernetes Deployment, il nous génère tout le fichier YAML que vous pouvez voir ci-dessous, et grâce aux différents champs répétitifs, en quelques secondes j’ai pu créer et finir mon fichier Deployment.

image12-3

Saisie avec contexte

Sur la base du YAML Kubernetes, Cloud Code fournit des compléments contextuels et des documents pertinents pour vous aider à choisir la bonne option. Il vous donnera accès à tous les éléments concernant le manifest Kubernetes que vous aurez choisi, Deployment dans notre cas, avec la documentation associée.

image13

Documentation par survol de la souris

Il vous permettra avec un simple survol de votre souris sur une valeur du manifest Kubernetes, d’obtenir la documentation associée à l’élément survolé.

image6

Comparer des fichiers

Si vous souhaitez afficher les différences entre un fichier YAML dans le contrôle source et un fichier YAML déployé, utilisez la commande Cloud Code : Comparer le fichier JSON/YAML actuel avec la ressource Kubernetes déployée depuis la palette de commandes (accessible à partir du menu "Gérer" ). Vous obtenez une vue comparative mettant en opposition deux fichiers de manifest afin de les comparer aisément.

image5

Utiliser des secrets

Les cartes de configuration et les secrets sont des éléments essentiels de l'utilisation de Kubernetes. Pour afficher le contexte d'un secret en base64 avec Cloud Code, passez simplement la souris dessus pour le décoder.

image15-1

Le mot de la fin

Nous avons pu voir quelques éléments de Cloud Code qui, j’espère, vont vous simplifier la vie dans vos développements Kubernetes. Cependant, il reste encore plein de fonctionnalités très intéressantes que je ne vous ai pas montrées dans de cet article comme : le déploiement continu, le débogage de votre application dans Kubernetes ou encore comment voir les logs suite à votre déploiement Kubernetes grâce à Cloud Code. Maintenant, à vous de tester ce plugin vraiment intéressant et d’exploiter toutes ses fonctionnalités afin de vous faciliter le travail sur Kubernetes depuis votre IDE favori.