وظائف Azure على Kubernetes مع KEDA

يوفر وقت تشغيل وظائف Azure مرونة في الاستضافة أينما وكيفما تريد. KEDA (التحجيم التلقائي المستند إلى حدث Kubernetes) يقترن بسلاسة مع وقت تشغيل وظائف Azure والأدوات لتوفير تحجيم مستند إلى الحدث في Kubernetes.

هام

يعد تشغيل تطبيقات الوظائف المعبأة في حاويات على Kubernetes، إما باستخدام KEDA أو عن طريق النشر المباشر، جهدا مفتوح المصدر يمكنك استخدامه مجانا. يتم توفير أفضل دعم من قبل المساهمين ومن المجتمع باستخدام مشكلات GitHub في مستودع Azure Functions. يرجى استخدام هذه المشكلات للإبلاغ عن الأخطاء ورفع طلبات الميزات. عمليات نشر تطبيق الوظائف في حاويات إلى Azure Container Apps، والتي تعمل على مجموعات Kubernetes المدارة في Azure، قيد المعاينة حاليا. لمزيد من المعلومات، راجع استضافة Azure Container Apps ل Azure Functions.

آلية عمل الوظائف المستندة إلى Kubernetes

تتكون خدمة وظائف Azure من مكونين رئيسيين: وقت التشغيل ووحدة التحكم في المقياس. إن وقت تشغيل الوظائف يشغّل التعليمة البرمجية الخاصة بك وينفذها. يتضمن وقت التشغيل منطقًا حول كيفية تشغيل إجراءات تنفيذ الوظائف، وتسجيلها، وإدارتها. يمكن تشغيل وقت تشغيل وظائف Azure في أي مكان. المكون الآخر هو وحدة التحكم في المقياس. تراقب وحدة التحكم في المقياس معدل الأحداث التي تستهدف وظيفتك، وتُحجِّم عدد المثيلات التي تُشغِّل تطبيقك بشكل استباقي. لمعرفة المزيد، راجع تغيير السعة واستضافة وظائف Azure.

توفر Functions المستندة إلى Kubernetes وقت تشغيل Functions في حاوية Docker مع التحجيم المستند إلى الحدث من خلال KEDA. يمكن أن تُحجِّم KEDA المقياس لعدد 0 مثيلات (عند عدم وجود أحداث) وتوسِّع المقياس حتى n من المثيلات. وهذا يتم عن طريق توضيح المقاييس المخصصّة لمقياس التحجيم التلقائي Kubernetes (Horizontal Pod Autoscaler). يتيح استخدام حاويات الوظائف مع KEDA إمكانية تكرار إمكانات الوظائف بلا خادم في أي من مجموعات Kubernetes. يمكن أيضًا نشر هذه الوظائف باستخدام ميزة العُقَد الظاهرية لخدمات Azure Kubernetes (AKS)للبنية الأساسية بلا خادم.

إدارة KEDA والوظائف في Kubernetes

لتشغيل الوظائف على مجموعة Kubernetes، يجب عليك تثبيت مكون KEDA. يمكنك تثبيت هذا المكون بإحدى الطرق التالية:

  • الأدوات الأساسية لوظائف Azure: باستخدام أمر func kubernetes install.

  • Helm: هناك طرق مختلفة لتثبيت KEDA في أي من مجموعات Kubernetes، بما في ذلك Helm. توثق خيارات التوزيع على موقع KEDA.

توزيع تطبيق الوظائف إلى Kubernetes

يمكنك نشر أي تطبيق وظائف إلى إحدى مجموعات Kubernetes التي تُشغِّل KEDA. منذ تشغيل الوظائف الخاصة بك في حاوية Docker، يحتاج مشروعك إلى Dockerfile. يمكنك إنشاء Dockerfile باستخدام --docker الخيار عند الاتصال بـ func init لإنشاء المشروع. إذا نسيت القيام بذلك، يمكنك دائما الاتصال func init مرة أخرى من جذر مشروع Functions الخاص بك، هذه المرة باستخدام --docker-only الخيار، كما هو موضح في المثال التالي.

func init --docker-only

لمعرفة المزيد حول إنشاء Dockerfile، راجع المرجع func init.

لإنشاء صورة ونشر الوظائف الخاصة بك إلى Kubernetes، يتعين عليك تشغيل الأمر التالي:

func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>

في هذا المثال، استبدل ⁧<name-of-function-deployment>⁩ باسم تطبيق الوظائف الخاص بك.

مهام أمر التوزيع كما يلي:

  1. يُستخدم Dockerfile الذي تم إنشاؤه مُسبقًا لإنشاء صورة محلية لتطبيق الوظائف.
  2. يتم تمييز الصورة المحلية بعلامة ودفعها إلى سجل الحاوية حيث يتم تسجيل دخول المستخدم.
  3. يتم إنشاء بيان وتطبيقه على نظام المجموعة الذي يُعرِّف مورد DeploymentKubernetes، ومورد ScaledObject، وSecrets، والذي يتضمن متغيّرات البيئة المستوردة من ملف local.settings.json الخاص بك.

لمعرفة المزيد، راجع func kubernetes deploy أمر.

توزيع تطبيق الوظائف من سجل خاص

يعمل التدفق أعلاه للسجلات الخاصة أيضًا. إذا كنت تسحب صورة الحاوية من تسجيل خاص، قم بتضمين العلامة --pull-secret التي تُشير إلى سر Kubernetes الذي يحتفظ ببيانات اعتماد التسجيل الخاصة عند تشغيل func kubernetes deploy.

إزالة تطبيق الوظائف من Kubernetes

بعد التوزيع، يمكنك إزالة وظيفة عن طريق إزالة Deployment، وScaledObject، وSecrets المرتبطين الذين تم إنشاؤهم.

kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>

إلغاء تثبيت KEDA من Kubernetes

يمكنك إزالة KEDA من نظام المجموعة الخاص بك عن طريق إحدى الطرق التالية:

مشغّلات معتمدة في KEDA

لدى KEDA دعم لمشغّلات وظائف Azure التالية:

دعم مشغّل HTTP

يمكنك استخدام وظائف Azure التي تعرض مشغّلات HTTP، ولكن KEDA لا تديرها مباشرةً. يمكنك الاستفادة من مشغّل KEDA prometheus لتوسيع نطاق وظائف Azure لـ HTTP من مثيلات 1 إلى n.

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

لمزيد من المعلومات، راجع الموارد التالية: