Déployer ses fonctions (FaaS) et ses applications conteneurisées (CaaS) avec Scaleway Elements Serverless Platform et Serverless Framework …

Karim
6 min readApr 8, 2020

--

Scaleway Elements propose en version Beta la plate-forme Serverless qui permet de se concentrer sur l’écriture de son code sans se préoccuper de la gestion de l’infrastructure sous-jacente avec ces propriétés

  • Scalabilité horizontale
  • Python, Go, NodeJS ou environnement spécifique
  • Déploiement de conteneur Docker
  • Compatibilité AWS Lambda

La plate-forme permet donc de déployer ses fonctions (FaaS) et ses applications conteneurisées (CaaS) dans une infrastructure gérée. Scaleway Elements Serverless Platform s’appuie en effet sur Knative et Scaleway Elements Kapsule

Rapide test en commençant par la création d’une petite instance Ubuntu 18.04 LTS sur laquelle je vais installer Node.js.

Au passage, on peut pour cela utiliser la version 2 (encore en Beta) de la ligne de commande SCW (Scaleway-CLI) :

sudo curl -o /usr/local/bin/scw -L "https://github.com/scaleway/scaleway-cli/releases/download/v2.0.0-beta.2/scw-2-0-0-beta-2-linux-x86_64"sudo chmod +x /usr/local/bin/scwscw init

Puis création de l’instance Linux :

scw instance server create type=DEV1-S image=ubuntu-bionic zone=fr-par-1 name=serverless

En commençant par cet exemple d’une fonction avec Node.js 10 :

qui comprend ce fichier de configuration YAML pour Serverless Framework dans lequel je rentre mon token et mon organisation, à récupérer par ce biais :

serverless.yml

et ce fichier handler :

handler.js

J’installe le plugin serverless-scaleway-functions dans le répertoire :

Puis je déploie la fonction :

Un endpoint m’est retourné que je peux requêter par l’intermédiaire de HTTPie :

La fonction apparaît dans le dashboard de Scaleway :

Il est possible de modifier le code de cette fonction dans le dashboard :

Autre exemple de fonction en Python cette fois-çi :

via de fichier de configuration YAML pour Serverless framework :

serverless.yml

et ce code pour la partie handler :

handler.py

J’installe le plugin comme précédemment :

Puis je déploie cette fonction en Python :

et je peux invoquer l’endpoint retourné par HTTPie :

La fonction apparaît dans le dashboard avec ces détails :

et il est là encore possible de modifier le code de cette fonction dans le dashboard :

ou les ressources qu’elle utilise :

Enfin pour terminer ce rapide tour de la plate-forme Scaleway Elements Serverless, un test du déploiement d’un conteneur Docker par l’intermédiaire de Serverless framework encore une fois. Je reprends le code proposé dans le dépôt GitHub :

qui comprend notamment ce Dockerfile :

Dockerfile

ce code en Python qui implémente un serveur avec Flask :

server.py

Ainsi que ce fichier de configuration YAML pour Serverless framework où l’on doit y insérer comme précédemment son token :

serverless.yml

J’installe le plugin serverless-scaleway-functions :

Et je déploie le tout :

Après avoir construit localement le conteneur Docker, ce dernier est expédié dans Scaleway Elements Container Registry

puis déployé dans la plate-forme Scaleway Elements Serverless :

Au passage on voit les différents dépôts créés par ces fonctions dans Scaleway Elements Container Registry :

Je peux invoquer avec HTTPie le container par le biais de l’endpoint retourné qui me répond ce petit message de bienvenue (comme les précédents fonctions) :

--

--

Karim
Karim

Written by Karim

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

No responses yet