Udostępnij za pośrednictwem


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

Dodawanie repozytorium pakietu Helm OpenFaaS

  1. Przejdź do usługi Azure Cloud Shell.

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

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

  3. Pobierz wartość hasła przy użyciu następującego echo polecenia.

    echo $PASSWORD
    
  4. 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"
    ...
    
  5. 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
    
  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ślnym użytkownikiem jest admin i hasło można pobrać przy użyciu polecenia echo $PASSWORD.

    Zrzut ekranu przedstawiający interfejs użytkownika platformy 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 pozycję 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 usługi 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óż rodzaj MongoDB wystąpienia usługi Azure Cosmos DB 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 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)
    
  5. 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

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