OpenFaaS on Azure Kubernetes Service (AKS) gebruiken
OpenFaaS is een framework dat gebruikmaakt van containers om serverloze functies te bouwen. Als open source project is het een grootschalige acceptatie binnen de community geworden. In dit document vindt u informatie over het installeren en gebruiken van OpenFaas op een Azure Kubernetes Service -cluster (AKS).
Voordat u begint
- In dit artikel wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor Azure Kubernetes Service (AKS) voor meer informatie.
- Een Azure-abonnement. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
- U hebt een AKS-cluster nodig. Als u geen bestaand cluster hebt, kunt u er een maken met behulp van de Azure CLI, Azure PowerShell of Azure Portal.
- U moet de OpenFaaS CLI installeren. Zie de OpenFaaS CLI-documentatie voor installatieopties.
De OpenFaaS Helm-grafiekopslagplaats toevoegen
Navigeer naar Azure Cloud Shell.
Voeg de OpenFaaS Helm-grafiekopslagplaats toe en werk bij naar de nieuwste versie met behulp van de volgende
helm
opdrachten.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
OpenFaaS implementeren
Het is een goede gewoonte om de functies OpenFaaS en OpenFaaS op te slaan in hun eigen Kubernetes-naamruimte.
Maak een naamruimte voor het OpenFaaS-systeem en -functies met behulp van de
kubectl apply
opdracht .kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Genereer een wachtwoord voor de OpenFaaS UI-portal en REST API met behulp van de volgende opdrachten. De Helm-grafiek gebruikt dit wachtwoord om basisverificatie in te schakelen op de OpenFaaS-gateway, die via een loadbalancer in de cloud beschikbaar is voor internet.
# 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"
Haal de waarde voor uw wachtwoord op met behulp van de volgende
echo
opdracht.echo $PASSWORD
Implementeer OpenFaaS in uw AKS-cluster met behulp van de
helm upgrade
opdracht .helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
De uitvoer moet er ongeveer uitzien als de volgende verkorte voorbeelduitvoer:
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" ...
Er wordt een openbaar IP-adres gemaakt voor toegang tot de OpenFaaS-gateway. Haal het IP-adres op met behulp van de
kubectl get service
opdracht .kubectl get service -l component=gateway --namespace openfaas
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
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
Test het OpenFaaS-systeem door te bladeren naar het externe IP-adres op poort 8080,
http://52.186.64.52:8080
in dit voorbeeld, waar u wordt gevraagd u aan te melden. De standaardgebruiker isadmin
en uw wachtwoord kan worden opgehaald met behulp vanecho $PASSWORD
.Stel
$OPENFAAS_URL
in op de URL van het externe IP-adres op poort 8080 en meld u aan met de Azure CLI met behulp van de volgende opdrachten.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Eerste functie maken
Navigeer naar het OpenFaaS-systeem met behulp van uw OpenFaaS-URL.
Maak een functie met behulp van de OpenFaas-portal door Een nieuwe functie implementeren te selecteren en te zoeken naar Figlet.
Selecteer de functie Figlet en selecteer vervolgens Implementeren.
Roep de functie aan met behulp van de volgende
curl
opdracht. Zorg ervoor dat u het IP-adres in het volgende voorbeeld vervangt door uw OpenFaaS-gatewayadres.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Tweede functie maken
Uw Azure Cosmos DB-exemplaar configureren
Navigeer naar Azure Cloud Shell.
Maak een nieuwe resourcegroep voor het Azure Cosmos DB-exemplaar met behulp van de
az group create
opdracht .az group create --name serverless-backing --location eastus
Implementeer een Azure Cosmos DB-exemplaar van het type
MongoDB
met behulp van deaz cosmosdb create
opdracht . Vervang dooropenfaas-cosmos
uw eigen unieke exemplaarnaam.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Haal de Azure Cosmos DB-database op connection string en sla deze op in een variabele met behulp van de
az cosmosdb list
opdracht . Zorg ervoor dat u de waarde voor het--resource-group
argument vervangt door de naam van uw resourcegroep en het--name
argument door de naam van uw Azure Cosmos DB-exemplaar.COSMOS=$(az cosmosdb list-connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --query connectionStrings[0].connectionString \ --output tsv)
Vul de Azure Cosmos DB met testgegevens door een bestand met de naam
plans.json
te maken en in de volgende json te kopiëren.{ "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 }
De functie maken
Installeer de MongoDB-hulpprogramma's. Met de volgende voorbeeldopdracht worden deze hulpprogramma's geïnstalleerd met behulp van brew. Zie de MongoDB-documentatie voor meer installatieopties.
brew install mongodb
Laad het Azure Cosmos DB-exemplaar met gegevens met behulp van het mongoimport-hulpprogramma .
mongoimport --uri=$COSMOS -c plans < plans.json
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Maak de functie met behulp van de
faas-cli deploy
opdracht . Zorg ervoor dat u de waarde van het-g
argument bijwerkt met het adres van uw OpenFaaS-gateway.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Na de implementatie moet de uitvoer er ongeveer uitzien als in de volgende voorbeelduitvoer:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Test de functie met behulp van de volgende
curl
opdracht. Zorg ervoor dat u het IP-adres bijwerkt met het OpenFaaS-gatewayadres.curl -s http://52.186.64.52:8080/function/cosmos-query
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Notitie
U kunt de functie ook testen in de OpenFaaS-gebruikersinterface:
Volgende stappen
Blijf leren met de OpenFaaS-workshop, die een set praktische labs bevat die onderwerpen behandelen zoals het maken van uw eigen GitHub-bot, het gebruiken van geheimen, het weergeven van metrische gegevens en automatisch schalen.
Azure Kubernetes Service
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor