Verwenden von OpenFaaS in Azure Kubernetes Service (AKS)
OpenFaaS ist ein Framework, das Container verwendet, um serverlose Funktionen zu erstellen. Das Open-Source-Projekt erfreut sich in der Community großer Beliebtheit. In diesem Dokument werden die Installation und Verwendung von OpenFaaS in einem Azure Kubernetes Service-Cluster (AKS) beschrieben.
Voraussetzungen
- Für diesen Artikel werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Grundlegende Kubernetes-Konzepte für Azure Kubernetes Service (AKS).
- Sie benötigen ein aktives Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Sie benötigen einen AKS-Cluster. Wenn Sie noch keinen Cluster verwenden, erstellen Sie einen über die Azure CLI, Azure PowerShell oder das Azure-Portal.
- Sie müssen die OpenFaaS CLI installieren. Installationsoptionen finden Sie in der Dokumentation zur OpenFaaS CLI.
Hinzufügen des OpenFaaS-Helm-Diagrammrepositorys
Wechseln Sie zu Azure Cloud Shell.
Fügen Sie das OpenFaaS-Helm-Diagrammrepository hinzu, und führen Sie mit den folgenden
helm
-Befehlen ein Update auf die neueste Version durch.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Bereitstellen von OpenFaaS
Es empfiehlt sich, OpenFaaS und OpenFaaS Funktionen in einem eigenen Kubernetes-Namespace zu speichern.
Erstellen Sie einen Namespace für das OpenFaaS-System und die zugehörigen Funktionen über den Befehl
kubectl apply
.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Generieren Sie mit den folgenden Befehlen ein Kennwort für das OpenFaaS-Benutzeroberflächenportal und die REST-API. Dieses Kennwort wird vom Helm-Diagramm verwendet, um eine Standardauthentifizierung auf dem OpenFaaS-Gateway zu ermöglichen, das über einen Cloudlastenausgleich im Internet verfügbar gemacht wird.
# 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"
Wichtig
Die Verwendung eines Benutzernamens und Kennworts für die Authentifizierung ist ein unsicheres Muster. Wenn Sie über eine OpenFaaS Enterprise-Lizenz verfügen, empfehlen wir stattdessen die Verwendung von Identity & Access Management (IAM) für OpenFaaS.
Rufen Sie den Wert für Ihr Kennwort mit dem folgenden
echo
-Befehl ab.echo $PASSWORD
Stellen Sie OpenFaaS mithilfe des Befehls
helm upgrade
in Ihrem AKS-Cluster bereit.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Ihre Ausgabe sollte der folgenden gekürzten Beispielausgabe entsprechen:
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" ...
Es wird eine öffentliche IP-Adresse für den Zugriff auf das OpenFaaS-Gateway erstellt. Rufen Sie mit dem Befehl
kubectl get service
die IP-Adresse ab.kubectl get service -l component=gateway --namespace openfaas
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
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
Testen Sie das OpenFaaS-System, indem Sie zur externen IP-Adresse an Port 8080 navigieren, in diesem Beispiel
http://52.186.64.52:8080
. Dort werden Sie zur Anmeldung aufgefordert. Das Standardbenutzerkonto lautetadmin
, und das Kennwort kann überecho $PASSWORD
abgerufen werden.Legen Sie
$OPENFAAS_URL
auf die URL der externen IP-Adresse an Port 8080 fest, und melden Sie sich über die Azure CLI mit den folgenden Befehlen an.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Erstellen der ersten Funktion
Navigieren Sie über Ihre OpenFaaS-URL zum OpenFaaS-System.
Erstellen Sie eine Funktion im OpenFaas-Portal, indem Sie Deploy A New Function (Neue Funktion bereitstellen) auswählen und nach Figlet suchen.
Wählen Sie die Figlet-Funktion aus, und klicken Sie dann auf Bereitstellen.
Rufen Sie die Funktion mit dem folgenden
curl
-Befehl auf. Ersetzen Sie die IP-Adresse im folgenden Beispiel durch die Ihres OpenFaaS-Gateways.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Erstellen der zweiten Funktion
Konfigurieren Ihrer Azure Cosmos DB-Instanz
Wechseln Sie zu Azure Cloud Shell.
Erstellen Sie eine neue Ressourcengruppe für die Azure Cosmos DB-Instanz über den Befehl
az group create
.az group create --name serverless-backing --location eastus
Stellen Sie eine Azure Cosmos DB-Instanz vom Typ
MongoDB
über den Befehlaz cosmosdb create
bereit. Ersetzen Sieopenfaas-cosmos
durch den eindeutigen Namen Ihrer eigenen Instanz.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Rufen Sie die Verbindungszeichenfolge für die Azure Cosmos DB-Datenbank ab, und speichern Sie diese über den Befehl
az cosmosdb keys list
in einer Variablen. Ersetzen Sie den Wert des--resource-group
-Arguments durch den Namen Ihrer Ressourcengruppe und den Wert des--name
-Arguments durch den Namen Ihrer Azure Cosmos DB-Instanz.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Füllen Sie Azure Cosmos DB mit Testdaten auf, indem Sie eine Datei mit dem Namen
plans.json
erstellen und in den folgenden JSON-Code kopieren.{ "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 }
Erstellen der Funktion
Installieren Sie die MongoDB-Tools. Der folgende Beispielbefehl installiert diese Tools mithilfe von brew. Weitere Installationsoptionen finden Sie in der MongoDB-Dokumentation.
brew install mongodb
Verwenden Sie das Tool mongoimport, um Daten in die Azure Cosmos DB-Instanz zu laden.
mongoimport --uri=$COSMOS -c plans < plans.json
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Erstellen Sie die Funktion mithilfe des Befehls
faas-cli deploy
. Ersetzen Sie den Wert des-g
-Arguments durch die Adresse Ihres OpenFaaS-Gateways.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Nach der Bereitstellung sollte Ihre Ausgabe in etwa der folgenden Beispielausgabe entsprechen:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Testen Sie die Funktion mit dem folgenden
curl
-Befehl. Ersetzen Sie die IP-Adresse durch die Adresse Ihres OpenFaaS-Gateways.curl -s http://52.186.64.52:8080/function/cosmos-query
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Hinweis
Sie können die Funktion auch innerhalb der OpenFaaS-Benutzeroberfläche testen:
Nächste Schritte
Nutzen Sie den OpenFaaS-Workshop zur Weiterbildung. Dieser umfasst eine Reihe von Praxislabs, die Themen wie das Erstellen eines eigenen GitHub-Bots, das Verarbeiten von Geheimnissen, das Anzeigen von Metriken und automatisches Skalieren abdecken.
Azure Kubernetes Service