Sdílet prostřednictvím


Použití OpenFaaS v Azure Kubernetes Service (AKS)

OpenFaaS je architektura, která používá kontejnery k vytváření bezserverových funkcí. Jako open source projekt získal v komunitě velký osvojení. Tento dokument podrobně popisuje instalaci a používání OpenFaas v clusteru Azure Kubernetes Service (AKS).

Než začnete

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

  1. Přejděte na Azure Cloud Shell.

  2. Přidejte úložiště chartu OpenFaaS helm a pomocí následujících helm příkazů aktualizujte na nejnovější verzi.

    helm repo add openfaas https://openfaas.github.io/faas-netes/
    helm repo update
    

Nasazení OpenFaaS

Osvědčeným postupem je, že funkce OpenFaaS a OpenFaaS by měly být uložené ve vlastním oboru názvů Kubernetes.

  1. Pomocí příkazu vytvořte obor názvů pro systém a funkce kubectl apply OpenFaaS.

    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í v bráně OpenFaaS, 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. Nasaďte OpenFaaS do clusteru helm upgrade AKS pomocí příkazu .

    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. Ip adresu získejte pomocí kubectl get service příkazu .

    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 se dá načíst pomocí .echo $PASSWORD

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

  7. Nastavte $OPENFAAS_URL na 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. Pomocí portálu OpenFaas vytvořte funkci 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 řádku hledání

  4. Funkci vyvoláte pomocí následujícího curl příkazu. Ujistěte se, že jste IP adresu v následujícím příkladu nahradili 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 na Azure Cloud Shell.

  2. Vytvořte novou skupinu prostředků pro instanci služby Azure Cosmos DB pomocí az group create příkazu .

    az group create --name serverless-backing --location eastus
    
  3. Nasaďte instanci služby Azure Cosmos DB typu MongoDB pomocí az cosmosdb create příkazu . 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. Pomocí příkazu získejte připojovací řetězec databáze Azure Cosmos DB a uložte ho az cosmosdb list do proměnné. Nezapomeňte nahradit hodnotu --resource-group argumentu názvem vaší skupiny prostředků a --name argument názvem vaší 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. Naplnit Azure Cosmos DB testovacími daty tak, že vytvoříte soubor s názvem plans.json a zkopírujete ho do následujícího 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 jste IP adresu aktualizovali 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í pomocí workshopu OpenFaaS, který zahrnuje sadu praktických cvičení, která se zabývají tématy, jako je vytvoření vlastního robota Na GitHubu, používání tajných kódů, zobrazení metrik a automatické škálování.