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

Image for post
Image for post

caleway 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

Image for post
Image for post

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

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

Image for post
Image for post

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 :

Image for post
Image for post
serverless.yml

et ce fichier handler :

Image for post
Image for post
handler.js

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

Image for post
Image for post

Puis je déploie la fonction :

Image for post
Image for post

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

Image for post
Image for post

La fonction apparaît dans le dashboard de Scaleway :

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

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

Image for post
Image for post

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

Image for post
Image for post

via de fichier de configuration YAML pour Serverless framework :

Image for post
Image for post
serverless.yml

et ce code pour la partie handler :

Image for post
Image for post
handler.py

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

Image for post
Image for post

Puis je déploie cette fonction en Python :

Image for post
Image for post

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

Image for post
Image for post

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

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

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

Image for post
Image for post

ou les ressources qu’elle utilise :

Image for post
Image for post

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 :

Image for post
Image for post

qui comprend notamment ce Dockerfile :

Image for post
Image for post
Dockerfile

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

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

Image for post
Image for post
serverless.yml

J’installe le plugin serverless-scaleway-functions :

Image for post
Image for post

Et je déploie le tout :

Image for post
Image for post

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 :

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

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

Image for post
Image for post

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

Image for post
Image for post

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

Get the Medium app