دليل سريع إلى Knative Serverless Framework للمبتدئين
نشرت: 2022-09-28هناك طلب على أطر العمل التي لا تحتاج إلى خادم على مدار السنوات القليلة الماضية ، وقد شهدت اعتمادًا متزايدًا بين المطورين.
ومع ذلك ، فإن التطبيقات القائمة على الحاوية شائعة بالفعل ، وكذلك Kubernetes بين الشركات.
Kubernetes ، بلا شك ، أداة رائعة لها إمكانات جيدة. ينمو نظامها البيئي أيضًا مع مجموعة متنوعة من الأدوات الجديدة وأحدث التقنيات ، مثل Knative ، التي لديها القدرة على جعل Kubernetes أفضل.
تم تقديم Knative للتغلب على المواقف التي تؤدي إلى الفشل وإنشاء معيار أساسي للأنظمة الأساسية السحابية وتزامن السحابة الأصلية.
بمعنى آخر ، يمكن أن يلائم إطار العمل Knative بدون خادم احتياجات الشركة بطريقة أفضل من عمليات النشر بدون خادم الأخرى المستندة إلى مجموعة النظراء.
في هذا الدليل ، سأتحدث عن Knative وفوائده وحالات الاستخدام وإجراءات التثبيت وإجراءات العمل والمزيد.
ها نحن ذا!
ما هو كناتيف؟
Knative هو إطار عمل بدون خادم يستند إلى Kubernetes تم تطويره لأول مرة بواسطة Google. يقوم بتحميل وتشغيل وظائف بدون خادم بناءً على متطلبات الشركة ، وبالتالي تقليل النفايات. إنه مشروع مفتوح المصدر يضيف مكونات لنشر التطبيقات بدون خادم وتشغيلها وإدارتها على Kubernetes.
الغرض الأساسي من إطار عمل Knative بدون خادم هو إدارة معايير التنسيق عبر الأنظمة الأساسية. يتم تنفيذ ذلك من خلال دمج وظيفة إنشاء الحاوية ، والقياس التلقائي ، ونماذج الأحداث ، وإدارة عبء العمل.

في وقت سابق ، كانت هناك مجموعة متنوعة من الحلول مفتوحة المصدر بخلاف Knative. كل حل له طريقته في النشر ، مما قد يتسبب في تجزئة السوق نظرًا لوجود نقص في الممارسات الموحدة. هذا يعني أن اختيار مزود معين ضروري إذا كنت تريد ميزة نظام معينة.
ومع ذلك ، بدأت مشاكل الهجرة في الظهور. ولتجنب مثل هذه المشاكل ، تم تقديم إطار عمل Knative بدون خادم. لذلك ، إذا كنت تكافح من أجل دمج أي مهام ، فيمكن لـ Knative القيام بذلك بكفاءة داخل خط الأنابيب القائم على Kubernetes.
Knative ثلاث قطع:
- Knative Build: يبني صور حاوية ويجعلها متاحة من الكود المصدري.
- Knative Serving: يستخدم Istio و Kubernetes للاتصال ونشر صور الحاوية هذه من خلال موارد البنية التحتية المخصصة.
- Knative Eventing: يسمح للمستخدمين بتحديد مشغلات الحدث ويسمح للمستخدمين بربط مشغلات الحدث بوظائف الحاويات.
عندما يحدد Knative حدثًا ، فإنه يحدد العملية المرتبطة لتشغيله عند الطلب. مع Knative ، ليست هناك حاجة لتخصيص عقد الحاوية ، والمجموعات ، والبودات للعمل نظرًا لأن Knative يلتزم بموارد الاستضافة فقط عند تشغيل عملية معينة. وبهذه الطريقة ، يوازن Knative بين المزايا التي لا تحتاج إلى خادم ومزايا الحاويات.
المفاهيم الأساسية لل Knative
دعونا نناقش المفاهيم الرئيسية لـ Knative Serverless Framework وكيفية ارتباطها بالأساسيات Knative.
يبني
يساعد Knative-building في الاستفادة من العناصر الأولية الموجودة في Kubernetes وتوسيعها ، مما يسمح لك بالتشغيل على إنشاءات الحاوية من الأصل. إنها تمكن الكود المصدري من التبعيات والمستودعات ، وبناء صور الحاوية وتسجيلها.
الأحداث

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

