For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/install-openfaas.md.

Comment installer OpenFaaS CE sur OVHcloud Managed Kubernetes avec OpenFaaS

Voir en Markdown

Découvrez comment installer OpenFaaS CE sur OVHcloud Managed Kubernetes avec OpenFaaS

Ce guide détaille l'installation d'OpenFaaS sur un cluster OVHcloud Managed Kubernetes Service (MKS). OpenFaaS est un framework permettant de créer des fonctions serverless au-dessus de Kubernetes. Avant d'installer OpenFaaS Community Edition (CE), veillez à lire le contrat de licence utilisateur final (EULA) afin de comprendre les limites de cette version d'OpenFaaS par rapport aux éditions Standard et Enterprise.

Avant de commencer

Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez la documentation Déployer une application Hello World.

Vous devez également avoir Helm installé sur votre poste de travail et sur votre cluster ; reportez-vous au tutoriel Comment installer Helm sur OVHcloud Managed Kubernetes Service.

OpenFaaS, une plateforme FaaS native pour Kubernetes

Logo OpenFaas

OpenFaaS est un framework open source permettant de créer des fonctions serverless avec Docker et Kubernetes.

Vous trouverez plus de détails sur l'architecture d'OpenFaaS dans la documentation officielle.

Déployer OpenFaaS sur OVHcloud Managed Kubernetes

Le chart Helm officiel pour OpenFaas est publié sur le dépôt faas-netes. La section suivante décrit comment l'installer sur votre cluster OVHcloud Managed Kubernetes.

1. Charger le dépôt du chart Helm OpenFaaS

Le chart Helm OpenFaaS n'est pas disponible dans le dépôt standard stable de Helm. Vous devez ajouter leur dépôt à votre installation Helm :

helm repo add openfaas https://openfaas.github.io/faas-netes/
helm repo update

2. Créer les namespaces requis

Les recommandations d'OpenFaaS conseillent de créer deux namespaces, l'un pour les services principaux d'OpenFaaS et l'autre pour les fonctions :

kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml

3. Générer les identifiants

Pour sécuriser l'accès au portail UI et à l'API REST d'OpenFaaS, vous pouvez générer un mot de passe avec les commandes suivantes :

# générer un mot de passe aléatoire
PASSWORD=$(head -c 12 /dev/urandom | shasum| cut -d' ' -f1)

kubectl -n openfaas create secret generic basic-auth \
--from-literal=basic-auth-user=admin \
--from-literal=basic-auth-password="$PASSWORD"
Info

Vous aurez besoin de ce mot de passe plus tard dans le tutoriel, par exemple pour accéder au portail UI. Vous pouvez le retrouver à tout moment dans la session du terminal avec echo $PASSWORD.

4. Déployer le chart Helm

Le chart Helm peut être déployé selon trois modes : LoadBalancer, NodePort et Ingress. Pour nous, la méthode la plus simple consiste à utiliser notre Load Balancer externe ; nous allons donc le déployer en mode LoadBalancer en définissant l'option --set serviceType=LoadBalancer.

Info

Pour mieux comprendre la différence entre ces trois modes, vous pouvez consulter notre guide dédié.

Déployez le chart Helm :

helm upgrade openfaas --install openfaas/openfaas \
  --namespace openfaas  \
  --set basic_auth=true \
  --set functionNamespace=openfaas-fn \
  --set serviceType=LoadBalancer

Comme suggéré dans le message d'installation, vous pouvez vérifier qu'OpenFaaS a bien démarré en exécutant :

kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas"

Si cela fonctionne, vous devriez voir la liste des objets deployment d'OpenFaaS, marqués comme disponibles :

$ kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas"
NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
alertmanager   1         1         1            1           33s
faas-idler     1         1         1            1           33s
gateway        1         1         1            1           33s
nats           1         1         1            1           33s
prometheus     1         1         1            1           33s
queue-worker   1         1         1            1           33s

5. Se connecter à la Gateway

Récupérez l'adresse IP publique de votre service gateway avec :

kubectl get svc -n openfaas gateway-external -o wide
Warning

À ce stade, votre EXTERNAL-IP peut encore être PENDING.

$ kubectl get svc -n openfaas gateway-external -o wide
NAME               TYPE           CLUSTER-IP    EXTERNAL-IP                        PORT(S)          AGE
gateway-external   LoadBalancer   x.x.x.x       PENDING                           8080:30012/TCP   10s

Le provisionnement du load balancer peut prendre plusieurs minutes. Vérifiez à nouveau jusqu'à ce que le champ EXTERNAL-IP soit renseigné avec une adresse IP publique.

Une fois l'adresse IP publique disponible, vous pouvez accéder à l'interface OpenFaaS à l'adresse http://PUBLIC_IP:8080.

Portail UI

6. Se connecter avec la CLI

Une autre façon d'interagir avec votre nouvelle plateforme OpenFaaS consiste à installer faas-cli, le client en ligne de commande d'OpenFaaS (sur Linux ou Mac, ou dans un terminal Linux WSL sous Windows). Téléchargez la dernière version du client CLI depuis la page officielle des versions.

