OpenFaaS / Faasd
Traductions
Ce tutoriel est également disponible dans les langues suivantes :
A propos
Dans ce tutoriel, nous allons vous fournir des indications sur comment :
- déployer un serveur faasd avec CWCloud
- comment déployer une fonction simple dans ce context
Nous ne souhaitons pas remplacer le travail exceptionnel effectué par l'équipe d'OpenFaaS. Si vous souhaitez utiliser faasd dans un contexte de production, nous vous recommandons fortement de consulter :
- Le livre "Serverless for everyone else" d'Alex Ellis (fondateur d'OpenFaaS et faasd) qui explique tout ce qu'il faut savoir pour utiliser la ligne de commande d'OpenFaaS (
faas-cli
) et configurer un serveur faasd par vous même. Il n'est pas couteux du tout et il vaut vraiment le coup, faites-nous confiance ! - La documentation de la ligne de commande d'OpenFaaS qui est également très complète.
Vous verrez s'est très rapide et très plaisant à lire sur n'importe quel support
Tutoriel vidéo
Vous pouvez activer les sous-titres en Anglais ou Français.
La ligne de commande d'OpenFaaS (faas-cli)
Imaginons que vous ayez déployé une instance de serveur faasd qui a pour url publique : https://pmy-faasd-628ufo.faasd.comwork.info
Installation et connexion au serveur
Installer la ligne de commande faas-cli si ce n'est pas déjà fait :
curl -sSL https://cli.openfaas.com | sudo sh
Authentification du serveur faasd
export OPENFAAS_URL=https://my-faasd-628ufo.faasd.comwork.info # remplacer l'url publique par la votre
faas-cli login --username cloud --password YOUR_PASSWORD
Vous pourrez ensuite trouver le mot de passe dans le fichier d'environnement ansible (env/{ instance_hash }.yml
) :
faasd_user: cloud
faasd_password: YOUR_PASSWORD
Authentificiation au registre de conteneur docker hub
Dans le but de déployer vos fonctions (qui sont construite sous forme de conteneurs), vous aurez besoin d'un registre de conteneur OCI tel que docker hub.
Vous pouvez créer gratuitement un compte et un access token :
Ensuite :
faas-cli registry-login --username YOUR_DOCKERHUB_USERNAME --password YOUR_DOCKERHUB_ACCESS_TOKEN
Remarque : vous pouvez aussi utiliser les registry de Scaleway ou OVH avec CWCloud
Déployer une fonction avec faas-cli
Voici un exemple de fonction créer à partir d'un template Python3 :
faas-cli new hello --lang python3
ls -l hello*
-rw------- 1 ineumann staff 157 Sep 3 10:05 hello.yml
hello:
total 4
-rw-r--r-- 1 ineumann staff 0 Sep 3 10:05 __init__.py
-rw-r--r-- 1 ineumann staff 123 Sep 3 10:05 handler.py
-rw-r--r-- 1 ineumann staff 0 Sep 3 10:05 requirements.txt
Changer le fichier hello/handler.py
:
def handle(req):
"""handle a request to the function
Args:
req (str): request body
"""
return "Hello {}!".format(req)
Changer le fichier hello.yml
pour ajouter le chemin complet de l'image et l'url du serveur faasd dans les champs image
et gateway
:
version: 1.0
provider:
name: openfaas
gateway: https://my-faasd-628ufo.faasd.comwork.info
functions:
hello:
lang: python3
handler: ./hello
image: comworkio/faasd-hello:latest
Ensuite builder et déployer :
faas-cli up -f ./hello.yml
Si vous n'êtes pas sur une machine x86/amd64 (par exemple un mac ayant un processeur Apple Silicon1), vous pouvez utiliser ces commandes à la place :
faas-cli publish -f ./hello.yml --platforms linux/amd64
faas-cli deploy -f ./hello.yml
Vous pourrez ensuite invoquer votre fonction :
curl -X POST "https://my-faasd-628ufo.faasd.comwork.info/function/hello" -d "Idriss"
Hello Idriss!
Et observer le résultat de l'invocation depuis l'interface web :
Footnotes
-
processeurs M1, M2, etc ↩