نشر تطبيق من المصدر إلى Azure Red Hat OpenShift
في هذه المقالة، يمكنك نشر تطبيق إلى مجموعة Azure Red Hat OpenShift من التعليمات البرمجية المصدر باستخدام بنية من مصدر إلى صورة (S2I). المصدر إلى الصورة (S2I) هي عملية بناء لإنشاء صور حاوية قابلة للتكرار من التعليمات البرمجية المصدر. ينتج S2I صورا جاهزة للتشغيل عن طريق إدخال التعليمات البرمجية المصدر في صورة حاوية والسماح للحاوية بإعداد التعليمات البرمجية المصدر للتنفيذ. يمكنك أن تجعل OpenShift ينشئ تطبيقا من المصدر لنشره، لذلك لا يتعين عليك إنشاء حاوية يدويا مع كل تغيير. يمكن ل OpenShift بعد ذلك إنشاء إصدارات جديدة ونشرها تلقائيا عند إعلامه بتغييرات التعليمات البرمجية المصدر.
قبل البدء
إشعار
تفترض هذه المقالة أنك قمت بإعداد سر سحب. إذا لم يكن لديك سر سحب لنظام المجموعة الخاص بك، يمكنك اتباع الوثائق لإضافة سر سحب Red Hat أو تحديثه.
إنشاء نظام مجموعة
اتبع البرنامج التعليمي لإنشاء مجموعة 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 أو حدد الارتباط:
اتبع البرنامج التعليمي لتثبيت 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 مشابه لهذا العنوان.
https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/
شغّل عنوان "URL" الخاص بوحدة التحكم في أي مستعرض وسجّل الدخول باستخدام بيانات اعتماد kubeadmin
.
قم بالتبديل إلى منظور المطور بدلا من منظور المسؤول في القائمة اليمنى وحدد demoproject
في قائمة المشاريع. يجب أن تكون بعد ذلك في صفحة الطوبولوجيا للمشروع.
نظرا لأن المشروع فارغ، لا يجب العثور على أحمال عمل وسيتم تقديم خيارات مختلفة لك لكيفية نشر تطبيق.
النشر باستخدام وحدة تحكم الويب
من الخيارات المعروضة لنشر تطبيق، حدد من Git. سيؤدي ذلك إلى وصولك إلى صفحة استيراد من Git . استخدم https://github.com/sclorg/django-ex.git
ك URL Git Repo. يتم تنفيذ نموذج تطبيق الويب باستخدام لغة برمجة Python.
إشعار
يكتشف OpenShift أن هذا مشروع Python ويحدد صورة المنشئ المناسبة.
مرر لأسفل وصولا إلى خيارات متقدمة وتأكد من تحديد إنشاء مسار إلى التطبيق . سيؤدي هذا الإجراء إلى إنشاء مسار OpenShift، وهو طريقة لعرض خدمة عن طريق منحها اسم مضيف يمكن الوصول إليه خارجيا.
عندما تكون مستعدا، في أسفل الصفحة، انقر فوق إنشاء. سيؤدي ذلك إلى إنشاء موارد لإدارة إنشاء التطبيق ونشره. ثم ستتم إعادة توجيهك إلى نظرة عامة على الطوبولوجيا للمشروع.
توفر نظرة عامة على المخطط تمثيلا مرئيا للتطبيق الذي قمت بنشره. باستخدام طريقة العرض هذه، يمكنك مشاهدة بنية التطبيق الإجمالية.
يمكن النقر فوق أيقونة Git لأخذك إلى مستودع Git الذي تم إنشاء التعليمات البرمجية المصدر للتطبيق منه. تظهر الأيقونة المعروضة في الجزء السفلي الأيمن حالة إنشاء التطبيق. سيؤدي النقر فوق هذه الأيقونة إلى نقلك إلى قسم تفاصيل البناء. إذا كان التطبيق قد كشف المسارات، يمكن النقر فوق الأيقونة الموجودة في أعلى اليمين لفتح عنوان URL لمسار التطبيق الذي تم إنشاؤه.
بينما يقوم التطبيق بالتحجيم لأعلى أو لأسفل، وبدء الإطلاقات وإعادة إنشاء الجرابات، سيتم تحريك تمثيل التطبيق في طريقة عرض الطوبولوجيا لمنحك طريقة عرض في الوقت الحقيقي لما يحدث.
سيؤدي النقر على أيقونة التطبيق إلى إظهار المزيد من التفاصيل كما هو موضح أدناه.
عرض سجلات المنشئ
بمجرد بدء الإنشاء، انقر فوق الارتباط عرض السجلات الموضح في لوحة الموارد .
سيسمح لك هذا بمراقبة تقدم البناء أثناء تشغيله. ستقوم صورة المنشئ، Python في هذه الحالة، بإدخال التعليمات البرمجية لمصدر التطبيق في الصورة النهائية قبل دفعها إلى سجل الصور الداخلية OpenShift. سيكون البناء قد اكتمل بنجاح عندما ترى رسالة نهائية من "Push successful".
الوصول إلى التطبيق
بمجرد اكتمال إنشاء صورة التطبيق، سيتم نشرها.
انقر فوق تخطيط الشبكة في شريط القوائم الأيسر للعودة إلى طريقة عرض الطوبولوجيا للمشروع. عند إنشاء التطبيق باستخدام وحدة تحكم الويب، تم إنشاء مسار تلقائيا للتطبيق وسيتم كشفه خارج نظام المجموعة. كان عنوان 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
تعرف على المزيد حول كيفية إنشاء التطبيقات ونشرها باستخدام من مصدر إلى صورة واستراتيجيات بناء أخرى.