نشر التطبيقات إلى Azure Red Hat OpenShift باستخدام OpenShift Serverless

في هذه المقالة، ستقوم بنشر تطبيق إلى مجموعة Azure Red Hat OpenShift مع OpenShift Serverless. يساعد OpenShift Serverless المطورين على نشر التطبيقات التي سيتم توسيع نطاقها أو توسيع نطاقها إلى الصفر عند الطلب وتشغيلها. هذا يلغي استهلاك الموارد عندما لا تكون قيد الاستخدام.

يمكن حزم التعليمات البرمجية للتطبيق في حاوية جنبا إلى جنب مع أوقات التشغيل المناسبة. ستبدأ الوظائف بلا خادم حاويات التطبيق عند تشغيلها بواسطة حدث. يمكنك تشغيل التطبيقات من خلال أحداث مختلفة: من تطبيقاتك الخاصة، ومن موفري خدمات السحابة المتعددين، وأنظمة خدمة تأجير البرامج (SaaS) وخدمات أخرى.

يمكنك استخدام ميزات واجهة OpenShift المضمنة لإدارة جميع جوانب نشر الحاوية بلا خادم. يمكن للمطورين تحديد الأحداث التي تقود إطلاق التطبيقات المعبأة في حاويات بشكل مرئي. هناك أيضا طرق متعددة لتعديل معلمات الحدث. يمكن دمج تطبيقات OpenShift بلا خادم مع خدمات OpenShift الأخرى، مثل OpenShift Pipelines وService Mesh والمراقبة. يوفر هذا تجربة كاملة لتطوير التطبيقات بدون خادم ونشرها.

قبل أن تبدأ

إنشاء نظام مجموعة

اتبع البرنامج التعليمي لإنشاء مجموعة Azure Red Hat OpenShift. إذا اخترت تثبيت واجهة سطر الأوامر (CLI) واستخدامها محليا، فإن هذا البرنامج التعليمي يتطلب منك استخدام الإصدار 2.6.0 من Azure CLI أو أحدث. شغل az --version لمعرفة الإصدار الحالي. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

الاتصال بنظام المجموعة

لإدارة مجموعة Azure Red Hat OpenShift، تحتاج إلى استخدام oc، عميل سطر الأوامر OpenShift.

إشعار

نوصي بتثبيت سطر أوامر OpenShift على Azure Cloud Shell واستخدامه لجميع عمليات سطر الأوامر في هذه المقالة. افتح shell من shell.azure.com أو حدد الارتباط:

زر لتشغيل Azure Cloud Shell

اتبع البرنامج التعليمي لتثبيت CLI الخاص بك، لاسترداد بيانات اعتماد نظام المجموعة والاتصال بالمجموعة باستخدام وحدة تحكم الويب وOpenShift CLI.

بمجرد تسجيل الدخول، يجب أن تشاهد رسالة تفيد بأنك تستخدم default المشروع.

Login successful.

You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

تثبيت واجهة سطر الأوامر Knative (kn)

قم بتنزيل أحدث إصدار من واجهة سطر الأوامر (CLI) المناسب لجهازك، من https://github.com/knative/client/releases/

إذا قمت بتشغيل الأوامر على Azure Cloud Shell، فقم بتنزيل أحدث Knative CLI ل Linux.

cd ~
wget https://github.com/knative/client/releases/download/v0.22.0/kn-linux-amd64

mkdir knative
chmod +x kn-linux-amd64
mv kn-linux-amd64 knative/kn
echo 'export PATH=$PATH:~/knative' >> ~/.bashrc && source ~/.bashrc

فتح وحدة تحكم ويب OpenShift

ابحث عن عنوان URL لوحدة تحكم ويب نظام المجموعة عن طريق تشغيل البرنامج النصي التالي:

 az aro show \
    --name <cluster name> \
    --resource-group <resource group> \
    --query "consoleProfile.url" -o tsv

يجب أن تحصل على عنوان URL مشابه للآتي.

https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/

افتح مستعرض ويب وافتح عنوان URL لوحدة التحكم. تسجيل الدخول باستخدام kubeadmin بيانات الاعتماد.

لقطة شاشة تعرض شاشة تسجيل الدخول إلى Azure Red Hat OpenShift

تثبيت عامل التشغيل OpenShift Serverless

عند تسجيل الدخول إلى وحدة تحكم ويب OpenShift، تأكد من أنك في طريقة عرض المسؤول . افتح مركز المشغل وحدد عامل التشغيل OpenShift Serverless .

لقطة شاشة تعرض موضع عامل التشغيل OpenShift Serverless.

بعد ذلك، افتح صفحة تثبيت عامل التشغيل عن طريق تحديد تثبيت.

