استخدام OpenFaaS على خدمة Azure Kubernetes (AKS)

OpenFaaS هو إطار عمل يستخدم حاويات لإنشاء وظائف بلا خادم. كمشروع مفتوح المصدر، فقد اكتسب اعتمادًا واسع النطاق داخل المجتمع. يوضح هذا المستند تفاصيل تثبيت OpenFaas واستخدامه على مجموعة خدمة Azure Kubernetes (AKS).

قبل البدء

أضف مستودع إدارة الرسم البياني OpenFaaS

  1. انتقل إلى Azure Cloud Shell.

  2. أضف مستودع مخطط OpenFaaS helm وحدث إلى أحدث إصدار باستخدام الأوامر التالية helm .

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

انشر OpenFaaS

كممارسة جيدة، يجب تخزين وظائف OpenFaaS وOpenFaaS في مساحة اسم Kubernetes الخاصة بها.

  1. إنشاء مساحة اسم لنظام OpenFaaS والوظائف باستخدام kubectl apply الأمر .

    kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
    
  2. إنشاء كلمة مرور لبوابة واجهة مستخدم OpenFaaS وواجهة برمجة تطبيقات REST باستخدام الأوامر التالية. يستخدم مخطط helm كلمة المرور هذه لتمكين المصادقة الأساسية على بوابة OpenFaaS، التي يتم عرضها على الإنترنت من خلال 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"
    
  3. احصل على قيمة كلمة المرور الخاصة بك باستخدام الأمر التالي echo .

    echo $PASSWORD
    
  4. انشر OpenFaaS في نظام مجموعة AKS باستخدام helm upgrade الأمر .

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

    يجب أن يبدو الإخراج مشابها لإخراج المثال المكثف التالي:

    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. يتم إنشاء عنوان IP عام للوصول إلى بوابة OpenFaaS. احصل على عنوان IP باستخدام kubectl get service الأمر .

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

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    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. اختبر نظام OpenFaaS عن طريق الاستعراض إلى عنوان IP الخارجي على المنفذ 8080، http://52.186.64.52:8080 في هذا المثال، حيث تتم مطالبتك بتسجيل الدخول. المستخدم الافتراضي هو admin ويمكن استرداد كلمة المرور الخاصة بك باستخدام echo $PASSWORD.

    Screenshot of OpenFaaS UI.

  7. اضبط $OPENFAAS_URL على عنوان URL لعنوان IP الخارجي على المنفذ 8080 وسجل الدخول باستخدام Azure CLI باستخدام الأوامر التالية.

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

إنشاء الوظيفة الأولى

  1. انتقل إلى نظام OpenFaaS باستخدام عنوان URL OpenFaaS.

  2. أنشئ دالة باستخدام مدخل OpenFaas عن طريق تحديد Deploy A New Function وابحث عن Figlet.

  3. حدد الدالة Figlet ، ثم حدد Deploy.

    Screenshot shows the Deploy A New Function dialog box with the text Figlet on the search line.

  4. استدعاء الدالة باستخدام الأمر التالي curl . تأكد من استبدال عنوان IP في المثال التالي بعنوان بوابة OpenFaaS.

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

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

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

إنشاء دالة ثانية

تكوين مثيل Azure Cosmos DB

  1. انتقل إلى Azure Cloud Shell.

  2. إنشاء مجموعة موارد جديدة لمثيل Azure Cosmos DB باستخدام az group create الأمر .

    az group create --name serverless-backing --location eastus
    
  3. نشر مثيل Azure Cosmos DB من النوع MongoDB باستخدام az cosmosdb create الأمر . استبدل openfaas-cosmos باسم المثيل الفريد الخاص بك.

    az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
    
  4. احصل على قاعدة بيانات Azure Cosmos DB سلسلة الاتصال وقم بتخزينها في متغير باستخدام az cosmosdb list الأمر . تأكد من استبدال قيمة الوسيطة --resource-group باسم مجموعة الموارد الخاصة بك، والوسيطة --name باسم مثيل Azure Cosmos DB.

    COSMOS=$(az cosmosdb list-connection-strings \
      --resource-group serverless-backing \
      --name openfaas-cosmos \
      --query connectionStrings[0].connectionString \
      --output tsv)
    
  5. قم بتعبئة Azure Cosmos DB ببيانات الاختبار عن طريق إنشاء ملف مسمى plans.json ونسخه في 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
    }
    

إنشاء الدالة

  1. تثبيت أدوات MongoDB. يقوم الأمر المثال التالي بتثبيت هذه الأدوات باستخدام brew. لمزيد من خيارات التثبيت، راجع وثائق MongoDB.

    brew install mongodb
    
  2. قم بتحميل مثيل Azure Cosmos DB بالبيانات باستخدام أداة mongoimport .

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

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    2018-02-19T14:42:14.313+0000    connected to: localhost
    2018-02-19T14:42:14.918+0000    imported 1 document
    
  3. إنشاء الدالة باستخدام faas-cli deploy الأمر . تأكد من تحديث قيمة الوسيطة -g بعنوان بوابة OpenFaaS.

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

    بمجرد النشر، يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    Deployed. 202 Accepted.
    URL: http://52.186.64.52:8080/function/cosmos-query
    
  4. اختبر الدالة باستخدام الأمر التالي curl . تأكد من تحديث عنوان IP بعنوان بوابة OpenFaaS.

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

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

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

    إشعار

    يمكنك أيضا اختبار الدالة داخل واجهة مستخدم OpenFaaS:

    Screenshot of OpenFaas UI.

الخطوات التالية

تابع التعلم باستخدام ورشة عمل OpenFaaS، والتي تتضمن مجموعة من المختبرات العملية التي تغطي مواضيع مثل كيفية إنشاء روبوت GitHub الخاص بك، واستهلاك الأسرار، وعرض المقاييس، والتحجيم التلقائي.