يمكنك بسهولة توسيع وظائف إطار عمل Knative بدون خادم أو استبدالها باستخدام المكونات الإضافية. يحتوي كل ملف serverless.yml على خاصية مكون إضافي تتميز بمكونات إضافية مختلفة.
موارد
الموارد هي مكونات البنية الأساسية التي لا تحتاج إلى خادم والتي تستخدمها وظيفتك ، بما في ذلك:
- مصدر حدث AWS SQS
- مهمة مجدولة (يتم تشغيلها كل 5 دقائق ، 10 دقائق ، إلخ.)
- مصدر حدث كافكا
و اكثر.
خدمات
الخدمات مثل المشروع. ومن ثم ، فإن الخدمة هي وحدة تنظيم إطار العمل Knative بدون خادم. على الرغم من أنه يمكنك الحصول على العديد من الخدمات لتطبيق واحد ، إلا أنه يمكنك التفكير في الخدمة كملف مشروع.
حيث ستكون قادرًا على تحديد الوظائف والأحداث والموارد ، كل ذلك في ملف واحد بعنوان serverless.yml أو serverless.json أو serverless.js . عند نشر الخدمات باستخدام إطار عمل بدون خادم ، يتم نشر كل شيء في الملف مرة واحدة.
خدمة

خدمة Knative مدمجة في Istio و Kubernetes التي تدعم نشر التطبيقات. إنه يتيح التطوير السريع للحاويات بدون خادم ، وبرمجة الشبكة ، والتحجيم التلقائي لمكونات Istio. تعتبر Knative-Serving الحاويات خدمة قابلة للتطوير يمكن أن تتراوح من مثيل واحد إلى العديد من مثيلات الحاوية.
ميزات Knative

دعونا نناقش بعض ميزات إطار عمل Knative بدون خادم:
- Knative هو إطار عمل بدون خادم يستند إلى Kubernetes يتيح لك نشر الخدمات إلى Kubernetes.
- يتكامل بسهولة Knative مع البيئة المدعومة
- يمكن للمطورين استخدام Kubernetes API مباشرة بمساعدة Knative لنشر خدمات بدون خادم
- إنه يمكّن المستخدمين من تشغيل خدمات بدون خادم بمساعدة نظام الأحداث الخاص بـ Knative
كيف يعمل Knative؟
يعمل إطار العمل بدون خادم كقطعة توجيه للحدث ويربط Istio و Kubernetes. يعمل Kubernetes كمنسق للخدمات الصغيرة والحاويات. Istio ، من ناحية أخرى ، هي تقنية شبكة مفتوحة المصدر تجمع مكونات مختلفة معًا للتفاعل مع المستخدم وأنفسهم.
يوفر Knative للمستخدمين مكونات متعددة تستهدف تنفيذ الأعمال اليومية الأساسية. يتم استخدام هذه المكونات مرارًا وتكرارًا في مجموعة متنوعة من التطبيقات. يمكن للمطور استخدام أي لغة برمجة. وبالتالي ، لا تحتاج إلى معرفة محددة باللغات حيث يتعرف Knative على صور الحاوية فقط.
هناك ثلاثة مكونات لإطار عمل Knative بدون خادم وهي مفاتيح تشغيله.
بناء حاويات جديدة

مكون البناء مسؤول عن بناء حاويات جديدة. يمكنه تحويل أكواد المصدر إلى حاوية. يمكن تكوين Knative لتلبية احتياجات العمل الخاصة.
أولاً ، يسحب Knative شفرة المصدر من المكتبة مثل Github. بعد ذلك ، تتم إضافة التبعيات الأساسية بحيث يتم تشغيل الكود بشكل فعال. يتم بعد ذلك إنشاء صور الحاوية ووضعها في الملفات التي يمكن لمنصة Kubernetes الوصول إليها.
الحاوية متاحة للمطورين الذين يستخدمون Kubernetes و Knative. وهكذا ، تُبنى الحاويات طالما أن أصل الكود معروف.
خدمة أو تشغيل النظام الأساسي
عنصر الخدمة مسؤول عن تشغيل النظام الأساسي. انها مشتركة:
- التكوين: التكوين مؤكد في إدارة إصدارات متعددة من الخدمة. في كل مرة يتم فيها نشر الميزة الجديدة للحاوية ، يحفظ Knative الإصدار الحالي وينشئ نسخة جديدة تحتوي على أحدث التغييرات والميزات. علاوة على ذلك ، يحدد Knative حالة الخدمة.
- القياس التلقائي: لتحسين عمل الحاويات التي لا تحتاج إلى خادم ، يجب أن تكون قادرًا على قياس الحاويات تلقائيًا لأعلى أو لأسفل. يمكن لـ Knative توسيع نطاق الخدمات تلقائيًا للكثيرين إذا لزم الأمر.
- التوجيه الذكي للخدمة: إنه جزء مهم من آلية العمل Knative. يتيح للمطورين توجيه تدفق وكمية حركة المرور إلى الإصدارات الحالية المختلفة من الخدمات المصغرة. أثناء تقديم ميزات جديدة واستراتيجيات نشر زرقاء وخضراء ، يمكن استخدام توجيه الخدمة الذكي.
يسمح لك بتعريض جزء صغير من المستخدمين للاختبار والإصدار الأخير وتوجيه حركة مرور كبيرة تدريجيًا إلى الإصدار الجديد.

منافسة لتحديد الوظائف

عنصر الأحداث في Knative مسؤول عن وصف وظيفة Knative. يسمح بتحديد تشغيل الحاويات بناءً على الأحداث. تؤدي الأحداث المختلفة إلى وظائف محددة للحاويات.
يمكن للمطورين تحديد مشغلات الحدث والحاويات المرتبطة للسماح لـ Knative بأداء وظيفته. يتعامل Knative مع قائمة الأحداث وتسليم الأحداث.
فوائد Knative
توفر Knative خدمات مثل إدارة المسار والإصدار المرحلي واتصال الخدمة. تفتخر بمجتمع واسع. دعونا نناقش كيف تؤثر Knative على الشركات لتبني هذه التكنولوجيا.
- على عكس الحلول الأخرى ، لدى Knative أحداث قياسية ومتوافقة مع حل FaaS. يوفر إطار عمل CloudEvent القياسي الذي يساعد في تصميم بنية بدون خادم.
- على الرغم من أن Knative ليس PaaS ، إلا أنه يسمح لك بإنشاء PaaS بدون خادم باستخدام منصة التزامن بدون خادم.
- Knative لديه تصميم كامل وناضج بدون خادم.
- إنه يدعم الأنظمة الأساسية المتعددة ويمنحك معيارًا عالميًا بين موفري السحابة للقضاء على فرصة البائعين الملزمين بحل معين.

- Knative يوفر إطار عمل مرن.
- وهو يدعم الإصدارات المتناسبة على مراحل.
- يمكنك تجربة النظام البيئي بدون خادم داخل بيئة حاوية.
- Knative يزيل الموثوقية على الإدارة والأدوات.
- يمكنك الانتقال بسرعة إلى موفري السحابة الآخرين الذين تم دمجهم مع Knative من خلال تطبيق Kubernetes.
- يقدم نموذج حساب حسب الطلب.
- يسمح لك بإدارة سير العمل كخدمة.
- باستخدام Knative ، يمكنك معالجة بيانات إنترنت الأشياء ، وإجراء فحوصات إمكانية الوصول ، والتحقق من صحة تكوينات مجموعات الأمان الخاصة بك.
- يسمح للمطورين بالتركيز على الترميز والسماح لهم بإنشاء تعليمات برمجية تكرارية بسرعة.
- يضمن للمطورين دمج الإصدارات الجديدة.
- يساعد نموذج Knative القائم على الحدث في تنفيذ التصميمات ، بما في ذلك الاشتراك والاتصال بالنظام الخارجي والتسجيل.
تحديات Knative (وبعض الحلول)
تحديات الكفاءة
يوفر إطار Knative الذي يدعم التطبيقات المناسبة أداءً أفضل بأقل تكلفة. ومع ذلك ، يمكن أن يؤدي المزيج غير المناسب من التطبيقات إلى ارتفاع التكاليف وموارد الحاويات غير المستغلة بالكامل. قد يؤدي هذا إلى أداء سيئ للتطبيق ، وهو التحدي الأكبر لنشر Knative بدون خادم.

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

