بيئة التطوير

1. نظرة عامة

يوضّح هذا الدرس التطبيقي الميزات والإمكانات المصمَّمة لتبسيط سير عمل التطوير لمهندسي البرامج المكلّفين بتطوير تطبيقات Python في بيئة تستخدم حاويات. يتطلّب تطوير الحاويات المعتاد أن يفهم المستخدم تفاصيل الحاويات وعملية التصميم. بالإضافة إلى ذلك، على المطوّرين عادةً إيقاف عملية التطوير مؤقتًا والانتقال من بيئة التطوير المتكاملة (IDE) لاختبار تطبيقاتهم وتصحيح الأخطاء فيها في بيئات بعيدة. باستخدام الأدوات والتكنولوجيات المذكورة في هذا البرنامج التعليمي، يمكن للمطوّرين العمل بفعالية مع التطبيقات المستندة إلى حاويات بدون مغادرة بيئة التطوير المتكاملة.

58a4cdd3ed7a123a.png

ما هي خدمة Cloud Workstations؟

توفّر خدمة Cloud Workstations بيئات تطوير مُدارة على Google Cloud تتضمّن ميزات أمان مدمجة وبيئات تطوير مُعدّة مسبقًا وقابلة للتخصيص. يمكنك الوصول إلى Cloud Workstations من خلال بيئة تطوير متكاملة مستندة إلى المتصفّح، أو من خلال العديد من أدوات تعديل الرموز البرمجية المحلية (مثل VSCode أو بيئات تطوير متكاملة من JetBrains مثل IntelliJ IDEA Ultimate وPyCharm Professional)، أو من خلال SSH.

تستخدم Cloud Workstations الموارد التالية:

  • ينشئ المشرفون مجموعات محطات عمل.
  • في كل مجموعة من محطات العمل، ينشئ المشرفون إعدادًا واحدًا أو أكثر لمحطة العمل يعمل كنموذج لمحطات العمل.
  • يمكن للمطوّرين إنشاء محطات عمل تحدّد بيئات التطوير التي توفّر بيئة تطوير متكاملة (IDE) على السحابة الإلكترونية وأدوات لغوية ومكتبات وغير ذلك.

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

تساعد Cloud Workstations في نقل الأمان إلى اليسار من خلال تعزيز وضع الأمان في بيئات تطوير التطبيقات. تتضمّن هذه الخدمة ميزات أمان، مثل "عناصر التحكّم في خدمة VPC"، وعمليات الدخول أو الخروج الخاصة، وتحديث الصور الإلزامي، وسياسات الوصول إلى "إدارة الهوية وإمكانية الوصول".

ما هي Cloud Code؟

توفّر Cloud Code إمكانية استخدام بيئة تطوير متكاملة لدورة التطوير الكاملة لتطبيقات Kubernetes وCloud Run، بدءًا من إنشاء تطبيق جديد وتخصيصه من نماذج القوالب إلى تشغيل التطبيق النهائي. تساعدك Cloud Code في كل خطوة من خلال عيّنات جاهزة للتنفيذ ومقتطفات إعدادات جاهزة للاستخدام وتجربة تصحيح أخطاء مخصّصة، ما يسهّل عملية التطوير باستخدام Kubernetes وCloud Run.

في ما يلي بعض ميزات Cloud Code:

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

مزيد من المعلومات عن ميزات Cloud Code الأخرى

ما ستتعلمه

في هذا الدرس التطبيقي، ستتعرّف على طرق التطوير باستخدام الحاويات في Google Cloud Platform، بما في ذلك:

  • مراجعة Cloud Workstations
  • تشغيل Workstation
  • مراجعة Cloud Code
  • تصحيح الأخطاء على Kubernetes

2. الإعداد والمتطلبات

إعداد البيئة بوتيرة ذاتية

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. لإيقاف الموارد كي لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بأكمله. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

إعداد البيئة

في Cloud Shell، اضبط رقم تعريف مشروعك ورقم المشروع. احفظها كمتغيرات PROJECT_ID وPROJECT_ID.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
    --format='value(projectNumber)')

في هذا التمرين العملي، ستنشر الرمز البرمجي على GKE. ستستخدم أيضًا محطات عمل Cloud كبيئة تطوير متكاملة.

يُعدّ برنامج الإعداد النصي أدناه هذه البنية الأساسية لك.

  1. نزِّل نص الإعداد البرمجي واجعله قابلاً للتنفيذ.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/setup_with_cw.sh
chmod +x setup_with_cw.sh
  1. افتح ملف setup_with_cw.sh وعدِّل قيم كلمات المرور التي تم ضبطها حاليًا على CHANGEME
  2. نفِّذ نص الإعداد لإنشاء مجموعة GKE ستستخدمها في هذا الدرس التطبيقي. سيستغرق هذا الإعداد حوالي 20 دقيقة.
./setup_with_cw.sh &
  1. افتح محطات عمل Cloud في Cloud Console. انتظِر إلى أن تصبح حالة المجموعة READY قبل الانتقال إلى الخطوات التالية.
  2. إذا تم قطع اتصال جلسة Cloud Shell، انقر على "إعادة الاتصال" ثم نفِّذ أمر gcloud cli لضبط رقم تعريف المشروع. استبدِل رقم تعريف المشروع النموذجي أدناه برقم تعريف مشروعك على Qwiklabs قبل تنفيذ الأمر.
gcloud config set project qwiklabs-gcp-project-id
  1. نزِّل النص البرمجي أدناه وشغِّله في الوحدة الطرفية لإنشاء إعدادات Cloud Workstations.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh

مجموعة Cloud Workstations وإعداداتها

افتح محطات عمل Cloud في Cloud Console. تأكَّد من أنّ المجموعة في الحالة READY.

305e1a3d63ac7ff6.png

التحقّق من حالة عمليات الإعداد الحالية

2e23c2e9983d1ccf.png

أنشئ محطة عمل جديدة.

a53adeeac81a78c8.png

غيِّر الاسم إلى my-workstation واختَر الإعداد الحالي: codeoss-python.

f052cd47701ec774.png

تشغيل Workstation

  1. بدء محطة العمل وإطلاقها سيستغرق بدء تشغيل "محطة العمل" بضع لحظات.

682f8a307032cba3.png

  1. السماح بملفات تعريف الارتباط التابعة لجهات خارجية من خلال النقر على الرمز في شريط العناوين 1b8923e2943f9bc4.png

fcf9405b6957b7d7.png

  1. انقر على "هل تواجهك مشكلة في الموقع الإلكتروني؟".

36a84c0e2e3b85b.png

  1. انقر على "السماح بملفات تعريف الارتباط".

2259694328628fba.png

  1. بعد تشغيل محطة العمل، سيظهر لك بيئة التطوير المتكاملة Code OSS.

انقر على "وضع علامة اكتمال" في صفحة "البدء" في بيئة التطوير المتكاملة لمحطة العمل

94874fba9b74cc22.png

3- نظرة عامة حول Cloud Code

مراجعة الأقسام المختلفة المتاحة في Cloud Code

  • تطوير Kubernetes: يمكنك الحصول على بيئة تطوير وتصحيح أخطاء متكاملة بالكامل في Kubernetes ضمن بيئة التطوير المتكاملة (IDE). إنشاء المجموعات وإدارتها مباشرةً من داخل بيئة التطوير المتكاملة
  • تصحيح أخطاء التطبيقات قيد التشغيل: تصحيح أخطاء الرمز البرمجي داخل بيئات التطوير المتكاملة باستخدام Cloud Code for VS Code وCloud Code for IntelliJ من خلال الاستفادة من ميزات تصحيح الأخطاء المضمّنة في بيئة التطوير المتكاملة
  • استكشاف عمليات النشر عرض الموارد الأساسية والبيانات الوصفية لمجموعات Kubernetes وخدمات Cloud Run يمكنك جلب وصف أو عرض السجلّات أو إدارة الأسرار أو الحصول على نافذة طرفية مباشرةً في لوحة.
  • تبسيط عملية التطوير المحلي في Kubernetes: تستخدم إضافة Cloud Code for IDEs أدوات شائعة مثل Skaffold وJib وkubectl لتقديم ملاحظات مستمرة حول الرمز البرمجي في الوقت الفعلي.

e4e89eea9ff45dff.png

تسجيل الدخول إلى Google Cloud

  1. انقر على رمز Cloud Code واختَر "تسجيل الدخول إلى Google Cloud":

1769afd39be372ff.png

  1. انقر على "متابعة لتسجيل الدخول".

923bb1c8f63160f9.png

  1. تحقَّق من الناتج في "نافذة الأوامر" وافتح الرابط:

517fdd579c34aa21.png

  1. سجِّل الدخول باستخدام بيانات اعتماد الطلاب في Qwiklabs.

db99b345f7a8e72c.png

  1. اختَر "السماح":

a5376553c430ac84.png

  1. انسخ رمز التحقّق وارجع إلى علامة التبويب "محطة العمل".

6719421277b92eac.png

  1. ألصِق رمز التحقّق واضغط على Enter.

e9847cfe3fa8a2ce.png

انقر على الزر "السماح" إذا ظهرت لك هذه الرسالة، لتتمكّن من النسخ واللصق في محطة العمل.

58149777e5cc350a.png

4. إنشاء تطبيق Python أوّلي جديد

في هذا القسم، ستنشئ تطبيق Python جديدًا.

  1. افتح نافذة Terminal جديدة.

c31d48f2e4938c38.png

  1. إنشاء دليل جديد وفتحه كمساحة عمل
mkdir music-service && cd music-service

code-oss-cloud-workstations -r --folder-uri="$PWD"
  1. أنشئ ملفًا باسم requirements.txt وانسخ المحتوى التالي فيه

789e8389170bd900.png

Flask
gunicorn
ptvsd==4.3.2
  1. أنشئ ملفًا باسم app.py والصِق الرمز التالي فيه
import os
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/")
def hello_world():
    message="Hello, World!"
    return message

if __name__ == '__main__':
    server_port = os.environ.get('PORT', '8080')
    app.run(debug=False, port=server_port, host='0.0.0.0')

  1. أنشئ ملفًا باسم Dockerfile والصِق فيه ما يلي
FROM python:3.8
ARG FLASK_DEBUG=0
ENV FLASK_DEBUG=$FLASK_DEBUG
ENV FLASK_APP=app.py
WORKDIR /app
COPY requirements.txt .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
COPY . .
ENTRYPOINT ["python3", "-m", "flask", "run", "--port=8080", "--host=0.0.0.0"]

ملاحظة: يتيح لك FLASK_DEBUG=1 إعادة تحميل تغييرات الرمز تلقائيًا إلى تطبيق Python flask. يتيح لك Dockerfile تمرير هذه القيمة كمعلَمة إنشاء.

إنشاء بيانات

في الوحدة الطرفية، نفِّذ الأمر التالي لإنشاء skaffold.yaml وdeployment.yaml تلقائيَين

  1. ابدأ Skaffold باستخدام الأمر التالي
skaffold init --generate-manifests

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

اختيار:

  • 8080 للمنفذ
  • y لحفظ الإعدادات

تعديل إعدادات Skaffold

  • تغيير اسم التطبيق التلقائي
  • فتح "skaffold.yaml"
  • اختَر اسم الصورة المضبوطة حاليًا على dockerfile-image
  • انقر بزر الماوس الأيمن واختَر "تغيير كل التكرارات"
  • اكتب الاسم الجديد باللغة python-app
  • عدِّل قسم الإنشاء أكثر من ذلك ليصبح
  • إضافة docker.buildArgs إلى بطاقة FLASK_DEBUG=1
  • مزامنة الإعدادات لتحميل أي تغييرات على ملفات *.py من بيئة التطوير المتكاملة إلى الحاوية قيد التشغيل

بعد التعديلات، سيكون قسم الإنشاء في ملف skaffold.yaml على النحو التالي:

build:
 artifacts:
 - image: python-app
   docker:
     buildArgs:
       FLASK_DEBUG: "1"
     dockerfile: Dockerfile
   sync:
     infer:
     - '**/*.py'

تعديل ملف إعداد Kubernetes

  1. تغيير الاسم التلقائي
  • فتح ملف deployment.yaml
  • اختَر اسم الصورة المضبوطة حاليًا على dockerfile-image
  • انقر بزر الماوس الأيمن واختَر "تغيير كل التكرارات"
  • اكتب الاسم الجديد باللغة python-app

5- التعرّف على عملية التطوير

