Korzystanie z usługi OpenFaaS w usłudze Azure Kubernetes Service (AKS)
OpenFaaS to struktura, która używa kontenerów do tworzenia funkcji bezserwerowych. Jako projekt open source zyskał wdrożenie na dużą skalę w społeczności. Ten dokument zawiera szczegółowe informacje dotyczące instalowania i używania usługi OpenFaas w klastrze usługi Azure Kubernetes Service (AKS).
Zanim rozpoczniesz
- W tym artykule przyjęto założenie, że podstawowa wiedza na temat pojęć związanych z platformą Kubernetes. Aby uzyskać więcej informacji, zobacz temat Kubernetes core concepts for Azure Kubernetes Service (AKS) (Kubernetes — podstawowe pojęcia dotyczące usługi Azure Kubernetes Service (AKS)).
- Potrzebna jest aktywna subskrypcja platformy Azure. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto.
- Potrzebny jest klaster usługi AKS. Jeśli nie masz istniejącego klastra, możesz go utworzyć przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Musisz zainstalować interfejs wiersza polecenia OpenFaaS. Aby uzyskać informacje o opcjach instalacji, zobacz dokumentację interfejsu wiersza polecenia platformy OpenFaaS.
Dodawanie repozytorium pakietu Helm OpenFaaS
Przejdź do usługi Azure Cloud Shell.
Dodaj repozytorium pakietu Helm OpenFaaS i zaktualizuj je do najnowszej wersji przy użyciu następujących
helm
poleceń.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Wdrażanie usługi OpenFaaS
Dobrym rozwiązaniem jest przechowywanie funkcji OpenFaaS i OpenFaaS we własnej przestrzeni nazw kubernetes.
Utwórz przestrzeń nazw dla systemu OpenFaaS i funkcji przy użyciu
kubectl apply
polecenia .kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Wygeneruj hasło dla portalu interfejsu użytkownika platformy OpenFaaS i interfejsu API REST przy użyciu następujących poleceń. Wykres helm używa tego hasła do włączenia uwierzytelniania podstawowego w bramie OpenFaaS, która jest uwidoczniona w Internecie za pośrednictwem usługi LoadBalancer w chmurze.
# 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"
Ważne
Używanie nazwy użytkownika i hasła do uwierzytelniania jest niezabezpieczonym wzorcem. Jeśli masz licencję przedsiębiorstwa OpenFaaS, zalecamy zamiast tego użycie usługi Identity and Access Management (IAM) dla usługi OpenFaaS .
Pobierz wartość hasła przy użyciu następującego
echo
polecenia.echo $PASSWORD
Wdróż rozwiązanie OpenFaaS w klastrze usługi AKS przy użyciu
helm upgrade
polecenia .helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Dane wyjściowe powinny wyglądać podobnie do następujących skróconych przykładowych danych wyjściowych:
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" ...
Publiczny adres IP jest tworzony do uzyskiwania dostępu do bramy OpenFaaS. Pobierz adres IP przy użyciu
kubectl get service
polecenia .kubectl get service -l component=gateway --namespace openfaas
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
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
Przetestuj system OpenFaaS, przechodząc do zewnętrznego adresu IP na porcie 8080,
http://52.186.64.52:8080
w tym przykładzie, w którym zostanie wyświetlony monit o zalogowanie się. Domyślnym użytkownikiem jestadmin
i hasło można pobrać przy użyciu poleceniaecho $PASSWORD
.Ustaw
$OPENFAAS_URL
adres URL zewnętrznego adresu IP na porcie 8080 i zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure przy użyciu następujących poleceń.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Tworzenie pierwszej funkcji
Przejdź do systemu OpenFaaS przy użyciu adresu URL openFaaS.
Utwórz funkcję przy użyciu portalu OpenFaas, wybierając pozycję Wdróż nową funkcję i wyszukaj pozycję Figlet.
Wybierz funkcję Figlet, a następnie wybierz pozycję Wdróż.
Wywołaj funkcję przy użyciu następującego
curl
polecenia. Upewnij się, że adres IP został zastąpiony w poniższym przykładzie adresem bramy OpenFaaS.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Tworzenie drugiej funkcji
Konfigurowanie wystąpienia usługi Azure Cosmos DB
Przejdź do usługi Azure Cloud Shell.
Utwórz nową grupę zasobów dla wystąpienia usługi Azure Cosmos DB przy użyciu
az group create
polecenia .az group create --name serverless-backing --location eastus
Wdróż rodzaj
MongoDB
wystąpienia usługi Azure Cosmos DB przy użyciuaz cosmosdb create
polecenia . Zastąpopenfaas-cosmos
ciąg własną unikatową nazwą wystąpienia.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Pobierz bazę danych usługi Azure Cosmos DB parametry połączenia i zapisz ją w zmiennej
az cosmosdb keys list
przy użyciu polecenia . Pamiętaj, aby zastąpić wartość argumentu--resource-group
nazwą grupy zasobów, a--name
argument nazwą wystąpienia usługi Azure Cosmos DB.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Wypełnij usługę Azure Cosmos DB danymi testowymi, tworząc plik o nazwie
plans.json
i kopiując w poniższym formacie 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 }
Tworzenie funkcji
Zainstaluj narzędzia bazy danych MongoDB. Poniższe przykładowe polecenie instaluje te narzędzia przy użyciu metody brew. Aby uzyskać więcej opcji instalacji, zobacz dokumentację bazy danych MongoDB.
brew install mongodb
Załaduj wystąpienie usługi Azure Cosmos DB z danymi przy użyciu narzędzia mongoimport .
mongoimport --uri=$COSMOS -c plans < plans.json
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Utwórz funkcję przy użyciu
faas-cli deploy
polecenia . Upewnij się, że zaktualizowano wartość argumentu-g
przy użyciu adresu bramy OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Po wdrożeniu dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Przetestuj funkcję przy użyciu następującego
curl
polecenia. Upewnij się, że adres IP został zaktualizowany przy użyciu adresu bramy OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-query
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Uwaga
Funkcję można również przetestować w interfejsie użytkownika openFaaS:
Następne kroki
Kontynuuj naukę z warsztatów OpenFaaS, w tym zestaw praktycznych laboratoriów, które obejmują tematy, takie jak tworzenie własnego bota usługi GitHub, korzystanie z wpisów tajnych, wyświetlanie metryk i skalowanie automatyczne.
Azure Kubernetes Service