Serverless : Déployer une application Single Page (SPA) via OpenFaaS et K3S …
Karim
Posted on August 24, 2019
Serverless : Déployer une application Single Page (SPA) via OpenFaaS et K3S …
Pour commencer cette expérience, déploiement d’un premier noeud Ubuntu 18.04 LTS de type CX11 (à 1 vCPU et 2 Go RAM) dans Hetzner Cloud :
en utilisant K3S et ce fichier cloud-init (en tant que noeud maître du cluster Kubernetes) :
Le noeud maître est prêt :
Puis je déploie trois autres noeuds Ubuntu 18.04 LTS (toujours de type CX11 à 1 vCPU et 2 Go de mémoire vive) via ce fichier cloud-init :
Le cluster Kubernetes est en fonction :
J’utilise comme d’habitude ZeroTier en conjonction de MetalLB pour assurer un service de Load Balancing dans ce cluster :
$ kubectl apply -f [https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml](https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml)
$ kubectl apply -f config.yaml
Je récupère sur le noeud maître OpenFaaS CLI :
J’installe Helm :
Helm - The Package Manager for Kubernetes.
$ curl -L https://git.io/get\_helm.sh | bash
$ kubectl --namespace kube-system create serviceaccount tiller
$ kubectl create clusterrolebinding tiller-cluster-rule \
--clusterrole=cluster-admin --serviceaccount=kube-system:tiller
$ kubectl --namespace kube-system patch deploy tiller-deploy \
-p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
et je peux alors déployer OpenFaaS dans le cluster :
Via l’adresse IP fournie par le service de Load Balancing, je peux accéder au portail d’OpenFaaS :
Je lance le déploiement de mon application Single Page (en l’occurence ici mon chatbot) :
via une fonction sur la base du template OpenFaaS (conçu par Alex Ellis) pour les sites statiques (utilisant Nginx pour servir le contenu). Celle-çi est d’abord construite localement sous la forme d’une image Docker qui sera poussée vers le Docker Hub (on peut également utiliser son Docker Registry privé) puis vers la plateforme OpenFaaS :
alexellis/static-site-template
La fonction apparaît sur le portail OpenFaaS :
et je peux utiliser l’adresse fournie au moment du déploiement de la fonction pour accéder à mon chatbot :
Une autre variante sur la base du template OpenFaaS Node.js 10 Express :
openfaas-incubator/node10-express-template
Je récupère le template et je crée ma nouvelle fonction en m’inspirant du projet Leaderboard-app d’Alex Ellis sur Github :
Il utilise ce fichier handler.js qui permet de pointer vers le répertoire contenant la page web du Chatbot :
avec cette dépendance minimale :
Lancement de la construction de la nouvelle fonction :
Suivi de la phase de “Push & Deploy” du Docker Hub vers OpenFaaS :
La fonction est déployée :
L’adresse retournée me permet d’accéder une nouvelle fois vers le contenu statique du chatbot :
Je peux vérifier via le déploiement d’un petit serveur Rancher que le tout ne consomme pas beaucoup de ressources :
Alex Ellis propose d’aller plus loin avec une nouvelle stack PLONK apparemment soutenue par la Cloud Native Computing Foundation (CNCF) :
Introducing the PLONK Stack for Cloud Native Developers
On retrouve là une ressemblance avec la stack FONK proposé sur Github par la société Serverless :
Comme le rappelle cet ancienne expérience que j’avais réalisée :
Serverless : déploiement et test de la stack FONK (FaaS — Object store — NoSQL — Kubernetes) via…
A voir si la nouvelle stack PLONK permettra de populariser cette nouvelle génération d’architecture Web qui combine ces technologies dites “Cloud Native” …
A suivre !
Posted on August 24, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
August 24, 2019