Cloud Native Infrastructure as Code avec Pulumi : création d’un cluster Kubernetes et déploiement d’applications …
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 :
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 :
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) :
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 :
Et les Resource Groups sont visualisables sur le portail Azure :
Le serveur Nginx a reçu l’adresse IP publique par le biais du service de loadbalancing induit dans AKS :
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 :
et visualisable dans Rancher :
La destruction de l’ensemble des stacks est rapide :
D’autres exemples sont présents sur le dépôt Github en Python ou en JavaScript :
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) …
A suivre ! …