Bagikan melalui


Menggunakan OpenFaaS di Azure Kubernetes Service (AKS)

OpenFaaS adalah kerangka kerja yang menggunakan kontainer untuk membangun fungsi tanpa server. Sebagai proyek sumber terbuka, ia telah mendapatkan adopsi skala besar dalam komunitas. Dokumen ini merinci penginstalan dan penggunaan OpenFaas pada kluster Azure Kubernetes Service (AKS).

Sebelum Anda mulai

Menambahkan repositori bagan helm OpenFaaS

  1. Navigasi ke Azure Cloud Shell.

  2. Tambahkan repositori bagan helm OpenFaaS dan perbarui ke versi terbaru menggunakan perintah berikut helm .

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

Menyebarkan OpenFaaS

Sebagai praktik yang baik, OpenFaaS dan fungsi OpenFaaS harus disimpan di namespace layanan Kube mereka sendiri.

  1. Buat namespace layanan untuk sistem dan fungsi OpenFaaS menggunakan kubectl apply perintah .

    kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
    
  2. Buat kata sandi untuk Portal UI OpenFaaS dan REST API menggunakan perintah berikut. Bagan helm menggunakan kata sandi ini untuk mengaktifkan autentikasi dasar pada OpenFaaS Gateway, yang diekspos ke Internet melalui LoadBalancer cloud.

    # 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. Dapatkan nilai untuk kata sandi Anda menggunakan perintah berikut echo .

    echo $PASSWORD
    
  4. Sebarkan OpenFaaS ke kluster AKS Anda menggunakan helm upgrade perintah .

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

    Output Anda akan terlihat mirip dengan contoh output ringkas berikut:

    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. Alamat IP publik dibuat untuk mengakses gateway OpenFaaS. Dapatkan alamat IP menggunakan kubectl get service perintah .

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

    Output Anda akan terlihat mirip dengan contoh output berikut:

    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. Uji sistem OpenFaaS dengan menelusuri ke alamat IP eksternal pada port 8080, http://52.186.64.52:8080 dalam contoh ini, tempat Anda diminta untuk masuk. Pengguna default adalah admin dan kata sandi Anda dapat diambil menggunakan echo $PASSWORD.

    Cuplikan layar UI OpenFaaS.

  7. Atur $OPENFAAS_URL ke URL alamat IP eksternal pada port 8080 dan masuk dengan Azure CLI menggunakan perintah berikut.

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

Buat fungsi pertama

  1. Navigasikan ke sistem OpenFaaS menggunakan URL OpenFaaS Anda.

  2. Buat fungsi menggunakan portal OpenFaas dengan memilih Sebarkan Fungsi Baru dan cari Figlet.

  3. Pilih fungsi Figlet, lalu pilih Sebarkan.

    Cuplikan layar memperlihatkan kotak dialog Sebarkan Fungsi Baru dengan teks Figlet di baris pencarian.

  4. Panggil fungsi menggunakan perintah berikut curl . Pastikan Anda mengganti alamat IP dalam contoh berikut dengan alamat gateway OpenFaaS Anda.

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

    Output Anda akan terlihat mirip dengan contoh output berikut:

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

Buat fungsi kedua

Mengonfigurasi instans Azure Cosmos DB Anda

  1. Navigasi ke Azure Cloud Shell.

  2. Buat grup sumber daya baru untuk instans Azure Cosmos DB menggunakan az group create perintah .

    az group create --name serverless-backing --location eastus
    
  3. Sebarkan instans Azure Cosmos DB jenis MongoDB menggunakan az cosmosdb create perintah . Ganti openfaas-cosmos dengan nama instans unik Anda sendiri.

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. Dapatkan database Azure Cosmos DB string koneksi dan simpan dalam variabel menggunakan az cosmosdb list perintah . Pastikan Anda mengganti nilai untuk --resource-group argumen dengan nama grup sumber daya Anda, dan --name argumen dengan nama instans Azure Cosmos DB Anda.

    COSMOS=$(az cosmosdb list-connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --query connectionStrings[0].connectionString \
      --output tsv)
    
  5. Isi Azure Cosmos DB dengan data pengujian dengan membuat file bernama plans.json dan menyalin di json berikut.

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

Membuat fungsi

  1. Instal alat MongoDB. Contoh perintah berikut menginstal alat-alat ini menggunakan brew. Untuk opsi penginstalan lainnya, lihat dokumentasi MongoDB.

    brew install mongodb
    
  2. Muat instans Azure Cosmos DB dengan data menggunakan alat mongoimport .

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

    Output Anda akan terlihat mirip dengan contoh output berikut:

    2018-02-19T14:42:14.313+0000    connected to: localhost
    2018-02-19T14:42:14.918+0000    imported 1 document
    
  3. Buat fungsi menggunakan faas-cli deploy perintah . Pastikan Anda memperbarui nilai -g argumen dengan alamat gateway OpenFaaS Anda.

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

    Setelah disebarkan, output Anda akan terlihat mirip dengan contoh output berikut:

    Deployed. 202 Accepted.
    URL: http://52.186.64.52:8080/function/cosmos-query
    
  4. Uji fungsi menggunakan perintah berikut curl . Pastikan Anda memperbarui alamat IP dengan alamat gateway OpenFaaS.

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

    Output Anda akan terlihat mirip dengan contoh output berikut:

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

    Catatan

    Anda juga dapat menguji fungsi dalam UI OpenFaaS:

    Cuplikan layar UI OpenFaas.

Langkah berikutnya

Lanjutkan belajar dengan lokakarya OpenFaaS, yang mencakup serangkaian lab langsung yang mencakup topik seperti cara membuat bot GitHub Anda sendiri, menggunakan rahasia, melihat metrik, dan penskalaan otomatis.