Udostępnij za pośrednictwem


Korzystanie z rozwiązania 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 na temat instalowania i używania usługi OpenFaas w klastrze Azure Kubernetes Service (AKS).

Zanim rozpoczniesz

Dodawanie repozytorium programu Helm OpenFaaS

  1. Przejdź do witryny Azure Cloud Shell.

  2. Dodaj repozytorium programu 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 rozwiązania OpenFaaS

Dobrym rozwiązaniem jest przechowywanie funkcji OpenFaaS i OpenFaaS we własnej przestrzeni nazw platformy Kubernetes.

  1. 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
    
  2. Wygeneruj hasło dla portalu interfejsu użytkownika OpenFaaS i interfejsu API REST przy użyciu następujących poleceń. Wykres helm używa tego hasła, aby włączyć uwierzytelnianie podstawowe 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"
    
  3. Pobierz wartość hasła przy użyciu następującego echo polecenia.

    echo $PASSWORD
    
  4. Wdróż usługę 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"
    ...
    
  5. Publiczny adres IP jest tworzony na potrzeby 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
    
  6. 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ślny użytkownik to admin i hasło można pobrać przy użyciu polecenia echo $PASSWORD.

    Zrzut ekranu przedstawiający interfejs użytkownika usługi OpenFaaS.

  7. 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

  1. Przejdź do systemu OpenFaaS przy użyciu adresu URL openFaaS.

  2. Utwórz funkcję przy użyciu portalu OpenFaas, wybierając pozycję Wdróż nową funkcję i wyszukaj ciąg Figlet.

  3. Wybierz funkcję Figlet , a następnie wybierz pozycję Wdróż.

    Zrzut ekranu przedstawia okno dialogowe Wdrażanie nowej funkcji z tekstem Figlet w wierszu wyszukiwania.

  4. 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

  1. Przejdź do witryny Azure Cloud Shell.

  2. 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
    
  3. Wdróż wystąpienie usługi Azure Cosmos DB typu MongoDB przy użyciu az cosmosdb create polecenia . Zastąp openfaas-cosmos ciąg własną unikatową nazwą wystąpienia.

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. Pobierz parametry połączenia bazy danych usługi Azure Cosmos DB i zapisz je w zmiennej az cosmosdb list przy użyciu polecenia . Upewnij się, że zastąp wartość argumentu --resource-group nazwą grupy zasobów i --name argumentem nazwą wystąpienia usługi Azure Cosmos DB.

    COSMOS=$(az cosmosdb list-connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --query connectionStrings[0].connectionString \
      --output tsv)
    
  5. Wypełnij usługę Azure Cosmos DB danymi testowymi, tworząc plik o nazwie plans.json i kopiując w poniższym kodzie 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

  1. 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
    
  2. 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
    
  3. Utwórz funkcję przy użyciu faas-cli deploy polecenia . Upewnij się, że wartość argumentu -g jest aktualizowana 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
    
  4. 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:

    Zrzut ekranu przedstawiający interfejs użytkownika aplikacji OpenFaas.

Następne kroki

Kontynuuj naukę z warsztatów OpenFaaS, która obejmuje 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.