لقطة شاشة توضح كيفية تحديد تثبيت لتثبيت عامل التشغيل.

اختر قناة التحديث المناسبة لإصدار نظام المجموعة Azure Red Hat OpenShift الخاص بك وقم بتثبيت عامل التشغيل في openshift-serverless مساحة الاسم. مرر لأسفل وحدد تثبيت.

لقطة شاشة تعرض صفحة تثبيت عامل التشغيل.

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

لقطة شاشة تعرض صفحة الحالة مع تثبيت عامل التشغيل وجاهز للاستخدام.

تثبيت خدمة Knative

خيار تشغيل حاوية بطريقة بلا خادم على OpenShift Serverless ممكن باستخدام Knative المصدر. تعمل Knative على توسيع Kubernetes لتوفير مجموعة من المكونات التي تنشر التطبيقات الحديثة وتشغلها وتديرها من خلال منهجيتها بلا خادم.

إنشاء مثيل لخدمة Knative

في الزاوية العلوية اليمنى من النافذة، في قائمة Project ، حدد knative-server. ثم في جزء واجهات برمجة التطبيقات المتوفرة، حدد Create Instance ضمن بطاقة Knative Serving .

لقطة شاشة توضح مكان التحديد لإنشاء مثيل خدمة Knative.

في صفحة Create Knative Serving ، احتفظ بجميع القيم الافتراضية. مرر لأسفل وحدد الزر إنشاء .

لقطة شاشة تعرض القيم الافتراضية المدرجة في النموذج.

يتم تثبيت OpenShift Serverless عندما يظهر عمود الحالة Ready. أنت الآن جاهز لإنشاء مشروع OpenShift Serverless.

لقطة شاشة توضح أن Knative Serving جاهزة.

إنشاء مشروع بلا خادم

لإنشاء مشروع جديد يسمى demoserverless، قم بتشغيل الأمر التالي:

oc new-project demoserverless

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

Now using project "demoserverless" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".

You can add applications to this project with the 'new-app' command. For example, build a new example application in Python with the following:

    oc new-app django-psql-example

Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node

دعنا ننتقل من طريقة عرض المسؤول إلى طريقة عرض المطور. انتقل إلى قائمة المشاريع في القائمة اليسرى وحدد demoserverless. أنت الآن في صفحة الطوبولوجيا للمشروع.

لقطة شاشة تعرض مخطط مشروع Azure Red Hat OpenShift.

النشر باستخدام وحدة تحكم الويب

في صفحة الطوبولوجيا، حدد من Git. في صفحة Import from Git ، استخدم https://github.com/sclorg/django-ex.git ك Git Repo URL. يتم تنفيذ نموذج تطبيق ويب بلغة برمجة Python.

لقطة شاشة تعرض مشروع Azure Red Hat OpenShift من داخل Git.

إشعار

يكتشف OpenShift أن هذا مشروع Python ويحدد صورة المنشئ المناسبة.

قم بالتمرير إلى الموارد وتأكد من تحديد Knative Service كنوع المورد المراد إنشاؤه. سيؤدي هذا إلى إنشاء خدمة Knative، وهو نوع من النشر الذي يمكن التحجيم بلا خادم OpenShift إلى الصفر عند الخمول.

لقطة شاشة توضح كيفية تحديد خدمة Knative.

حدد "Create" في الجزء السفلي من الصفحة. يؤدي هذا إلى إنشاء موارد لإدارة إنشاء التطبيق ونشره. ثم ستتم إعادة توجيهك إلى نظرة عامة على الطوبولوجيا للمشروع.

توفر نظرة عامة على المخطط تمثيلا مرئيا للتطبيق الذي قمت بنشره. يمكنك مشاهدة بنية التطبيق الشاملة.

انتظر حتى يكتمل البناء. قد يستغرق ذلك بضع دقائق. عند اكتمال الإنشاء، تظهر علامة اختيار خضراء في الزاوية السفلية اليمنى من الخدمة.

لقطة شاشة تعرض علامة اختيار تشير إلى اكتمال البنية.

راجع مقياس التطبيق الخاص بك

في أعلى طريقة عرض المخطط، في قائمة خيارات العرض، حدد عدد الجرابات. انتظر حتى يتم تقليص عدد الجرابات إلى صفر Pods. قد يستغرق تقليص الحجم بضع دقائق.

لقطة شاشة تعرض عدد الجرابات عند تحجيمه إلى الصفر.

