Sdílet prostřednictvím


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

Přidání úložiště chartu OpenFaaS Helm

  1. Přejděte do Azure Cloud Shellu.

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

  1. 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
    
  2. 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"
    
  3. Pomocí následujícího echo příkazu získejte hodnotu hesla.

    echo $PASSWORD
    
  4. 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"
    ...
    
  5. 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
    
  6. 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 je admin a heslo lze načíst pomocí echo $PASSWORD.

    Snímek obrazovky s uživatelským rozhraním OpenFaaS

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

  1. Pomocí adresy URL OpenFaaS přejděte do systému OpenFaaS.

  2. Vytvořte funkci pomocí portálu OpenFaas tak, že vyberete Nasadit novou funkci a vyhledáte Figlet.

  3. Vyberte funkci Figlet a pak vyberte Nasadit.

    Snímek obrazovky s dialogovým oknem Nasadit novou funkci s textem Figlet na vyhledávacím řádku

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

  1. Přejděte do Azure Cloud Shellu.

  2. 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
    
  3. Pomocí příkazu nasaďte instanci MongoDB az cosmosdb create služby Azure Cosmos DB typu. Nahraďte openfaas-cosmos vlastním jedinečným názvem instance.

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. Získejte databázi Azure Cosmos DB připojovací řetězec a pomocí příkazu ji uložte do proměnnéaz cosmosdb 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 list-connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --query connectionStrings[0].connectionString \
      --output tsv)
    
  5. 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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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:

    Snímek obrazovky s uživatelským rozhraním 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í.