Použití OpenFaaS v Azure Kubernetes Service (AKS)
OpenFaaS je architektura, která používá kontejnery k vytváření bezserverových funkcí. Jako open source projekt získal v komunitě velký osvojení. Tento dokument podrobně popisuje instalaci a používání OpenFaas v clusteru Azure Kubernetes Service (AKS).
Než začnete
- Tento článek předpokládá základní znalost konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Azure Kubernetes Service (AKS).
- Potřebujete aktivní předplatné Azure. Pokud ho nemáte, vytvořte si bezplatný účet , než začnete.
- Potřebujete cluster AKS. Pokud nemáte existující cluster, můžete ho vytvořit pomocí Azure CLI, Azure PowerShell nebo Azure Portal.
- Musíte nainstalovat Rozhraní příkazového řádku OpenFaaS. Možnosti instalace najdete v dokumentaci k rozhraní příkazového řádku OpenFaaS.
Přidání úložiště chartu OpenFaaS helm
Přejděte na Azure Cloud Shell.
Přidejte úložiště chartu OpenFaaS helm a pomocí následujících
helm
příkazů aktualizujte na nejnovější verzi.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Nasazení OpenFaaS
Osvědčeným postupem je, že funkce OpenFaaS a OpenFaaS by měly být uložené ve vlastním oboru názvů Kubernetes.
Pomocí příkazu vytvořte obor názvů pro systém a funkce
kubectl apply
OpenFaaS.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Pomocí následujících příkazů vygenerujte heslo pro portál uživatelského rozhraní OpenFaaS a rozhraní REST API. Chart Helm používá toto heslo k povolení základního ověřování v bráně OpenFaaS, která je přístupná k internetu prostřednictvím cloudového LoadBalanceru.
# 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"
Pomocí následujícího
echo
příkazu získejte hodnotu hesla.echo $PASSWORD
Nasaďte OpenFaaS do clusteru
helm upgrade
AKS pomocí příkazu .helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Výstup by měl vypadat podobně jako v následujícím zhuštěném příkladu výstupu:
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" ...
Vytvoří se veřejná IP adresa pro přístup k bráně OpenFaaS. Ip adresu získejte pomocí
kubectl get service
příkazu .kubectl get service -l component=gateway --namespace openfaas
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
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
Otestujte systém OpenFaaS tak,
http://52.186.64.52:8080
že v tomto příkladu přejdete na externí IP adresu na portu 8080, kde se zobrazí výzva k přihlášení. Výchozí uživatel jeadmin
a heslo se dá načíst pomocí .echo $PASSWORD
Nastavte
$OPENFAAS_URL
na adresu URL externí IP adresy na portu 8080 a přihlaste se pomocí Azure CLI pomocí následujících příkazů.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Vytvoření první funkce
Pomocí adresy URL OpenFaaS přejděte do systému OpenFaaS.
Pomocí portálu OpenFaas vytvořte funkci tak, že vyberete Nasadit novou funkci a vyhledáte Figlet.
Vyberte funkci Figlet a pak vyberte Nasadit.
Funkci vyvoláte pomocí následujícího
curl
příkazu. Ujistěte se, že jste IP adresu v následujícím příkladu nahradili adresou brány OpenFaaS.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Vytvoření druhé funkce
Konfigurace instance služby Azure Cosmos DB
Přejděte na Azure Cloud Shell.
Vytvořte novou skupinu prostředků pro instanci služby Azure Cosmos DB pomocí
az group create
příkazu .az group create --name serverless-backing --location eastus
Nasaďte instanci služby Azure Cosmos DB typu
MongoDB
pomocíaz cosmosdb create
příkazu . Nahraďteopenfaas-cosmos
vlastním jedinečným názvem instance.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Pomocí příkazu získejte připojovací řetězec databáze Azure Cosmos DB a uložte ho
az cosmosdb list
do proměnné. Nezapomeňte nahradit hodnotu--resource-group
argumentu názvem vaší skupiny prostředků a--name
argument názvem vaší instance služby Azure Cosmos DB.COSMOS=$(az cosmosdb list-connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --query connectionStrings[0].connectionString \ --output tsv)
Naplnit Azure Cosmos DB testovacími daty tak, že vytvoříte soubor s názvem
plans.json
a zkopírujete ho do následujícího kódu 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 }
Vytvoření funkce
Nainstalujte nástroje MongoDB. Následující příklad příkazu nainstaluje tyto nástroje pomocí brew. Další možnosti instalace najdete v dokumentaci k MongoDB.
brew install mongodb
Pomocí nástroje mongoimport načtěte instanci služby Azure Cosmos DB s daty.
mongoimport --uri=$COSMOS -c plans < plans.json
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Vytvořte funkci pomocí
faas-cli deploy
příkazu . Nezapomeňte aktualizovat hodnotu argumentu-g
adresou brány OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Po nasazení by měl výstup vypadat podobně jako v následujícím příkladu výstupu:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Otestujte funkci pomocí následujícího
curl
příkazu. Ujistěte se, že jste IP adresu aktualizovali adresou brány OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-query
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Poznámka
Funkci můžete také otestovat v uživatelském rozhraní OpenFaaS:
Další kroky
Pokračujte v učení pomocí workshopu OpenFaaS, který zahrnuje sadu praktických cvičení, která se zabývají tématy, jako je vytvoření vlastního robota Na GitHubu, používání tajných kódů, zobrazení metrik a automatické škálování.