Serverless : Kubernetes dans Jelastic Cloud avec le fournisseur Virtual Kubelet pour Azure Container Instances …

Image for post
Image for post

J’en avais parlé dans un article précédent, Jelastic est un fournisseur de services cloud associant PaaS et CaaS dans un même package destiné aux hébergeurs, aux entreprises de télécommunication, aux entreprises et aux développeurs. Jelastic Cloud permet de créer en quelques clics des environnements de développement sur mesure avec des ressources totalement extensibles. Je pars du catalogue Jelastic Cloud Union pour selectionner un fournisseur en ligne pour la réalisation de mon test :

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 profite de la possibilité offerte par la plateforme Jelastic de provisionner un cluster Kubernetes :

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

avec ce type de structure :

Image for post
Image for post

et ce type de cinématique :

Image for post
Image for post
https://cdn-images-1.medium.com/max/1600/0*6NLk8rIRPDYRceIb.jpg

A noter que Jelastic fournit le paquet JPS basé sur un manifeste d’installation en JSON. Ce fichier est utilisé pour décrire les processus de création de l’environnement, le déploiement et la configuration des applications, l’allocation des ressources et l’établissement des limites de mise à l’échelle pour chaque serveur dans un environnement :

Image for post
Image for post

Le fichier JPS relatif à l’installation de Kubernetes est présent sur Github :

Je provisionne donc un cluster Kubernetes composé d’un noeud maître et de deux noeuds workers :

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

Le cluster est déployé avec le token d’accès nécessaire à la connexion au tableau de bord de Kubernetes :

Image for post
Image for post

que je peux utiliser immédiatement :

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

Je peux visualiser la structure du cluster dans le tableau de bord de la plateforme Jelastic Cloud :

Image for post
Image for post

Je bénéficie à la console du noeud maître :

Image for post
Image for post

et des statistiques relatives aux ressources consommées pour ces noeuds :

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

Pour profiter du client Kubectl sur ma station, j’expose l’endpoint du noeud maître publiquement :

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

et je récupère le fichier Kubeconfig en connexion SSH :

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

Une fois récuperé, je peux utilisé Kubectl sur ma station pour lancer des commandes sur le cluster Kubernetes :

Image for post
Image for post

Un service Helloworld utilisant l’Ingress controller avec Traefik est déjà présent :

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

Certains ports étant ouverts par défaut pour ce cluster dans Jelastic :

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

Sur le cloud Outscale, je provisionne comme d’habitude une instance Rancher Server que je vais lier à ce cluster Kubernetes dans Jelastic :

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 alors importer ce cluster dans Rancher :

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 dispose là encore d’une console shell pour invoquer mes commandes dans ce cluster via le portail de Rancher Server :

Image for post
Image for post

Je vais rajouté à ce cluster un noeud virtuel via le fournisseur Virtual Kubelet offert par le biais d’Azure Container Instances. Pour rappel, les nœuds virtuels sont construits sur le projet open-source Virtual Kubelet (VK). VK a été lancé lors de KubeCon 2017 afin d’entamer une conversation avec la communauté sur la manière dont l’API Kubernetes pourrait être étendue pour déployer et gérer des conteneurs dans des environnements informatiques non traditionnels comme ACI :

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

Helm est déjà préinstallé dans ce cluster et je fournis la configuration du RBAC :

Image for post
Image for post
Image for post
Image for post
rbac-config.yaml

et j’installe ce noeud virtuel avec Helm :

Image for post
Image for post

Le noeud virtuel est présent et actif :

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

On obtient une structure finale de ce type :

Image for post
Image for post

Je lance un déploiement test d’une image de test Helloworld pour ce noeud virtuel :

Image for post
Image for post

L’image apparaît en exécution dans un POD dans Rancher Server :

Image for post
Image for post

avec une adresse IP publique déjà attribuée et que j’utilise pour visualiser la page web de test :

Image for post
Image for post

Le container est bien en exécution dans ce noeud virtuel :

Image for post
Image for post

Je réalise un autre test avec le traditionnel démonstrateur FC Agent :

Image for post
Image for post

avec ce manifest :

Image for post
Image for post

Le déploiement apparaît dans Rancher :

Image for post
Image for post

Là également une adresse IP publique (fournie par l’intermédiaire d’ACI) me permet d’accéder au démonstrateur FC Agent :

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

Le tout est présent dans le portail Azure avec Azure Container 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

Il est possible également de procéder à un déploiement régulier de ce démonstrateur dans le cluster Kubernetes sur la base des noeuds de la plateforme Jelastic :

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

que je scale à 4 pods :

Image for post
Image for post

je n’ai pu qu’à exposer ce déploiement et à utiliser l’Ingress Controller avec traefik :

Image for post
Image for post

et par l’endpoint public fourni par défaut dans la plateforme Jelastic, j’accède au démonstrateur FC Agent :

Image for post
Image for post

Je peux utiliser le NodePort pour y accéder également via la configuration de ports dans le portail de la plateforme Jelastic :

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

A partir du démonstrateur en exécution sur le noeud virtuel et celui en exécution dans le cluster provisionné dans Jelastic, je peux lancer un gestionnaire de trafic (un serveur Nginx en mode LoadBalancer) via le marketplace présent avec ce fournisseur Suisse :

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

Le gestionnaire de trafic déployé, je récupère l’endpoint public qui pointe donc sur l’IP publique dans ACI et l’endpoint public par défaut dans le cluster Kubernetes au sein de la plateforme Jelastic :

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

Le test terminé, je peux simplement supprimer le noeud virtuel :

Image for post
Image for post

Il est possible d’aller plus loin notamment en mettant cette fois-çi un noeud virtuel “Windows” comme expliqué dans cet article précédent :

Jelastic continue à évoluer au fur et à mesure de ses nouvelles versions et fonctionnalités …

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