Share via


Azure Kubernetes Service(AKS) üzerinde OpenFaaS kullanma

OpenFaaS , sunucusuz işlevler oluşturmak için kapsayıcıları kullanan bir çerçevedir. açık kaynak bir proje olarak, topluluk içinde büyük ölçekli bir benimseme kazanmıştır. Bu belgede, Azure Kubernetes Service (AKS) kümesinde OpenFaas yükleme ve kullanma ayrıntıları yer alır.

Başlamadan önce

OpenFaaS helm grafiği depoyu ekleme

  1. Azure Cloud Shell'e gidin.

  2. Aşağıdaki helm komutları kullanarak OpenFaaS helm grafiği depoyu ekleyin ve en son sürüme güncelleştirin.

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

OpenFaaS dağıtma

İyi bir uygulama olarak, OpenFaaS ve OpenFaaS işlevleri kendi Kubernetes ad alanında depolanmalıdır.

  1. komutunu kullanarak OpenFaaS sistemi ve işlevleri için bir ad alanı kubectl apply oluşturun.

    kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
    
  2. Aşağıdaki komutları kullanarak OpenFaaS KULLANıCı Arabirimi Portalı ve REST API için bir parola oluşturun. Helm grafiği, bulut LoadBalancer aracılığıyla İnternet'te kullanıma sunulan OpenFaaS Ağ Geçidinde temel kimlik doğrulamasını etkinleştirmek için bu parolayı kullanır.

    # 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. Aşağıdaki echo komutu kullanarak parolanızın değerini alın.

    echo $PASSWORD
    
  4. komutunu kullanarak AKS kümenize OpenFaaS dağıtın helm upgrade .

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

    Çıkışınız aşağıdaki sıkıştırılmış örnek çıkışa benzer olmalıdır:

    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. OpenFaaS ağ geçidine erişmek için bir genel IP adresi oluşturulur. komutunu kullanarak kubectl get service IP adresini alın.

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

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

    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. Bu örnekte oturum açmanız istendiği 8080 http://52.186.64.52:8080 numaralı bağlantı noktasındaki dış IP adresine göz atarak OpenFaaS sistemini test edin. Varsayılan kullanıcıdır admin ve parolanız kullanılarak echo $PASSWORDalınabilir.

    OpenFaaS kullanıcı arabiriminin ekran görüntüsü.

  7. Bağlantı noktası 8080'deki dış IP adresinin URL'sine ayarlayın $OPENFAAS_URL ve aşağıdaki komutları kullanarak Azure CLI ile oturum açın.

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

İlk işlevi oluşturma

  1. OpenFaaS URL'nizi kullanarak OpenFaaS sistemine gidin.

  2. OpenFaas portalını kullanarak Yeni İşlev Dağıt'ı seçerek bir işlev oluşturun ve Figlet'i arayın.

  3. Figlet işlevini ve ardından Dağıt'ı seçin.

    Arama satırında Figlet metni bulunan Yeni İşlev Dağıt iletişim kutusunu gösteren ekran görüntüsü.

  4. Aşağıdaki curl komutu kullanarak işlevini çağırın. Aşağıdaki örnekteki IP adresini OpenFaaS ağ geçidi adresinizle değiştirdiğinizden emin olun.

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

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

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

İkinci işlev oluşturma

Azure Cosmos DB örneğinizi yapılandırma

  1. Azure Cloud Shell'e gidin.

  2. komutunu kullanarak az group create Azure Cosmos DB örneği için yeni bir kaynak grubu oluşturun.

    az group create --name serverless-backing --location eastus
    
  3. komutunu kullanarak türünde MongoDB bir Azure Cosmos DB örneği dağıtın az cosmosdb create . değerini kendi benzersiz örnek adınızla değiştirin openfaas-cosmos .

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. Azure Cosmos DB veritabanı bağlantı dizesini alın ve komutunu kullanarak bir değişkende depolayın az cosmosdb list . bağımsız değişkeninin değerini --resource-group kaynak grubunuzun adıyla, bağımsız değişkeni ise --name Azure Cosmos DB örneğinizin adıyla değiştirdiğinizden emin olun.

    COSMOS=$(az cosmosdb list-connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --query connectionStrings[0].connectionString \
      --output tsv)
    
  5. Adlı bir dosya plans.json oluşturup aşağıdaki json dosyasında kopyalayarak Azure Cosmos DB'yi test verileriyle doldurun.

    {
        "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
    }
    

İşlevi oluşturma

  1. MongoDB araçlarını yükleyin. Aşağıdaki örnek komut brew kullanarak bu araçları yükler. Daha fazla yükleme seçeneği için MongoDB belgelerine bakın.

    brew install mongodb
    
  2. Mongoimport aracını kullanarak Azure Cosmos DB örneğini verilerle yükleyin.

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

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

    2018-02-19T14:42:14.313+0000    connected to: localhost
    2018-02-19T14:42:14.918+0000    imported 1 document
    
  3. komutunu kullanarak faas-cli deploy işlevi oluşturun. Bağımsız değişkenin değerini -g OpenFaaS ağ geçidi adresinizle güncelleştirdiğinizden emin olun.

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

    Dağıtıldıktan sonra çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

    Deployed. 202 Accepted.
    URL: http://52.186.64.52:8080/function/cosmos-query
    
  4. Aşağıdaki curl komutu kullanarak işlevi test edin. IP adresini OpenFaaS ağ geçidi adresiyle güncelleştirdiğinizden emin olun.

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

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

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

    Not

    İşlevi OpenFaaS kullanıcı arabiriminde de test edebilirsiniz:

    OpenFaas kullanıcı arabiriminin ekran görüntüsü.

Sonraki adımlar

Kendi GitHub botunuzu oluşturma, gizli dizileri kullanma, ölçümleri görüntüleme ve otomatik ölçeklendirme gibi konuları kapsayan bir dizi uygulamalı laboratuvar içeren OpenFaaS atölyesi ile öğrenmeye devam edin.