Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.ymlGenerieren 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 $PASSWORDStellen Sie OpenFaaS mithilfe des Befehls
helm upgradein Ihrem AKS-Cluster bereit.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancerIhre 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 servicedie IP-Adresse ab.kubectl get service -l component=gateway --namespace openfaasIhre 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 7mTesten 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 $PASSWORDabgerufen werden.
Legen Sie
$OPENFAAS_URLauf 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 eastusStellen Sie eine Azure Cosmos DB-Instanz vom Typ
MongoDBüber den Befehlaz cosmosdb createbereit. Ersetzen Sieopenfaas-cosmosdurch den eindeutigen Namen Ihrer eigenen Instanz.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDBRufen Sie die Verbindungszeichenfolge für die Azure Cosmos DB-Datenbank ab, und speichern Sie diese über den Befehl
az cosmosdb keys listin 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.jsonerstellen 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 mongodbVerwenden Sie das Tool mongoimport, um Daten in die Azure Cosmos DB-Instanz zu laden.
mongoimport --uri=$COSMOS -c plans < plans.jsonIhre 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 documentErstellen 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=$COSMOSNach der Bereitstellung sollte Ihre Ausgabe in etwa der folgenden Beispielausgabe entsprechen:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-queryTesten 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-queryIhre 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.