Une expérience locale rapide et facile de Cloud Foundry pour les développeurs via CF Dev / Stratos ou PCF Dev …

Image for post
Image for post

Je vais m’intéresser dans cet article à l’un projet de l’incubateur de Cloud Foundry à savoir CF Dev et son pendant chez Pivotal PCF Dev :

et qui fait suite à ce précédent article :

Pour rappel, Cloud Foundry est un PaaS open source qui permet de créer, de déployer, d’exécuter et de faire évoluer des applications sur des modèles de Cloud public et de Cloud privé. La plateforme est sous licence Apache 2.0 et prend en charge Java, Node.js, Go, PHP, Python et Ruby. Personnalisable, elle permet de programmer en plusieurs langages et sous plusieurs infrastructures. Cette caractéristique écarte le risque de dépendance vis-à-vis d’un fournisseur ; un problème fréquent en matière de PaaS.

Je commence par lancer une instance Ubuntu 18.04 chez Scaleway dôtée des fameux processeurs AMD EPYC avec des extensions virtualisation actives :

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

et j’y installe QEMU et Libvirt :

$ sudo apt install qemu-kvm libvirt-bin libvirt-doc

Après cela, je peux récupérer l’archive Linux de PCF Dev depuis Pivotal Network :

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

et le plugin cfdev :

Image for post
Image for post

Je lance PCF Dev avec le client (pour rappel, la gestion de l’infrastructure, Cloud Foundry utilise BOSH Director, un outil open source dédié à la gestion du déploiement et du cycle de vie de la plateforme) :

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

et je peux me connecter à ma plateforme locale :

Image for post
Image for post

ou graphiquement via la console web intégrée de Pivotal Application Services :

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

Petit test rapide de déploiement d’une application Node.js :

Image for post
Image for post

toujours via le client Cloud Foundry (cf cli) :

Image for post
Image for post

Une route m’est retournée que j’utilise pour visualiser mon application dans le navigateur web :

Image for post
Image for post

et elle apparaît dans la console :

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

J’en profite pour scaler cette application (à 4 instances ici) :

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

Autre test avec le traditionnel démonstrateur FranceConnect :

Image for post
Image for post

et avec la possibilité de scaler cette application depuis la ligne de commande :

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

et la route qui m’est retournée :

Image for post
Image for post

Il est également possible d’activer l’utilisation du moteur Docker via Diego dans la plateforme et je lance directement une image docker du démonstrateur FC Agent :

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

avec une route qui m’est retournée encore une fois :

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

ainsi que les logs de l’application :

Image for post
Image for post

le tout consomme un peu plus de 8 Go de mémoire vive sur la plateforme :

Image for post
Image for post

Autrement, il est aussi possible d’utiliser en open source CF Dev sur le dépôt github de l’incubateur Cloud Foundry. Je réutilise mon instance sur Scaleway pour l’installer :

$ cf install-plugin -r CF-Community cfdev

$ cf dev start

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

Comme on peut le voir, on utilise ici l’image Docker officielle de Stratos :

via ce manifest en YAML :

Image for post
Image for post

La console Stratos est accessible localement :

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

Je peux visualiser les buildpacks à disposition :

Image for post
Image for post

Je déploie en test le projet OpenAcademie qui utilise Next.js via son image Docker :

Image for post
Image for post

et ce fichier d’un manifest très simple en YAML :

Image for post
Image for post

L’application apparaît dans la console Stratos :

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

avec la route fournie :

Quand le déploiement de l’application est conforme on peut alors procéder à un déploiement dans un cluster Cloud Foundry grandeur nature. Déploiement ici dans Azure via le template ARM qui simplifie le processus de son installation :

Image for post
Image for post

avec ce type d’architecture :

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

et ces composants :

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

Je me connecte à la plateforme via la DevBox qui contient tout le nécessaire pour se connecter et déployer sur cette dernière :

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

Cela a généré le déploiement d’un peu plus de 16 machines virtuelles ici :

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

Je déploie la console Stratos de la même manière que précédemment :

Image for post
Image for post

et la console Stratos est accessible :

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

et j’utilise Gitlab et un pipeline pour automatiquement tester et déployer mon application du démonstrateur FranceConnect Agent sur cette plateforme :

Image for post
Image for post

Gitlab et son Runner tourne ici sous la forme de container Docker dans une instance Ubuntu :

Image for post
Image for post

Dans les sources du démonstrateur j’ai initialement placé le fichier .gitlab-ci.yml :

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

Les phases de test et de déploiement du pipeline sont activées automatiquement :

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

Le déploiement est réussi et je le visualise sur la console Stratos :

Image for post
Image for post

et je scale cette application (comme précédemment à 4 instances) :

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

La route m’est retournée pour que je puisse accéder publiquement à cette application (par le biais d’un service Wildcard DNS avec xip.io) :

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

PCF Dev et CF Dev sont des distributions de petite taille Cloud Foundry destinées à être exécutées localement sur une machine de développement. Elles fournissent rapidement les éléments essentiels de Cloud Foundry grâce à un ensemble condensé de composants qui seront complémentaire à à un processus d’intégration et de déploiement continu sur son cluster Cloud Foundry de production …

A noter que Kubernetes rejoint Cloud Foundry au travers du projet officiel Eirini (qui dérive du projet SUSE Cloud Foundry) :

Image for post
Image for post

On peut en retrouver une implémentation via SCF sur Microk8s ici :

A suivre en même temps que les nombreux autres projets de la fondation Cloud Foundry ! …

Image for post
Image for post
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