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

في هذه المقالة، يمكنك نشر تطبيق إلى مجموعة OpenShift Azure Red Hat من التعليمات البرمجية المصدر باستخدام بنية من المصدر إلى صورة (S2I). المصدر إلى الصورة (S2I) هي عملية بناء لبناء صور حاوية قابلة للتكرار من التعليمات البرمجية المصدر. ينتج S2I صورا جاهزة للتشغيل عن طريق حقن التعليمات البرمجية المصدر في صورة حاوية والسماح للحاوية بإعداد هذه التعليمات البرمجية المصدر للتنفيذ. يمكنك جعل OpenShift ينشئ تطبيقا من المصدر لنشره، حتى لا تضطر إلى إنشاء حاوية يدويا مع كل تغيير. يمكن ل OpenShift بعد ذلك إنشاء إصدارات جديدة ونشرها تلقائيا عند إعلامك بتغييرات التعليمات البرمجية المصدر.

قبل أن تبدأ

ملاحظة

تفترض هذه المقالة أنك قمت بإعداد سر سحب. إذا لم يكن لديك سر سحب لمجموعتك، فيمكنك اتباع الوثائق لإضافة أو تحديث سر سحب Red Hat.

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

اتبع البرنامج التعليمي لإنشاء مجموعة 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".

إنشاء مشروع

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

oc new-project demoproject

من المفترض أن ترى مخرجا مشابها لما يلي:

Now using project "demoproject" 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

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

تعرف على عنوان 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

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

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 ويحدد صورة المنشئ المناسبة.

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

Azure Red Hat OpenShift project from Git - Route setup

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

Azure Red Hat OpenShift project from Git - Topology

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

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

بينما يتم توسيع نطاق التطبيق لأعلى أو لأسفل ، وبدء عمليات الطرح وإعادة إنشاء القرون ، سيتم تحريك تمثيل التطبيق في طريقة عرض الطبولوجيا لمنحك عرضا في الوقت الفعلي لما يجري.

سيؤدي النقر فوق رمز التطبيق إلى إظهار المزيد من التفاصيل كما هو موضح أدناه.

Azure Red Hat OpenShift project from Git - Details

عرض سجلات المنشئ

بمجرد بدء الإنشاء ، انقر فوق الارتباط عرض السجلات الموضح في لوحة الموارد .

Azure Red Hat OpenShift project from Git - Build logs

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

الوصول إلى التطبيق

بمجرد اكتمال إنشاء صورة التطبيق ، سيتم نشرها.

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

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

Azure Red Hat OpenShift project from Git - Browse app

النشر باستخدام سطر الأوامر

لقد تعلمت كيفية نشر تطبيق باستخدام وحدة تحكم الويب ، والآن يتيح نشر تطبيق الويب نفسه ، ولكن هذه المرة باستخدام أداة سطر الأوامر oc .

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

oc delete project demoproject

يجب أن تتلقى رسالة تأكيد بأنه demoproject تم حذفها.

project.project.openshift.io "demoproject" deleted

قم بإنشاء مرة demoproject أخرى عن طريق تشغيل:

oc new-project demoproject

داخل المشروع ، قم بإنشاء تطبيق جديد من المصدر على GitHub ، مع تحديد منشئ S2I لأحدث إصدار من Python المقدم.

oc new-app python:latest~https://github.com/sclorg/django-ex.git

يجب أن يعرض هذا الإخراج مشابها لما يلي:

--> Found image 8ec6f0d (4 weeks old) in image stream "openshift/python" under tag "latest" for "python:latest"

    Python 3.8
    ----------
   [...]

    Tags: builder, python, python38, python-38, rh-python38

    * A source build using source code from https://github.com/sclorg/django-ex.git will be created
      * The resulting image will be pushed to image stream tag "django-ex:latest"
      * Use 'oc start-build' to trigger a new build
    * This image will be deployed in deployment config "django-ex"
    * Port 8080/tcp will be load balanced by service "django-ex"
      * Other containers can access this service through the hostname "django-ex"