في الزاوية العلوية اليسرى من لوحة Knative Service، حدد أيقونة Open URL . يفتح التطبيق في علامة تبويب مستعرض جديدة. أغلق علامة التبويب وارجع إلى طريقة عرض المخطط. هناك يمكنك أن ترى أن التطبيق الخاص بك قد تم توسيع نطاقه إلى جراب واحد، لاستيعاب طلبك. بعد بضع دقائق، يتراجع تطبيقك إلى الصفر Pods.

لقطة شاشة تعرض التطبيق الذي تم توسيعه إلى Pod.

فرض مراجعة جديدة وتعيين توزيع نسبة استخدام الشبكة

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

في المخطط الذي تم إنشاؤه، حدد المراجعة المعروضة داخل الخدمة لعرض تفاصيلها. يجب أن تكون (REV)الشارات الموجودة أسفل حلقة الجراب وفي أعلى لوحة التفاصيل . في اللوحة الجانبية ، ضمن علامة التبويب الموارد ، قم بالتمرير لأسفل وحدد التكوين المقترن بالخدمة.

لقطة شاشة تعرض حلقة الجراب.

فرض تحديث التكوين عن طريق التبديل إلى علامة التبويب YAML والتمرير لأسفل لتحرير قيمة timeoutSeconds. غيّر القيمة إلى 301. حدد حفظ. في سيناريو العالم الحقيقي، يمكن أيضا تشغيل تحديثات التكوين عن طريق تحديث علامة صورة الحاوية.

لقطة شاشة توضح كيفية فرض مراجعة جديدة عن طريق تحديث التكوين.

بالعودة إلى طريقة عرض المخطط ، سترى أنه تم نشر مراجعة جديدة. حدد الخدمة التي تنتهي بالشارة (KSVC) وحدد الزر تعيين توزيع نسبة استخدام الشبكة. يجب أن تكون الآن قادرا على تقسيم نسبة استخدام الشبكة بين المراجعات في الخدمة.

لقطة شاشة توضح كيفية تعيين توزيع نسبة استخدام الشبكة.

ستوضح لك طريقة عرض الطوبولوجيا الآن كيفية توزيع نسبة استخدام الشبكة بين المراجعات.

لقطة شاشة توضح كيفية مراجعة توزيع نسبة استخدام الشبكة.

استخدام واجهة سطر الأوامر Knative (kn)

في الخطوات السابقة، استخدمت وحدة تحكم الويب OpenShift لإنشاء تطبيق ونشره إلى OpenShift Serverless. نظرا لأن OpenShift Serverless يقوم بتشغيل Knative أسفله، يمكنك أيضا استخدام واجهة سطر الأوامر Knative (kn) لإنشاء خدمات Knative.

إشعار

إذا لم تكن قد قمت بتثبيت kn CLI بالفعل، فتأكد من اتباع الخطوات الواردة في قسم المتطلبات الأساسية من هذه المقالة. تأكد أيضا من تسجيل الدخول باستخدام واجهة ocسطر الأوامر OpenShift .

سنستخدم صورة حاوية تم إنشاؤها بالفعل في quay.io/rhdevelopers/knative-tutorial-greeter.

نشر خدمة

لنشر الخدمة، قم بتشغيل الأمر التالي:

kn service create greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:quarkus \
--namespace demoserverless \
--revision-name greeter-v1

سترى إخراجا مشابها للآتي.

Creating service 'greeter' in namespace 'demoserverless':

  0.044s The Route is still working to reflect the latest desired specification.
  0.083s ...
  0.114s Configuration "greeter" is waiting for a Revision to become ready.
 10.420s ...
 10.489s Ingress has not yet been reconciled.
 10.582s Waiting for load balancer to be ready
 10.763s Ready to serve.

Service 'greeter' created to latest revision 'greeter-v1' is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

يمكنك استرداد قائمة المسارات في المشروع عن طريق تشغيل:

kn route list

ستحصل على قائمة بالمسارات في مساحة الاسم. افتح عنوان URL في مستعرض ويب لعرض الخدمة المنشورة.

NAME      URL                                                            READY
greeter   http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io   True

نشر إصدار جديد من الخدمة

انشر إصدارا جديدا من التطبيق عن طريق تشغيل الأمر التالي، وعن طريق تمرير :latest علامة الصورة ومتغير MESSAGE_PREFIXالبيئة :

kn service update greeter \
 --image quay.io/rhdevelopers/knative-tutorial-greeter:latest \
 --namespace demoserverless \
 --env MESSAGE_PREFIX=GreeterV2 \
 --revision-name greeter-v2

سترجع تأكيدا بأنه تم نشر مراجعة greeter-v2 جديدة.

Updating Service 'greeter' in namespace 'demoserverless':

  5.029s Traffic is not yet migrated to the latest revision.
  5.086s Ingress has not yet been reconciled.
  5.190s Waiting for load balancer to be ready
  5.332s Ready to serve.

