Serverless : Déployer une application Single Page (SPA) via OpenFaaS et K3S …

Karim
7 min readAug 7, 2019

--

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 :

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 :

$ kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml$ kubectl apply -f config.yaml
config.yaml

Je récupère sur le noeud maître OpenFaaS CLI :

J’installe Helm :

$ 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 :

vocalbot.yml

La fonction apparaît sur le portail OpenFaaS :

Il utilise ce fichier handler.js qui permet de pointer vers le répertoire contenant la page web du Chatbot :

handler.js

avec cette dépendance minimale :

package.json

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 :

--

--

Karim
Karim

Written by Karim

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

No responses yet