نشر تطبيق من المصدر إلى 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، أو انقر فوق الارتباط:
اتبع البرنامج التعليمي لتثبيت 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.
قم بالتبديل إلى منظور المطور بدلا من منظور المسؤول في القائمة الجانبية اليمنى وحدد demoproject في قائمة المشاريع. يجب أن تكون بعد ذلك في صفحة الطبولوجيا للمشروع.
نظرا لأن المشروع فارغ ، يجب عدم العثور على أي أحمال عمل وسيتم تقديمك مع خيارات مختلفة لكيفية نشر تطبيق.
النشر باستخدام وحدة تحكم الويب
من الخيارات المعروضة لنشر تطبيق، حدد من Git. سيؤدي ذلك إلى هبوطك في صفحة الاستيراد من Git . استخدم https://github.com/sclorg/django-ex.gitكعنوان URL ل Git Repo. يتم تنفيذ نموذج تطبيق الويب باستخدام لغة برمجة بايثون.
ملاحظة
يكتشف OpenShift أن هذا مشروع Python ويحدد صورة المنشئ المناسبة.
مرر لأسفل إلى الخيارات المتقدمة وتأكد من تحديد إنشاء مسار إلى التطبيق . سيؤدي هذا الإجراء إلى إنشاء مسار OpenShift ، وهي طريقة لفضح خدمة من خلال منحها اسم مضيف يمكن الوصول إليه خارجيا.
عندما تكون مستعدا، انقر في أسفل الصفحة على إنشاء. سيؤدي ذلك إلى إنشاء موارد لإدارة إنشاء التطبيق ونشره. ستتم إعادة توجيهك بعد ذلك إلى نظرة عامة على الطبولوجيا للمشروع.
توفر نظرة عامة على الطبولوجيا تمثيلا مرئيا للتطبيق الذي قمت بنشره. باستخدام طريقة العرض هذه، يمكنك رؤية بنية التطبيق الشاملة.
يمكن النقر فوق رمز Git لنقلك إلى مستودع Git الذي تم إنشاء شفرة المصدر للتطبيق منه. يظهر الرمز الظاهر في أسفل اليسار حالة إنشاء التطبيق. سيؤدي النقر فوق هذا الرمز إلى نقلك إلى قسم تفاصيل الإنشاء. إذا كان التطبيق يحتوي على مسارات مكشوفة، فيمكن النقر فوق الرمز الموجود في أعلى اليسار لفتح عنوان URL لمسار التطبيق الذي تم إنشاؤه.
بينما يتم توسيع نطاق التطبيق لأعلى أو لأسفل ، وبدء عمليات الطرح وإعادة إنشاء القرون ، سيتم تحريك تمثيل التطبيق في طريقة عرض الطبولوجيا لمنحك عرضا في الوقت الفعلي لما يجري.
سيؤدي النقر فوق رمز التطبيق إلى إظهار المزيد من التفاصيل كما هو موضح أدناه.
عرض سجلات المنشئ
بمجرد بدء الإنشاء ، انقر فوق الارتباط عرض السجلات الموضح في لوحة الموارد .
سيسمح لك ذلك بمراقبة تقدم البنية أثناء تشغيلها. ستقوم صورة المنشئ ، Python في هذه الحالة ، بحقن شفرة مصدر التطبيق في الصورة النهائية قبل دفعها إلى سجل الصور الداخلي OpenShift. سيتم الانتهاء من البناء بنجاح عندما ترى رسالة نهائية "دفع بنجاح".
الوصول إلى التطبيق
بمجرد اكتمال إنشاء صورة التطبيق ، سيتم نشرها.
انقر على طبولوجيا في شريط القوائم الأيمن للعودة إلى طريقة عرض الطبولوجيا للمشروع. عند إنشاء التطبيق باستخدام وحدة تحكم الويب، تم إنشاء مسار تلقائيا للتطبيق وسيتم كشفه خارج المجموعة. كان عنوان URL الذي يمكن استخدامه للوصول إلى التطبيق من مستعرض ويب مرئيا في علامة التبويب الموارد للتطبيق الذي قمت بعرضه مسبقا.
من طريقة عرض الطبولوجيا ، يمكنك الوصول إلى عنوان URL للتطبيق المنشور بالنقر فوق الرمز الموجود أعلى يمين الحلقة. عند اكتمال النشر ، انقر فوق الرمز وسترى التطبيق الذي قمت بنشره.
النشر باستخدام سطر الأوامر
لقد تعلمت كيفية نشر تطبيق باستخدام وحدة تحكم الويب ، والآن يتيح نشر تطبيق الويب نفسه ، ولكن هذه المرة باستخدام أداة سطر الأوامر 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. احفظ الملف وأغلق المحرر من خلال القائمة الموجودة ... في أعلى اليمين.
بدء إنشاء جديد عن طريق تشغيل الأمر:
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
إذا قمت بتحديث المتصفح بالتطبيق ، فيجب أن ترى العنوان المحدث.
تنظيف الموارد
عند الانتهاء من استخدام التطبيق، يمكنك تشغيل الأمر التالي لحذف المشروع:
oc delete project demoproject
يمكنك أيضا حذف المجموعة باتباع الإرشادات الواردة في البرنامج التعليمي: حذف مجموعة Azure Red Hat OpenShift 4.
الخطوات التالية
في هذا الدليل، تعلمت كيفية:
- إنشاء مشروع
- نشر تطبيق من التعليمات البرمجية المصدر باستخدام وحدة تحكم الويب
- نشر تطبيق من التعليمات البرمجية المصدر باستخدام سطر الأوامر OpenShift
- تشغيل بنية ثنائية باستخدام سطر الأوامر OpenShift
تعرف على المزيد حول كيفية إنشاء التطبيقات ونشرها باستخدام استراتيجيات إنشاء من المصدر إلى الصورة واستراتيجيات الإنشاء الأخرى.
