Dela via


Använda OpenFaaS i Azure Kubernetes Service (AKS)

OpenFaaS är ett ramverk som använder containrar för att skapa serverlösa funktioner. Som ett öppen källkod projekt har det fått storskalig implementering inom communityn. Det här dokumentet beskriver hur du installerar och använder OpenFaas i ett AKS-kluster (Azure Kubernetes Service).

Innan du börjar

Lägg till lagringsplatsen för OpenFaaS-helmdiagram

  1. Gå till Azure Cloud Shell.

  2. Lägg till lagringsplatsen för OpenFaaS-helmdiagrammet och uppdatera till den senaste versionen med hjälp av följande helm kommandon.

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

Distribuera OpenFaaS

Som en bra idé bör Funktionerna OpenFaaS och OpenFaaS lagras i sitt eget Kubernetes-namnområde.

  1. Skapa ett namnområde för OpenFaaS-systemet och funktionerna med kommandot kubectl apply .

    kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
    
  2. Generera ett lösenord för OpenFaaS-användargränssnittsportalen och REST-API:et med hjälp av följande kommandon. Helm-diagrammet använder det här lösenordet för att aktivera grundläggande autentisering på OpenFaaS Gateway, som exponeras för Internet via en 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"
    

    Viktigt!

    Att använda ett användarnamn och lösenord för autentisering är ett osäkert mönster. Om du har en OpenFaaS-företagslicens rekommenderar vi att du använder IAM (IAM) för OpenFaaS i stället.

  3. Hämta värdet för ditt lösenord med hjälp av följande echo kommando.

    echo $PASSWORD
    
  4. Distribuera OpenFaaS till ditt AKS-kluster med hjälp av helm upgrade kommandot .

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

    Dina utdata bör se ut ungefär som följande komprimerade exempelutdata:

    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. En offentlig IP-adress skapas för åtkomst till OpenFaaS-gatewayen. Hämta IP-adressen med kommandot kubectl get service .

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

    Dina utdata bör se ut ungefär som följande exempelutdata:

    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. Testa OpenFaaS-systemet genom att bläddra till den externa IP-adressen på port 8080, http://52.186.64.52:8080 i det här exemplet, där du uppmanas att logga in. Standardanvändaren är admin och lösenordet kan hämtas med hjälp av echo $PASSWORD.

    Skärmbild av OpenFaaS-användargränssnittet.

  7. Ange $OPENFAAS_URL till URL:en för den externa IP-adressen på port 8080 och logga in med Azure CLI med hjälp av följande kommandon.

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

Skapa den första funktionen

  1. Navigera till OpenFaaS-systemet med hjälp av din OpenFaaS-URL.

  2. Skapa en funktion med hjälp av OpenFaas-portalen genom att välja Distribuera en ny funktion och söka efter Figlet.

  3. Välj funktionen Figlet och välj sedan Distribuera.

    Skärmbild som visar dialogrutan Distribuera en ny funktion med texten Figlet på sökraden.

  4. Anropa funktionen med hjälp av följande curl kommando. Se till att du ersätter IP-adressen i följande exempel med din OpenFaaS-gatewayadress.

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

    Dina utdata bör se ut ungefär som följande exempelutdata:

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

Skapa den andra funktionen

Konfigurera din Azure Cosmos DB-instans

  1. Gå till Azure Cloud Shell.

  2. Skapa en ny resursgrupp för Azure Cosmos DB-instansen med hjälp av az group create kommandot .

    az group create --name serverless-backing --location eastus
    
  3. Distribuera en Azure Cosmos DB-instans av typen MongoDB med hjälp av az cosmosdb create kommandot . Ersätt openfaas-cosmos med ditt eget unika instansnamn.

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. Hämta Azure Cosmos DB-databasen anslutningssträng och lagra den i en variabel med hjälp av az cosmosdb keys list kommandot . Se till att du ersätter värdet för --resource-group argumentet med namnet på resursgruppen och --name argumentet med namnet på din Azure Cosmos DB-instans.

    COSMOS=$(az cosmosdb keys list \
      --type connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --output tsv)
    
  5. Fyll i Azure Cosmos DB med testdata genom att skapa en fil med namnet plans.json och kopiera i följande 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
    }
    

Skapa funktionen

  1. Installera MongoDB-verktygen. Följande exempelkommando installerar dessa verktyg med bryggning. Fler installationsalternativ finns i MongoDB-dokumentationen.

    brew install mongodb
    
  2. Läs in Azure Cosmos DB-instansen med data med hjälp av mongoimport-verktyget .

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

    Dina utdata bör se ut ungefär som följande exempelutdata:

    2018-02-19T14:42:14.313+0000    connected to: localhost
    2018-02-19T14:42:14.918+0000    imported 1 document
    
  3. Skapa funktionen med kommandot faas-cli deploy . Se till att du uppdaterar värdet för -g argumentet med din OpenFaaS-gatewayadress.

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

    När utdata har distribuerats bör de se ut ungefär som i följande exempelutdata:

    Deployed. 202 Accepted.
    URL: http://52.186.64.52:8080/function/cosmos-query
    
  4. Testa funktionen med hjälp av följande curl kommando. Se till att du uppdaterar IP-adressen med OpenFaaS-gatewayadressen.

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

    Dina utdata bör se ut ungefär som följande exempelutdata:

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

    Kommentar

    Du kan också testa funktionen i OpenFaaS-användargränssnittet:

    Skärmbild av OpenFaas-användargränssnittet.

Nästa steg

Fortsätt att lära dig med OpenFaaS-workshopen, som innehåller en uppsättning praktiska labb som beskriver ämnen som hur du skapar en egen GitHub-robot, använder hemligheter, visar mått och autoskalning.