بعد إضافة منطق النشاط التجاري، يمكنك الآن نشر تطبيقك واختباره. سيعرض القسم التالي كيفية استخدام المكوّن الإضافي Cloud Code. يتكامل هذا المكوّن الإضافي مع Skaffold، من بين أمور أخرى، لتبسيط عملية التطوير. عند النشر إلى GKE في الخطوات التالية، ستنشئ Cloud Code وSkaffold تلقائيًا صورة الحاوية، وتدفعها إلى Container Registry، ثم تنشر تطبيق your إلى GKE. يحدث ذلك وراء الكواليس، حيث يتم تجريد التفاصيل بعيدًا عن مسار المطوّر.

إضافة مجموعة Kubernetes

  1. إضافة مجموعة

62a3b97bdbb427e5.png

  1. اختَر Google Kubernetes Engine:

9577de423568bbaa.png

  1. اختَر مشروعًا.

c5202fcbeebcd41c.png

  1. اختَر "python-cluster" الذي تم إنشاؤه في عملية الإعداد الأولية.

719c2fc0a7f9e84f.png

  1. يظهر الآن العنقد في قائمة "عناقيد Kubernetes" ضمن Cloud Code. يمكنك التنقّل في المجموعة واستكشافها من هنا.

7e5f50662d4eea3c.png

النشر على Kubernetes

  1. في اللوحة أسفل "محرّر Cloud Shell"، انقر على Cloud Code 

d99a88992e15fea9.png

  1. في اللوحة التي تظهر في أعلى الصفحة، اختَر التشغيل على Kubernetes.

إذا طُلب منك ذلك، اختَر "نعم" لاستخدام سياق Kubernetes الحالي.

bfd65e9df6d4a6cb.png

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

  1. في المرة الأولى التي تنفّذ فيها الأمر، سيظهر طلب في أعلى الشاشة يسألك عمّا إذا كنت تريد سياق Kubernetes الحالي، اختَر "نعم" للقبول واستخدام السياق الحالي.
  2. بعد ذلك، ستظهر رسالة تطلب منك تحديد سجلّ الحاويات الذي تريد استخدامه. اضغط على مفتاح Enter لقبول القيمة التلقائية المقدَّمة
  3. اختَر علامة التبويب "الإخراج" في اللوحة السفلية للاطّلاع على مستوى التقدّم والإشعارات. استخدِم القائمة المنسدلة لاختيار "Kubernetes: تشغيل/تصحيح الأخطاء"

9c87ccbf5d06f50a.png

  1. اختَر "Kubernetes: Run/Debug - Detailed" (Kubernetes: تشغيل/تصحيح الأخطاء - تفصيلي) في القائمة المنسدلة للقناة على اليسار لعرض تفاصيل إضافية وسجلات يتم بثها مباشرةً من الحاويات.

804abc8833ffd571.png