مقارنة بالعروض بدون خادم في السحابة العامة ، هناك تحد للعمليات مع Knative. لا يتحكم المسؤولون في الخوادم الأساسية مع السحابة العامة. لكنهم سيحتاجون إلى إدارة الخوادم جنبًا إلى جنب مع Kubernetes والحاويات و Knative و Istio نفسها.
تقوم Knative بتوسيع العمليات وتعقيدات التطوير إلى الحد الأدنى للشركات التي التزمت بالفعل بـ Kubernetes والحاويات. سيجد أولئك الملتزمون بخدمة الشبكات والخدمات المصغرة امتدادًا طبيعيًا لـ Knative.
حالات استخدام Knative

بالنسبة للتطبيقات التي تؤدي إلى ظهور عدد متغير من الأحداث التي تظل ضمن حدود زمنية محددة أو تتجاوزها ، فإن Knative هو الأفضل بالنسبة لهم. تشمل حالات الاستخدام المحددة لإطار عمل Knative بدون خادم ما يلي:
- اختبار الموقع والتحقق منه
- مراقبة التطبيق
- إنترنت الأشياء
- شبكة الرصد
- تطبيقات الهاتف المحمول نهاية العمليات
- دورات حياة Agile و DevOps
- إطلاق الميزات الجديدة
- تبسيط Kubernetes
توجيه الحدث ضروري. إذا لم تتمكن فرق تكنولوجيا المعلومات من تخيل أحد التطبيقات كسلسلة من الأحداث بدلاً من المعاملات ، فقد لا يكون Knative خيارًا جيدًا لأسباب وظيفية وكفاءة.
المتطلبات الأساسية وتركيب Knative
كما نرى في الأقسام أعلاه ، Knative عبارة عن مجموعة من المكونات مثل تنظيم الأحداث وتقديم الخدمات التي تعمل على شبكة خدمة ومجموعة تنسيق حمل العمل. هناك أدوات مساعدة لسطر الأوامر نحتاج إلى تثبيتها للتشغيل المباشر. وبالتالي ، نحتاج إلى بعض التبعيات للتأكد من أنه يمكننا متابعة التثبيت.
المتطلبات الأساسية

هناك عدة خيارات لتثبيت Kubernetes. يأتي Docker Desktop لتمكين مجموعة Kubernetes سهلة تخدم أغراضًا مختلفة. تتمثل الطريقة البسيطة في استخدام Kubernetes في Docker لتشغيل مجموعة Kubernetes جنبًا إلى جنب مع عقد حاوية Docker. الطريقة الملائمة للعمل مع الكتلة هي استخدام أداة سطر الأوامر Knative.
يوفر Knative CLI واجهة سهلة وسريعة لإنشاء موارده. يساعد في المهام المعقدة مثل تقسيم حركة المرور والتحكم التلقائي. الطريقة المناسبة هي تنزيل البرنامج الثنائي المتوافق من صفحة GitHub.
تثبيت
بمجرد أن يكون لدينا جميع المتطلبات الأساسية ، يمكننا المضي قدمًا في تثبيت المكونات. بالنسبة لبيئة التطوير ، هناك مكون إضافي سريع البدء. يساعد البرنامج المساعد في تثبيت مجموعة Knative محلية باستخدام عميل Knative. يمكنك تنزيل البرنامج المساعد Quickstart من صفحة الإصدار الرسمية.
الخلاصة: مستقبل Knative
استبدل Knative الحوسبة بدون خادم من خلال توفير توسيع تلقائي للتطبيقات. إنه له تأثير كبير على النظام القابل للتشغيل البيني والوحدات النمطية.
في المستقبل ، من المتوقع أن تغطي Knative أوجه القصور الحالية وأن تصبح واحدة من أكثر التقنيات كفاءة لتشغيل بنية بدون خادم.
تعتبر Knative Technology أكثر تأثيرًا بالنسبة للمطورين من خلال النظر إلى مزاياها على البدائل التي لا تحتاج إلى خادم. سوف يساعدك Knative في توفير وقت رائع من خلال استبدال الحاجة إلى إنشاء ملحقات Kubernetes وصيانتها. المطورون سعداء جدًا بتقنية Knative لأنها سهلة الاستخدام وبديل رائع للحلول بدون خادم.
لذلك ، إذا كنت ترغب في زيادة قوة بيئة Kubernetes إلى أقصى حد في تدفقات العمل السحابية الخاصة بك ، فاستخدم تقنية Knative وشاهد الفوائد بنفسك.