Använda OpenFaaS i Azure Kubernetes Service (AKS)
OpenFaaS är ett ramverk som använder containrar för att skapa serverlösa funktioner. Som ett öppen källkod projekt har det fått storskalig implementering inom communityn. Det här dokumentet beskriver hur du installerar och använder OpenFaas i ett AKS-kluster (Azure Kubernetes Service).
Innan du börjar
- Den här artikeln förutsätter en grundläggande förståelse av Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
- Du behöver en aktiv Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
- Du behöver ett AKS-kluster. Om du inte har något befintligt kluster kan du skapa ett med hjälp av Azure CLI, Azure PowerShell eller Azure Portal.
- Du måste installera OpenFaaS CLI. Installationsalternativ finns i Dokumentationen om OpenFaaS CLI.
Lägg till lagringsplatsen för OpenFaaS-helmdiagram
Gå till Azure Cloud Shell.
Lägg till lagringsplatsen för OpenFaaS-helmdiagrammet och uppdatera till den senaste versionen med hjälp av följande
helm
kommandon.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Distribuera OpenFaaS
Som en bra idé bör Funktionerna OpenFaaS och OpenFaaS lagras i sitt eget Kubernetes-namnområde.
Skapa ett namnområde för OpenFaaS-systemet och funktionerna med kommandot
kubectl apply
.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Generera ett lösenord för OpenFaaS-användargränssnittsportalen och REST-API:et med hjälp av följande kommandon. Helm-diagrammet använder det här lösenordet för att aktivera grundläggande autentisering på OpenFaaS Gateway, som exponeras för Internet via en cloud LoadBalancer.
# 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"
Viktigt!
Att använda ett användarnamn och lösenord för autentisering är ett osäkert mönster. Om du har en OpenFaaS-företagslicens rekommenderar vi att du använder IAM (IAM) för OpenFaaS i stället.
Hämta värdet för ditt lösenord med hjälp av följande
echo
kommando.echo $PASSWORD
Distribuera OpenFaaS till ditt AKS-kluster med hjälp av
helm upgrade
kommandot .helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Dina utdata bör se ut ungefär som följande komprimerade exempelutdata:
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" ...
En offentlig IP-adress skapas för åtkomst till OpenFaaS-gatewayen. Hämta IP-adressen med kommandot
kubectl get service
.kubectl get service -l component=gateway --namespace openfaas
Dina utdata bör se ut ungefär som följande exempelutdata:
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
Testa OpenFaaS-systemet genom att bläddra till den externa IP-adressen på port 8080,
http://52.186.64.52:8080
i det här exemplet, där du uppmanas att logga in. Standardanvändaren äradmin
och lösenordet kan hämtas med hjälp avecho $PASSWORD
.Ange
$OPENFAAS_URL
till URL:en för den externa IP-adressen på port 8080 och logga in med Azure CLI med hjälp av följande kommandon.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Skapa den första funktionen
Navigera till OpenFaaS-systemet med hjälp av din OpenFaaS-URL.
Skapa en funktion med hjälp av OpenFaas-portalen genom att välja Distribuera en ny funktion och söka efter Figlet.
Välj funktionen Figlet och välj sedan Distribuera.
Anropa funktionen med hjälp av följande
curl
kommando. Se till att du ersätter IP-adressen i följande exempel med din OpenFaaS-gatewayadress.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Dina utdata bör se ut ungefär som följande exempelutdata:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Skapa den andra funktionen
Konfigurera din Azure Cosmos DB-instans
Gå till Azure Cloud Shell.
Skapa en ny resursgrupp för Azure Cosmos DB-instansen med hjälp av
az group create
kommandot .az group create --name serverless-backing --location eastus
Distribuera en Azure Cosmos DB-instans av typen
MongoDB
med hjälp avaz cosmosdb create
kommandot . Ersättopenfaas-cosmos
med ditt eget unika instansnamn.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Hämta Azure Cosmos DB-databasen anslutningssträng och lagra den i en variabel med hjälp av
az cosmosdb keys list
kommandot . Se till att du ersätter värdet för--resource-group
argumentet med namnet på resursgruppen och--name
argumentet med namnet på din Azure Cosmos DB-instans.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Fyll i Azure Cosmos DB med testdata genom att skapa en fil med namnet
plans.json
och kopiera i följande json.{ "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 }
Skapa funktionen
Installera MongoDB-verktygen. Följande exempelkommando installerar dessa verktyg med bryggning. Fler installationsalternativ finns i MongoDB-dokumentationen.
brew install mongodb
Läs in Azure Cosmos DB-instansen med data med hjälp av mongoimport-verktyget .
mongoimport --uri=$COSMOS -c plans < plans.json
Dina utdata bör se ut ungefär som följande exempelutdata:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Skapa funktionen med kommandot
faas-cli deploy
. Se till att du uppdaterar värdet för-g
argumentet med din OpenFaaS-gatewayadress.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
När utdata har distribuerats bör de se ut ungefär som i följande exempelutdata:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Testa funktionen med hjälp av följande
curl
kommando. Se till att du uppdaterar IP-adressen med OpenFaaS-gatewayadressen.curl -s http://52.186.64.52:8080/function/cosmos-query
Dina utdata bör se ut ungefär som följande exempelutdata:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Kommentar
Du kan också testa funktionen i OpenFaaS-användargränssnittet:
Nästa steg
Fortsätt att lära dig med OpenFaaS-workshopen, som innehåller en uppsättning praktiska labb som beskriver ämnen som hur du skapar en egen GitHub-robot, använder hemligheter, visar mått och autoskalning.
Azure Kubernetes Service