--> Creating resources ...
    imagestream.image.openshift.io "django-ex" created
    buildconfig.build.openshift.io "django-ex" created
    deploymentconfig.apps.openshift.io "django-ex" created
    service "django-ex" created
--> Success
    Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/django-ex'
    Run 'oc status' to view your app.

سيستخدم OpenShift اسم مستودع Git كاسم للتطبيق. راجع حالة الإنشاء والنشر عن طريق تشغيل:

oc status

عند اكتمال الإنشاء والنشر ، يجب أن ترى مخرجا مشابها له.

In project demoproject on server https://api.wzy5hg7x.eastus.aroapp.io:6443

svc/django-ex - 172.30.200.50:8080
  dc/django-ex deploys istag/django-ex:latest <-
    bc/django-ex source builds https://github.com/sclorg/django-ex.git on openshift/python:latest
    deployment #1 deployed about a minute ago - 1 pod


2 infos identified, use 'oc status --suggest' to see details.

لعرض التطبيق خارج مجموعة OpenShift، ستحتاج إلى إنشاء مسار عن طريق تشغيل:

oc expose service/django-ex

يجب أن تحصل على تأكيد.

route.route.openshift.io/django-ex exposed

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

oc get route django-ex

يجب أن تستعيد اسم المضيف المعين للمسار الذي يمكنك استخدامه للاستعراض للوصول إلى التطبيق المنشور.

NAME        HOST/PORT                                              PATH   SERVICES    PORT       TERMINATION   WILDCARD
django-ex   django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io          django-ex   8080-tcp                 None

تشغيل بناء ثنائي جديد

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

في الحالات التي تقوم فيها بتكرار التغييرات بسرعة ، يمكنك استخدام ما يسمى بنية ثنائية. لتوضيح هذا السيناريو، قم باستنساخ مستودع Git للتطبيق محليا عن طريق تشغيل:

git clone https://github.com/sclorg/django-ex.git

سيؤدي ذلك إلى إنشاء دليل django-ex فرعي يحتوي على التعليمات البرمجية المصدر للتطبيق:

Cloning into 'django-ex'...
remote: Enumerating objects: 980, done.
remote: Total 980 (delta 0), reused 0 (delta 0), pack-reused 980
Receiving objects: 100% (980/980), 276.23 KiB | 4.85 MiB/s, done.
Resolving deltas: 100% (434/434), done.

التغيير في الدليل الفرعي:

cd django-ex

افتح محرر Azure Cloud Shell المدمج:

code welcome/templates/welcome/index.html

مرر لأسفل وقم بتغيير السطر الذي يقول Welcome to your Django application on OpenShift أن أقول Welcome to Azure Red Hat OpenShift. احفظ الملف وأغلق المحرر من خلال القائمة الموجودة ... في أعلى اليمين.

Azure Red Hat OpenShift project from Git - Edit application in Azure Cloud Shell editor

بدء إنشاء جديد عن طريق تشغيل الأمر:

oc start-build django-ex --from-dir=. --wait

من خلال تمرير --from-dir=. العلامة ، سيقوم سطر الأوامر OpenShift بتحميل التعليمات البرمجية المصدر من الدليل المحدد ثم بدء عملية الإنشاء والنشر. يجب أن تحصل على إخراج مشابه لما هو موضح أدناه ، وبعد بضع دقائق ، يجب إكمال الإنشاء.

Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started

إذا قمت بتحديث المتصفح بالتطبيق ، فيجب أن ترى العنوان المحدث.

Azure Red Hat OpenShift project from Git - Browse updated app

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

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

oc delete project demoproject

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

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

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

  • إنشاء مشروع
  • نشر تطبيق من التعليمات البرمجية المصدر باستخدام وحدة تحكم الويب
  • نشر تطبيق من التعليمات البرمجية المصدر باستخدام سطر الأوامر OpenShift
  • تشغيل بنية ثنائية باستخدام سطر الأوامر OpenShift

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