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

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

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

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

قبل أن تبدأ

قم بإنشاء نظام الكتلة

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

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

لإدارة مجموعة OpenShift ذات القبعة الحمراء Azure، يمكنك استخدام oc، عميل سطر الأوامر OpenShift.

ملاحظة

نوصي بتثبيت سطر الأوامر OpenShift على Azure Cloud Shell واستخدامه لجميع عمليات سطر الأوامر أدناه. شغِّل shell الخاص بك من shell.azure.com، أو انقر فوق الارتباط:

Embed launch

اتبع البرنامج التعليمي لتثبيت 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

تشغيل وحدة تحكم الويب

تعرف على عنوان URL لوحدة تحكم الويب بنظام المجموعة من خلال تشغيل:

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

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

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

شغّل عنوان "URL" الخاص بوحدة التحكم في أي مستعرض وسجّل الدخول باستخدام بيانات اعتماد kubeadmin.

Azure Red Hat OpenShift login screen

تثبيت عامل التشغيل OpenShift بدون خادم

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

Look for the OpenShift Serverless operator

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

Click on Install to install the operator

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

Operator installation page

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

The operator is installed and is ready for use

تثبيت خدمة Knative

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

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

قم بالتبديل إلى knative-serving مساحة الاسم بالنقر فوق القائمة المنسدلة للمشروع في أعلى اليسار ، ثم ضمن واجهات برمجة التطبيقات المقدمة ، انقر فوق إنشاء مثيل في بطاقة Knative Serving .

Click to create Knative Service instance

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

Keep the defaults and click on Create

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

Knative Serving ready

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

لإنشاء مشروع جديد يسمى 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, try:

    oc new-app django-psql-example

to build a new example application in Python. 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 project topology

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

من الخيارات المعروضة لنشر تطبيق، حدد من Git. سيؤدي ذلك إلى هبوطك في صفحة الاستيراد من Git . استخدم https://github.com/sclorg/django-ex.gitكعنوان URL ل Git Repo. يتم تنفيذ نموذج تطبيق الويب باستخدام لغة برمجة بايثون.

Azure Red Hat OpenShift project from Git

ملاحظة

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

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

Azure Red Hat OpenShift project - Knative

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

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

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

Azure Red Hat OpenShift project topology - Build successful

الاطلاع على مقياس الطلب

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

Azure Red Hat OpenShift project topology - Scaled to zero

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

Azure Red Hat OpenShift project topology - Scaled to one

فرض مراجعة جديدة وتحديد توزيع حركة المرور

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

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

Azure Red Hat OpenShift project topology - Revision

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

Force a new revision by updating the configuration

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

Set traffic distribution

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

Review traffic distribution

استخدام أداة سطر الأوامر 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٪ من الزيارات إلى

  • الحالي: نقاط في الإصدار الحالي المنشور
  • السابق: نقاط في الإصدار السابق
  • الأحدث: يشير دائما إلى أحدث إصدار
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 بدون خادم وخدمة Knative
  • نشر مشروع بدون خادم باستخدام وحدة تحكم الويب
  • نشر مشروع بدون خادم باستخدام Knative CLI (kn)
  • تكوين عمليات النشر باللون الأزرق / الأخضر وعمليات نشر الكناري باستخدام Knative CLI (kn)

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