Cloud Native Infrastructure as Code avec Pulumi : création d’un cluster Kubernetes et déploiement d’applications …

Image for post
Image for post

J’avais déjà parlé de Pulumi dans un précédent article. Et cette fois-çi je vais l’utiliser pour la création d’un cluster Azure Kubernetes Service (AKS) et le déploiement d’un chart Helm dans celui-çi, le tout dans un programme Pulumi. Pour cela installation dans un premier temps de Pulumi via ce script :

$ curl -fsSL https://get.pulumi.com | sh

Comme le rappelait OCTO dans un de ces articles, le déploiement dans le cloud des multiples briques distribuées qui constituent une application Cloud Native est une tâche complexe. Les Cloud Native Languages dont fait partie Pulumi existent avant tout pour faciliter les déploiements dans le cloud. Cet article permet de découvrir de quelle manière Pulumi amène la force des langages de programmation dans le monde de l’Infrastructure as Code :

Image for post
Image for post

sur un grand nombre de plateformes …

Je récupère les exemples du dépôt de Pulumi sur Github :

J’initie ma stack :

$ pulumi stack init

et j’initie le dépôt Bitnami pour Helm nécessaire à ce test :

Image for post
Image for post

La configuration des credentials dans Azure est appliquée :

Je modifie les fichiers TypeScript fournis dans le dépôt Github pour ce déploiement (un langage de programmation libre et open source qui a pour but d’améliorer et de sécuriser la production de code JavaScript). TypeScript un sur-ensemble de JavaScript (c’est-à-dire que tout code JavaScript correct peut être utilisé avec TypeScript). Le code TypeScript est transcompilé en JavaScript, pouvant ainsi être interprété par n’importe quel navigateur web ou moteur JavaScript (ce qui est le cas avec Pulumi) :

Le projet apparaît sur le dashboard de Pulumi :

Je dois également installer les dépendances Node.js (décrites dans le fichier package.json) :

Image for post
Image for post
package.json

Je n’ai pu qu’à lancer la création de ma stack (on remarque l’utilisation de terraform ici) qui va installer Nginx via un chart Helm fourni par Bitnami :

$ pulumi up

qui se termine correctement :

Image for post
Image for post

Et les Resource Groups sont visualisables sur le portail Azure :

Image for post
Image for post
Image for post
Image for post

Le serveur Nginx a reçu l’adresse IP publique par le biais du service de loadbalancing induit dans AKS :

Image for post
Image for post
Image for post
Image for post

Je peux raccorder ce cluster à un serveur Rancher (toujours en utilisant une instance externe dans Outscale) :

et je peux voir le déploiement de Nginx et du service associé dans Rancher :

Les credentials nécessaire à la connexion au cluster AKS sont obtenus via Pulumi :

Avec ce cluster AKS actif, je réalise un autre exemple de déploiement avec une stack Wordpress toujours via les charts Helm fournis par Bitnami et le dépôt de Pulumi sur Github :

Je crée un nouveau projet :

via ce fichier TypeScript :

et je lance le déploiement de ma stack :

Wordpress est disponible via une adresse IP publique fournie dans AKS :

Image for post
Image for post

et visualisable dans Rancher :

La destruction de l’ensemble des stacks est rapide :

Pulumi est donc un outil open source permettant de créer, déployer et gérer une application cloud native et son infrastructure en utilisant un langage de programmation tel que Node.js, Go ou encore Python (avec un déploiement de l’infrastructure décrite par un développeur dans un programme) …

Image for post
Image for post
Image for post
Image for post

A suivre ! …

Image for post
Image for post

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store