Service 'greeter' updated to latest revision 'greeter-v2' is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

لعرض قائمة بجميع المراجعات وتوزيعات نسبة استخدام الشبكة الخاصة بها، قم بتشغيل الأمر التالي:

kn revision list

ستحصل على قائمة مشابهة للإخراج التالي. لاحظ أنه في هذه الحالة، تتلقى المراجعة الجديدة 100٪ من نسبة استخدام الشبكة.

NAME            SERVICE   TRAFFIC   TAGS   GENERATION   AGE     CONDITIONS   READY   REASON
greeter-v2      greeter   100%             2            90s     3 OK / 4     True
greeter-v1      greeter                    1            5m32s   3 OK / 4     True

عمليات النشر الزرقاء/الخضراء والكنارية

عند نشر مراجعة جديدة، يتم تعيين 100٪ من نسبة استخدام الشبكة بشكل افتراضي. لنفترض أنك تريد تنفيذ استراتيجية توزيع زرقاء/خضراء حيث يمكنك العودة بسرعة إلى الإصدار الأقدم من التطبيق. Knative يجعل هذا سهلا.

يمكنك تحديث الخدمة لإنشاء ثلاث علامات لنسبة استخدام الشبكة، مع تعيين 100٪ من نسبة استخدام الشبكة لها.

  • الحالي: يشير إلى الإصدار المنشور حاليا
  • prev: يشير إلى الإصدار السابق
  • الأحدث: يشير دائما إلى أحدث إصدار
kn service update greeter \
   --tag greeter-v2=current \
   --tag greeter-v1=prev \
   --tag @latest=latest

ستحصل على تأكيد مشابه للآتي.

Updating Service 'greeter' in namespace 'demoserverless':

  0.037s Ingress has not yet been reconciled.
  0.121s Waiting for load balancer to be ready
  0.287s Ready to serve.

Service 'greeter' with latest revision 'greeter-v2' (unchanged) is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

سرد المسارات باستخدام الأمر أدناه:

kn route describe greeter

ستتلقى إخراجا يعرض عناوين URL لكل علامة من العلامات، إلى جانب توزيع نسبة استخدام الشبكة الخاصة بها.

Name:       greeter
Namespace:  demoserverless
Age:        10m
URL:        http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Service:    greeter

Traffic Targets:
  100%  @latest (greeter-v2) #latest
        URL:  http://latest-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
    0%  greeter-v1 #prev
        URL:  http://prev-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
    0%  greeter-v2 #current
        URL:  http://current-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

[..]

لنفترض أنك تريد التراجع بسرعة إلى الإصدار السابق، يمكنك تحديث توزيع نسبة استخدام الشبكة لإرسال 100٪ من نسبة استخدام الشبكة إلى العلامة السابقة:

kn service update greeter --traffic current=0 --traffic prev=100

سرد المسارات والتحقق مرة أخرى، باستخدام الأمر التالي:

kn route describe greeter

سترى إخراجا يوضح أن 100٪ من توزيع نسبة استخدام الشبكة سينتقل إلى الإصدار السابق.

Name:       greeter
Namespace:  demoserverless
Age:        19m
URL:        http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Service:    greeter

Traffic Targets:
    0%  @latest (greeter-v2) #latest
        URL:  http://latest-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
  100%  greeter-v1 #prev
        URL:  http://prev-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
    0%  greeter-v2 #current
        URL:  http://current-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

[..]

استمتع بتوزيع نسبة استخدام الشبكة أثناء تحديث المسار الرئيسي في المستعرض (http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io في هذه الحالة).

تنظيف الموارد

عند الانتهاء من التطبيق، يمكنك تشغيل الأمر التالي لحذف المشروع:

oc delete project demoserverless

يمكنك أيضا حذف نظام المجموعة باتباع الإرشادات الواردة في البرنامج التعليمي: حذف مجموعة Azure Red Hat OpenShift 4.

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

في هذا الدليل، تعلمت كيفية:

  • تثبيت عامل التشغيل OpenShift Serverless وخدمة Knative
  • نشر مشروع بلا خادم باستخدام وحدة تحكم الويب
  • نشر مشروع بلا خادم باستخدام Knative CLI (kn)
  • تكوين عمليات النشر الزرقاء/الخضراء وتوزيع الكناري باستخدام Knative CLI (kn)

تعرف على المزيد حول كيفية إنشاء ونشر تطبيقات بلا خادم تعتمد على الحدث على Azure Red Hat OpenShift باستخدام OpenShift Serverless، اتبع وثائق بدء استخدام OpenShift Serverless ووثائق إنشاء التطبيقات بلا خادم وإدارتها.