Použití OpenFaaS ve službě Azure Kubernetes Service (AKS)
OpenFaaS je architektura, která používá kontejnery k vytváření bezserverových funkcí. Jako opensourcový projekt získal v rámci komunity rozsáhlé přijetí. Tento dokument podrobně popisuje instalaci a použití OpenFaas v clusteru Azure Kubernetes Service (AKS).
Než začnete
- Tento článek předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
- Potřebujete aktivní předplatné Azure. Pokud ho nemáte, vytvořte si bezplatný účet před tím, než začnete.
- Potřebujete cluster AKS. Pokud nemáte existující cluster, můžete ho vytvořit pomocí Azure CLI, Azure PowerShellu nebo webu 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 do Azure Cloud Shellu.
Přidejte úložiště chartu OpenFaaS Helm a aktualizujte na nejnovější verzi pomocí následujících
helm
příkazů.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Nasazení OpenFaaS
Jako osvědčený postup by měly být funkce OpenFaaS a OpenFaaS uložené ve vlastním oboru názvů Kubernetes.
Pomocí příkazu vytvořte obor názvů pro systém OpenFaaS a funkce
kubectl apply
.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í ve službě OpenFaaS Gateway, 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"
Důležité
Použití uživatelského jména a hesla pro ověřování je nezabezpečený vzor. Pokud máte licenci OpenFaaS Enterprise, doporučujeme místo toho použít Správu identit a přístupu (IAM) pro OpenFaaS .
Pomocí následujícího
echo
příkazu získejte hodnotu hesla.echo $PASSWORD
Pomocí příkazu nasaďte OpenFaaS do clusteru
helm upgrade
AKS.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. Pomocí příkazu získejte IP adresu
kubectl get service
.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 lze načíst pomocíecho $PASSWORD
.Nastavte
$OPENFAAS_URL
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.
Vytvořte funkci pomocí portálu OpenFaas 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. Nezapomeňte IP adresu nahradit v následujícím příkladu 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 do Azure Cloud Shellu.
Pomocí příkazu vytvořte novou skupinu prostředků pro instanci
az group create
služby Azure Cosmos DB.az group create --name serverless-backing --location eastus
Pomocí příkazu nasaďte instanci
MongoDB
az cosmosdb create
služby Azure Cosmos DB typu. Nahraďteopenfaas-cosmos
vlastním jedinečným názvem instance.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Získejte databázi Azure Cosmos DB připojovací řetězec a pomocí příkazu ji uložte do proměnné
az cosmosdb keys list
. Nezapomeňte nahradit hodnotu--resource-group
argumentu názvem vaší skupiny prostředků a--name
argument názvem instance služby Azure Cosmos DB.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Naplňte službu Azure Cosmos DB testovacími daty tak, že vytvoříte soubor s názvem
plans.json
a zkopírujete ho v následujícím 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 ip adresu aktualizujete 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í s workshopem OpenFaaS, který obsahuje sadu praktických cvičení, která se týkají témat, jako je vytvoření vlastního robota GitHubu, využívání tajných kódů, zobrazování metrik a automatického škálování.
Azure Kubernetes Service