استخدام OpenFaaS على خدمة Azure Kubernetes (AKS)
OpenFaaS هو إطار عمل يستخدم حاويات لإنشاء وظائف بلا خادم. كمشروع مفتوح المصدر، فقد اكتسب اعتمادًا واسع النطاق داخل المجتمع. يوضح هذا المستند تفاصيل تثبيت OpenFaas واستخدامه على مجموعة خدمة Azure Kubernetes (AKS).
قبل البدء
- تفترض هذه المقالة مفاهيم أساسية من مفاهيم Kubernetes. لمزيد من المعلومات، راجع مفاهيم Kubernetes الأساسية الخاصة بخدمة Azure Kubernetes Service (AKS).
- تحتاج إلى اشتراك Azure نشط. في حال لم يكن لديك اشتراك، أنشئ حسابًا مجانيًا قبل البدء.
- أنت بحاجة إلى مجموعة AKS. إذا لم يكن لديك مجموعة موجودة، يمكنك إنشاء مجموعة باستخدام مدخل Azure CLI أو Azure PowerShell أو Azure.
- تحتاج إلى تثبيت OpenFaaS CLI. للحصول على خيارات التثبيت، راجع وثائق OpenFaaS CLI.
أضف مستودع إدارة الرسم البياني OpenFaaS
انتقل إلى Azure Cloud Shell.
أضف مستودع مخطط OpenFaaS helm وحدث إلى أحدث إصدار باستخدام الأوامر التالية
helm
.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
انشر OpenFaaS
كممارسة جيدة، يجب تخزين وظائف OpenFaaS وOpenFaaS في مساحة اسم Kubernetes الخاصة بها.
إنشاء مساحة اسم لنظام OpenFaaS والوظائف باستخدام
kubectl apply
الأمر .kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
إنشاء كلمة مرور لبوابة واجهة مستخدم 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"
هام
يعد استخدام اسم المستخدم وكلمة المرور للمصادقة نمطا غير آمن. إذا كان لديك ترخيص مؤسسة OpenFaaS، نوصي باستخدام إدارة الهوية والوصول (IAM) ل OpenFaaS بدلا من ذلك.
احصل على قيمة كلمة المرور الخاصة بك باستخدام الأمر التالي
echo
.echo $PASSWORD
انشر 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" ...
يتم إنشاء عنوان 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
اختبر نظام OpenFaaS عن طريق الاستعراض إلى عنوان IP الخارجي على المنفذ 8080،
http://52.186.64.52:8080
في هذا المثال، حيث تتم مطالبتك بتسجيل الدخول. المستخدم الافتراضي هوadmin
ويمكن استرداد كلمة المرور الخاصة بك باستخدامecho $PASSWORD
.اضبط
$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
إنشاء الوظيفة الأولى
انتقل إلى نظام OpenFaaS باستخدام عنوان URL OpenFaaS.
أنشئ دالة باستخدام مدخل OpenFaas عن طريق تحديد Deploy A New Function وابحث عن Figlet.
حدد الدالة Figlet ، ثم حدد Deploy.
استدعاء الدالة باستخدام الأمر التالي
curl
. تأكد من استبدال عنوان IP في المثال التالي بعنوان بوابة OpenFaaS.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
إنشاء دالة ثانية
تكوين مثيل Azure Cosmos DB
انتقل إلى Azure Cloud Shell.
إنشاء مجموعة موارد جديدة لمثيل Azure Cosmos DB باستخدام
az group create
الأمر .az group create --name serverless-backing --location eastus
نشر مثيل Azure Cosmos DB من النوع
MongoDB
باستخدامaz cosmosdb create
الأمر . استبدلopenfaas-cosmos
باسم المثيل الفريد الخاص بك.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
احصل على قاعدة بيانات Azure Cosmos DB سلسلة الاتصال وقم بتخزينها في متغير باستخدام
az cosmosdb keys list
الأمر . تأكد من استبدال قيمة الوسيطة--resource-group
باسم مجموعة الموارد الخاصة بك، والوسيطة--name
باسم مثيل Azure Cosmos DB.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
قم بتعبئة 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 }
إنشاء الدالة
تثبيت أدوات MongoDB. يقوم الأمر المثال التالي بتثبيت هذه الأدوات باستخدام brew. لمزيد من خيارات التثبيت، راجع وثائق MongoDB.
brew install mongodb
قم بتحميل مثيل 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
إنشاء الدالة باستخدام
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
اختبر الدالة باستخدام الأمر التالي
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:
الخطوات التالية
تابع التعلم باستخدام ورشة عمل OpenFaaS، والتي تتضمن مجموعة من المختبرات العملية التي تغطي مواضيع مثل كيفية إنشاء روبوت GitHub الخاص بك، واستهلاك الأسرار، وعرض المقاييس، والتحجيم التلقائي.
Azure Kubernetes Service