Delen via


OpenFaaS gebruiken in Azure Kubernetes Service (AKS)

OpenFaaS is een framework dat gebruikmaakt van containers om serverloze functies te bouwen. Als opensource-project is het een grootschalige acceptatie binnen de community geworden. Dit document bevat informatie over het installeren en gebruiken van OpenFaas in een AKS-cluster (Azure Kubernetes Service).

Voordat u begint

De Helm-grafiekopslagplaats OpenFaaS toevoegen

  1. Navigeer naar Azure Cloud Shell.

  2. Voeg de Helm-grafiekopslagplaats OpenFaaS toe en werk deze bij naar de nieuwste versie met behulp van de volgende helm opdrachten.

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

OpenFaaS implementeren

Als een goede gewoonte moeten De functies OpenFaaS en OpenFaaS worden opgeslagen in hun eigen Kubernetes-naamruimte.

  1. Maak een naamruimte voor het OpenFaaS-systeem en de functies met behulp van de kubectl apply opdracht.

    kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
    
  2. Genereer een wachtwoord voor de OpenFaaS UI-portal en REST API met behulp van de volgende opdrachten. In de Helm-grafiek wordt dit wachtwoord gebruikt om basisverificatie in te schakelen op de OpenFaaS-gateway, die beschikbaar is voor internet via een cloud LoadBalancer.

    # 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"
    

    Belangrijk

    Het gebruik van een gebruikersnaam en wachtwoord voor verificatie is een onveilig patroon. Als u een OpenFaaS Enterprise-licentie hebt, raden we u aan in plaats daarvan IAM (Identity and Access Management) voor OpenFaaS te gebruiken.

  3. Haal de waarde voor uw wachtwoord op met behulp van de volgende echo opdracht.

    echo $PASSWORD
    
  4. Implementeer OpenFaaS in uw AKS-cluster met behulp van de helm upgrade opdracht.

    helm upgrade openfaas --install openfaas/openfaas \
        --namespace openfaas  \
        --set basic_auth=true \
        --set functionNamespace=openfaas-fn \
        --set serviceType=LoadBalancer
    

    De uitvoer moet er ongeveer uitzien als in de volgende verkorte voorbeelduitvoer:

    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. Er wordt een openbaar IP-adres gemaakt voor toegang tot de OpenFaaS-gateway. Haal het IP-adres op met behulp van de kubectl get service opdracht.

    kubectl get service -l component=gateway --namespace openfaas
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    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. Test het OpenFaaS-systeem door te bladeren naar het externe IP-adres op poort 8080, http://52.186.64.52:8080 in dit voorbeeld, waar u wordt gevraagd u aan te melden. De standaardgebruiker is admin en uw wachtwoord kan worden opgehaald met behulp van echo $PASSWORD.

    Schermopname van de OpenFaaS-gebruikersinterface.

  7. Stel $OPENFAAS_URL deze in op de URL van het externe IP-adres op poort 8080 en meld u aan met de Azure CLI met behulp van de volgende opdrachten.

    export OPENFAAS_URL=http://52.186.64.52:8080
    echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
    

Eerste functie maken

  1. Navigeer naar het OpenFaaS-systeem met behulp van uw OpenFaaS-URL.

  2. Maak een functie met behulp van de OpenFaas-portal door Een nieuwe functie implementeren te selecteren en naar Figlet te zoeken.

  3. Selecteer de functie Figlet en selecteer vervolgens Implementeren.

    Schermopname van het dialoogvenster Een nieuwe functie implementeren met de tekst Figlet op de zoekregel.

  4. Roep de functie aan met behulp van de volgende curl opdracht. Zorg ervoor dat u het IP-adres in het volgende voorbeeld vervangt door uw OpenFaaS-gatewayadres.

    curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

     _   _      _ _            _
    | | | | ___| | | ___      / \    _____   _ _ __ ___
    | |_| |/ _ \ | |/ _ \    / _ \  |_  / | | | '__/ _ \
    |  _  |  __/ | | (_) |  / ___ \  / /| |_| | | |  __/
    |_| |_|\___|_|_|\___/  /_/   \_\/___|\__,_|_|  \___|
    

Tweede functie maken

Uw Azure Cosmos DB-exemplaar configureren

  1. Navigeer naar Azure Cloud Shell.

  2. Maak een nieuwe resourcegroep voor het Azure Cosmos DB-exemplaar met behulp van de az group create opdracht.

    az group create --name serverless-backing --location eastus
    
  3. Implementeer een Azure Cosmos DB-exemplaar van soort MongoDB met behulp van de az cosmosdb create opdracht. Vervang door openfaas-cosmos uw eigen unieke exemplaarnaam.

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. Haal de Azure Cosmos DB-database op verbindingsreeks en sla deze op in een variabele met behulp van de az cosmosdb keys list opdracht. Zorg ervoor dat u de waarde voor het --resource-group argument vervangt door de naam van uw resourcegroep en het --name argument door de naam van uw Azure Cosmos DB-exemplaar.

    COSMOS=$(az cosmosdb keys list \
      --type connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --output tsv)
    
  5. Vul De Azure Cosmos DB met testgegevens in door een bestand met de naam plans.json te maken en te kopiëren in de volgende 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
    }
    

De functie maken

  1. Installeer de MongoDB-hulpprogramma's. Met de volgende voorbeeldopdracht worden deze hulpprogramma's geïnstalleerd met behulp van brew. Zie de MongoDB-documentatie voor meer installatieopties.

    brew install mongodb
    
  2. Laad het Azure Cosmos DB-exemplaar met gegevens met behulp van het hulpprogramma mongoimport .

    mongoimport --uri=$COSMOS -c plans < plans.json
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    2018-02-19T14:42:14.313+0000    connected to: localhost
    2018-02-19T14:42:14.918+0000    imported 1 document
    
  3. Maak de functie met behulp van de faas-cli deploy opdracht. Zorg ervoor dat u de waarde van het -g argument bijwerkt met uw OpenFaaS-gatewayadres.

    faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
    

    Zodra de uitvoer is geïmplementeerd, moet de uitvoer er ongeveer uitzien als in de volgende voorbeelduitvoer:

    Deployed. 202 Accepted.
    URL: http://52.186.64.52:8080/function/cosmos-query
    
  4. Test de functie met behulp van de volgende curl opdracht. Zorg ervoor dat u het IP-adres bijwerkt met het OpenFaaS-gatewayadres.

    curl -s http://52.186.64.52:8080/function/cosmos-query
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    [{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
    

    Notitie

    U kunt de functie ook testen in de OpenFaaS-gebruikersinterface:

    Schermopname van De gebruikersinterface van OpenFaas.

Volgende stappen

Blijf leren met de OpenFaaS-workshop, die een set praktijklabs bevat die betrekking hebben op onderwerpen zoals het maken van uw eigen GitHub-bot, het gebruiken van geheimen, het weergeven van metrische gegevens en automatisch schalen.