Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) 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ümesine OpenFaas yükleme ve kullanma işlemleri ayrıntılı olarak açıklanmaktadır.

Başlamadan önce

OpenFaaS helm grafik deposunu ekle

  1. Azure Cloud Shell gidin.

  2. Aşağıdaki helm komutları kullanarak OpenFaaS helm chart deposunu ekleyin ve en son sürüme güncelleyin.

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

OpenFaaS'i 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 yük dengeleyici aracılığıyla İnternet'e açılan OpenFaaS Ağ Geçidi üzerinde temel kimlik doğrulamayı 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"
    

    Önemli

    Kimlik doğrulaması için kullanıcı adı ve parola kullanmak güvenli olmayan bir desendir. OpenFaaS kurumsal lisansınız varsa, bunun yerine OpenFaaS için Kimlik ve Erişim Yönetimi (IAM) kullanmanızı öneririz.

  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 daraltı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ı admin olup, parolanız echo $PASSWORD kullanılarak alınabilir.

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

  7. 8080 numaralı bağlantı noktasındaki 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 seçin ve ardından Yükle'yi seçin.

    Arama satırında Figlet metni bulunan Yeni Bir İş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 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. az cosmosdb create komutunu kullanarak, MongoDB türünde bir Azure Cosmos DB örneği dağıtın. openfaas-cosmos'yu kendi benzersiz örnek adınızla değiştirin.

    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 keys 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 keys list \
      --type connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --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. Parametrenin -g değerini OpenFaaS ağ geçidi adresinizle güncellediğ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."}]
    

    Uyarı

    İş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ölyesiyle öğrenmeye devam edin.