Utiliser OpenFaaS sur AKS (Azure Kubernetes Service)
OpenFaaS est un framework qui utilise des conteneurs pour créer des fonctions serverless. Ce projet open source a été très largement adopté par la communauté. Ce document décrit en détail l’installation et l’utilisation d’OpenFaas sur un cluster Azure Kubernetes Service (AKS).
Avant de commencer
- Cet article suppose une compréhension élémentaire des concepts liés à Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes pour AKS (Azure Kubernetes Service).
- Vous avez besoin d’un abonnement Azure actif. Si vous n’en avez pas, créez un compte gratuit avant de commencer.
- Vous avez besoin d’un cluster AKS. Si vous avez besoin d’un cluster, vous pouvez en créer un à l’aide d’Azure CLI, d’Azure PowerShell ou du portail Azure.
- Vous devez installer l’interface CLI OpenFaaS. Pour connaître les options d’installation, consultez la documentation de l’interface de ligne de commande OpenFaaS.
Ajouter le dépôt de chart Helm OpenFaaS
Accédez à Azure Cloud Shell.
Ajoutez le dépôt de charts Helm OpenFaaS et effectuez une mise à jour vers la dernière version à l’aide des commandes
helm
suivantes.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Déployer OpenFaaS
Il est recommandé de stocker OpenFaaS et ses fonctions dans leur propre espace de noms Kubernetes.
Créez un espace de noms pour les fonctions et le système OpenFaaS à l’aide de la commande
kubectl apply
.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Générez un mot de passe pour le portail d’interface utilisateur OpenFaaS et l’API REST à l’aide des commandes suivantes. Le chart Helm utilise ce mot de passe pour activer l’authentification de base sur la passerelle OpenFaaS, qui est exposée à Internet via un équilibreur de charge cloud.
# generate a random password 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"
Obtenez la valeur de votre mot de passe à l’aide de la commande
echo
suivante.echo $PASSWORD
Déployez OpenFaaS dans votre cluster AKS à l’aide de la commande
helm upgrade
.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Le résultat doit être similaire à l’exemple condensé de sortie suivant :
NAME: openfaas LAST DEPLOYED: Tue Aug 29 08:26:11 2023 NAMESPACE: openfaas STATUS: deployed ... NOTES: To verify that openfaas has started, run: kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas" ...
Une adresse IP publique est créée pour accéder à la passerelle OpenFaaS. Obtenez l’adresse IP à l’aide de la commande
kubectl get service
.kubectl get service -l component=gateway --namespace openfaas
Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE gateway ClusterIP 10.0.156.194 <none> 8080/TCP 7m gateway-external LoadBalancer 10.0.28.18 52.186.64.52 8080:30800/TCP 7m
Testez le système OpenFaaS en accédant à l’adresse IP externe sur le port 8080,
http://52.186.64.52:8080
dans cet exemple, où vous êtes invité à vous connecter. L’utilisateur par défaut estadmin
et votre mot de passe peut être récupéré à l’aide deecho $PASSWORD
.Définissez
$OPENFAAS_URL
sur l’URL de l’adresse IP externe sur le port 8080, et connectez-vous avec Azure CLI à l’aide des commandes suivantes.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Créer la première fonction
Accédez au système OpenFaaS à l’aide de votre URL OpenFaaS.
Créez une fonction à l’aide du portail OpenFaas en sélectionnant Deploy A New Function et recherchez Figlet.
Sélectionnez la fonction Figlet, puis Deploy.
Invoquez la fonction en utilisant la commande
curl
suivante. Veillez à remplacer l’adresse IP dans l’exemple suivant par l’adresse de votre passerelle OpenFaas.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Créer la deuxième fonction
Configurer votre instance Azure Cosmos DB
Accédez à Azure Cloud Shell.
Créez un groupe de ressources pour l’instance Azure Cosmos DB à l’aide de la commande
az group create
.az group create --name serverless-backing --location eastus
Déployez une instance Azure Cosmos DB de type
MongoDB
à l’aide de la commandeaz cosmosdb create
. Remplacezopenfaas-cosmos
par le nom unique de votre instance.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Récupérez la chaîne de connexion de la base de données Azure Cosmos DB et stockez-la dans une variable à l’aide de la commande
az cosmosdb list
. Veillez à remplacer la valeur de l’argument--resource-group
par le nom de votre groupe de ressources, et la valeur de l’argument--name
par le nom de votre instance Azure Cosmos DB.COSMOS=$(az cosmosdb list-connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --query connectionStrings[0].connectionString \ --output tsv)
Remplissez Azure Cosmos DB avec des données de test en créant un fichier nommé
plans.json
et en y copiant le json suivant.{ "name" : "two_person", "friendlyName" : "Two Person Plan", "portionSize" : "1-2 Person", "mealsPerWeek" : "3 Unique meals per week", "price" : 72, "description" : "Our basic plan, delivering 3 meals per week, which will feed 1-2 people.", "__v" : 0 }
Création de la fonction
Installez les outils MongoDB. L’exemple de commande suivant installe ces outils à l’aide de brew. Pour découvrir d’autres options d’installation, consultez la documentation de MongoDB.
brew install mongodb
Chargez des données dans l’instance Azure Cosmos DB à l’aide de l’outil mongoimport.
mongoimport --uri=$COSMOS -c plans < plans.json
Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Créez la fonction à l’aide de la commande
faas-cli deploy
. Veillez à remplacer la valeur de l’argument-g
par l’adresse de votre passerelle OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Une fois le déploiement effectué, vous devez obtenir une sortie semblable à l’exemple suivant :
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Testez la fonction à l’aide de la commande
curl
suivante. Veillez à remplacer l’adresse IP par l’adresse de la passerelle OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-query
Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Remarque
Vous pouvez également tester la fonction dans l’interface utilisateur d’OpenFaaS :
Étapes suivantes
Continuez à apprendre avec l’atelier OpenFaaS, qui content un ensemble de travaux pratiques couvrant des sujets tels que la création de votre propre bot GitHub, l’utilisation de secrets, l’affichage de métriques et la mise à l’échelle automatique.
Azure Kubernetes Service