عند اكتمال عملية الإنشاء والاختبارات، ستتضمّن سجلّات علامة التبويب "الإخراج" عنوان URL http://localhost:8080 المُدرَج في العرض "Kubernetes: تشغيل/تصحيح الأخطاء".

  1. في نافذة Cloud Code الطرفية، مرِّر مؤشر الماوس فوق عنوان URL الأول في الناتج (http://localhost:8080)، ثم انقر على Open Web Preview (فتح معاينة الويب) في تلميح الأداة الذي يظهر.
  2. سيتم فتح علامة تبويب جديدة في المتصفّح وعرض الرسالة: Hello, World!

إعادة التحميل السريع

  1. افتح ملف app.py
  2. تغيير رسالة الترحيب إلى Hello from Python

لاحظ على الفور أنّه في نافذة Output، في طريقة العرض Kubernetes: Run/Debug، يزامن برنامج المراقبة الملفات المعدَّلة مع الحاوية في Kubernetes.

Update initiated
Build started for artifact python-app
Build completed for artifact python-app

Deploy started
Deploy completed

Status check started
Resource pod/python-app-6f646ffcbb-tn7qd status updated to In Progress
Resource deployment/python-app status updated to In Progress
Resource deployment/python-app status completed successfully
Status check succeeded
...
  1. إذا انتقلت إلى طريقة العرض Kubernetes: Run/Debug - Detailed، ستلاحظ أنّها تتعرّف على تغييرات الملفات ثم تنشئ التطبيق وتعيد نشره.
files modified: [app.py]
Syncing 1 files for gcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Copying files:map[app.py:[/app/app.py]]togcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Watching for changes...
[python-app] * Detected change in '/app/app.py', reloading
[python-app] * Restarting with stat
[python-app] * Debugger is active!
[python-app] * Debugger PIN: 744-729-662
  1. أعِد تحميل علامة تبويب المتصفح التي ظهرت فيها النتائج السابقة للاطّلاع على النتائج المعدَّلة.

تصحيح الأخطاء

  1. انتقِل إلى "عرض تصحيح الأخطاء" وأوقِف سلسلة المحادثات الحالية 647213126d7a4c7b.png. إذا طُلب منك ذلك، يمكنك اختيار التنظيف بعد كل عملية تشغيل.
  2. 70d6bd947d04d1e6.png
  3. انقر على Cloud Code في القائمة السفلية، ثم اختَر Debug on Kubernetes لتشغيل التطبيق في وضع debug.

b9465c6825caf685.png

  • في طريقة العرض Kubernetes Run/Debug - Detailed لنافذة Output، لاحظ أنّ Skaffold سينشر هذا التطبيق في وضع تصحيح الأخطاء.
  1. في المرة الأولى التي يتم فيها تشغيل هذا الإجراء، سيظهر طلب يسأل عن مكان المصدر داخل الحاوية. ترتبط هذه القيمة بالأدلة في Dockerfile.

اضغط على Enter لقبول القيمة التلقائية

fccc866f32b5ed86.png

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

  1. عند اكتمال العملية ستلاحظ ربط أداة تصحيح الأخطاء وعلامة التبويب "الإخراج" التي تعرض: Attached debugger to container "python-app-8476f4bbc-h6dsl" successfully.، وسيتم إدراج عنوان URL http://localhost:8080.
Port forwarding pod/python-app-8bd64cf8b-cskfl in namespace default, remote port 5678 -> http://127.0.0.1:5678
  1. يتغيّر لون شريط الحالة السفلي من الأزرق إلى البرتقالي للإشارة إلى أنّه في "وضع تصحيح الأخطاء".

b2abd61a129ed76.png

  1. في العرض Kubernetes Run/Debug، لاحظ أنّه تم بدء تشغيل حاوية قابلة للتصحيح
**************URLs*****************
Forwarded URL from service python-app: http://localhost:8080
Debuggable container started pod/python-app-8bd64cf8b-cskfl:python-app (default)
Update succeeded
***********************************

استخدام نقاط الإيقاف

  1. افتح ملف app.py
  2. ابحث عن العبارة التي تقول return message
  3. أضِف نقطة توقّف إلى هذا السطر من خلال النقر على المساحة الفارغة على يمين رقم السطر. سيظهر مؤشر أحمر للإشارة إلى أنّه تم ضبط نقطة الإيقاف.
  4. أعِد تحميل المتصفّح ولاحظ أنّ أداة تصحيح الأخطاء توقف العملية عند نقطة التوقف وتتيح لك التحقّق من المتغيرات وحالة التطبيق الذي يتم تشغيله عن بُعد في GKE.
  5. انقر على قسم "المتغيّرات"
  6. انقر على "المتغيرات المحلية"، وستجد المتغير "message".
  7. انقر مرّتين على اسم المتغيّر "message" (الرسالة)، وفي النافذة المنبثقة، غيِّر القيمة إلى قيمة مختلفة مثل "Greetings from Python"
  8. انقر على الزر "متابعة" في لوحة التحكّم في تصحيح الأخطاء 607c33934f8d6b39.png
  9. راجِع الردّ في المتصفّح الذي يعرض الآن القيمة المعدَّلة التي أدخلتها للتو.
  10. أوقِف وضع "تصحيح الأخطاء" من خلال الضغط على زر الإيقاف 647213126d7a4c7b.png وأزِل نقطة التوقف من خلال النقر عليها مرة أخرى.

6. تنظيف

تهانينا! في هذا التمرين المعملي، أنشأت تطبيق Python جديدًا من البداية وأعددته للعمل بفعالية مع الحاويات. بعد ذلك، نشرت تطبيقك وأصلحت أخطاءه في مجموعة GKE بعيدة باتّباع مسار المطوّر نفسه المتوفّر في حِزم التطبيقات التقليدية.

لإجراء عملية تنظيف بعد إكمال الدرس التطبيقي، اتّبِع الخطوات التالية:

  1. حذف الملفات المستخدَمة في المختبر
cd ~ && rm -rf ~/music-service
  1. احذف المشروع لإزالة جميع البنية الأساسية والموارد ذات الصلة

تاريخ آخر تعديل: 22/3/2023