Vous pouvez désormais utiliser la CLI pour vous connecter à la gateway. La CLI a besoin de l'adresse IP publique du LoadBalancer OpenFaaS, que vous pouvez récupérer avec les commandes de la section précédente :

PASSWORD=$(kubectl -n openfaas get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode)
echo -n $PASSWORD | ./faas-cli login -g http://EXTERNAL_IP:8080 -u admin --password-stdin

Exemple de résultat :

Calling the OpenFaaS server to validate the credentials...
WARNING! Communication is not secure, please consider using HTTPS. Letsencrypt.org offers free SSL/TLS certificates.
credentials saved for admin http://EXTERNAL_IP:8080

Vous êtes maintenant connecté à la gateway et pouvez envoyer des commandes à la plateforme OpenFaaS.

Par défaut, aucune fonction n'est installée sur votre plateforme OpenFaaS, comme vous pouvez le vérifier avec la commande faas-cli list.

./faas-cli list -g http://EXTERNAL_IP:8080

Cette section s'est concentrée sur l'installation d'OpenFaaS. La section suivante présente comment importer et invoquer des fonctions.

Déployer et invoquer des fonctions

Vous pouvez facilement déployer des fonctions sur votre plateforme OpenFaaS via l'interface web ou la CLI :

Des exemples de fonctions sont disponibles dans le projet officiel OpenFaaS. Par exemple, pour importer figlet, une fonction qui génère des bannières en ASCII art à partir de texte brut :

./faas-cli deploy -g http://EXTERNAL_IP:8080 --name figlet --image ghcr.io/openfaas/figlet:latest

La commande faas-cli list affiche désormais les fonctions déployées :

$ ./faas-cli list
Function                        Invocations     Replicas
figlet                          1               1

Invoquez la fonction que vous venez d'importer :

echo 'Hello from OVH MKS' | ./faas-cli invoke -g http://EXTERNAL_IP:8080 figlet

Cette section a détaillé comment importer et utiliser des fonctions existantes. La section suivante présente comment créer des fonctions personnalisées.

Écrire votre première fonction

Prérequis

Pour publier et déployer une fonction sur votre cluster MKS, vous aurez besoin de :

  • Un registre de conteneurs public accessible depuis votre cluster MKS et votre poste de travail, comme Docker Hub ou le registre GitHub.
Warning

Pour le moment, OpenFaaS Community Edition ne prend en charge que les images publiques. Consultez la documentation correspondante pour les registres privés avec OpenFaaS Pro.

Coder la fonction

Tous les modèles disponibles figurent dans le dépôt officiel de modèles, ou peuvent être listés avec :

./faas-cli template store list

Cet exemple utilisera NodeJS pour créer une fonction hello world. Commencez par créer et générer le squelette du dossier de la fonction :

mkdir hello-js-project
cd hello-js-project
../faas-cli new hello-js --lang node20 -g http://EXTERNAL_IP:8080

La CLI télécharge un modèle de fonction JS depuis le dépôt OpenFaaS, génère un fichier de description de fonction (hello-js.yml dans notre cas) et un dossier pour le code source de la fonction (hello-js). Pour NodeJS, vous trouverez dans ce dossier un fichier package.json (par exemple pour déclarer les dépendances de votre fonction) et un fichier handler.js (le code principal de la fonction).

Dans hello-js.yml, définissez les paramètres suivants selon votre configuration :

  • provider.gateway : l'URL de votre gateway OpenFaaS.
  • functions.image : l'URL de votre registre Docker. Dans cet exemple, un dépôt Docker Hub sera utilisé.

hello-js.yml :

version: 1.0
provider:
  name: openfaas
  gateway: http://xxxxx657xx.lb.c1.gra.k8s.ovh.net:8080
functions:
  hello-js:
    lang: node
    handler: ./hello-js
    image: docker.io/openfaas/hello-js:latest # The URL to a public repository.

La fonction décrite dans hello-js/handler.js est très simple. Elle exporte une fonction avec deux paramètres : un context, où vous recevrez les données de la requête, et un callback, que vous appellerez à la fin de votre fonction et auquel vous transmettrez les données de la réponse.

Vous pouvez maintenant construire l'image Docker et la pousser vers le registre Docker public :

# Construire l'image
../faas-cli build -f hello-js.yml
# Se connecter au registre Docker, nécessaire pour pousser l'image
docker login
# Pousser l'image vers le registre
../faas-cli push -f hello-js.yml

Une fois l'image dans le registre, déployez et invoquez la fonction avec la CLI OpenFaaS :

# Déployer la fonction
../faas-cli deploy -f hello-js.yml
# Invoquer la fonction
../faas-cli -g http://EXTERNAL_IP:8080 invoke hello-js
# Saisissez votre entrée, puis appuyez sur Ctrl+D
Hello
# Response:
{"body":"\"Hello\\n\"","content-type":"text/plain"}

Félicitations, vous avez écrit et déployé votre première fonction OpenFaaS avec Node. Consultez la documentation officielle pour aller plus loin.

Ressources complémentaires

Pour en savoir plus sur OpenFaaS, consultez la documentation officielle d'OpenFaaS. Vous pouvez également suivre les ateliers OpenFaaS pour apprendre de manière plus pratique.

Aller plus loin

  • Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

  • Échangez avec notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?