مرحبًا بك في Cloud Run مع C#

1. مقدمة

89eb4723767d4525.png

‫Cloud Run هي منصة مُدارة تتيح لك تشغيل حاويات لا يتم تسجيل بياناتها ويمكن استدعاؤها من خلال طلبات HTTP. ‫Cloud Run هي خدمة بدون خادم: فهي تجرّد جميع عمليات إدارة البنية الأساسية، ما يتيح لك التركيز على أهم ما لديك، أي إنشاء تطبيقات رائعة.

وهي تستند إلى Knative، ما يتيح لك اختيار تشغيل الحاويات إما بشكل مُدار بالكامل باستخدام Cloud Run، أو في مجموعة Google Kubernetes Engine باستخدام Cloud Run على GKE.

الهدف من هذا الدرس التطبيقي حول الترميز هو إنشاء صورة حاوية ونشرها على Cloud Run.

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

إعداد البيئة بالسرعة التي تناسبك

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

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

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

Google Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، سنستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

Cloud Shell هي بيئة تطوير وعمليات على الإنترنت يمكن الوصول إليها من أي مكان باستخدام المتصفح. يمكنك إدارة مواردك باستخدام وحدة طرفية على الإنترنت محمّلة مسبقًا بأدوات مثل أداة سطر الأوامر gcloud وkubectl وغير ذلك. يمكنك أيضًا تطوير تطبيقاتك المستندة إلى السحابة الإلكترونية وإنشاؤها وتصحيح أخطائها ونشرها باستخدام محرّر Cloud Shell على الإنترنت.

يتم تحميل هذا الجهاز الظاهري بجميع أدوات التطوير التي تحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت وتعمل مباشرةً في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يعني ذلك أنّ كل ما تحتاج إليه لهذا الدرس التطبيقي حول الترميز هو متصفّح (نعم، يمكن استخدامه على جهاز Chromebook).

  • لتفعيل Cloud Shell من Cloud Console، ما عليك سوى النقر على تفعيل Cloud Shell :

cb81e7c8e34bc8d.png

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة توضّح ماهيتها. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

bfde7b083abc9544.png

لن يستغرق توفير البيئة سوى بضع ثوانٍ :

cbb597d2be277a14.png

بعد الاتصال بـ Cloud Shell، من المفترض أن تظهر لك رسالة تفيد بأنّك قد أثبتّ هويتك :

gcloud auth list

ناتج الأمر

Credentialed Accounts

ACTIVE: *
ACCOUNT: <my-account>@<mydomain>

يجب أيضًا ضبط المشروع مسبقًا على PROJECT_ID (بافتراض أنّك اخترت مشروعًا في وحدة تحكّم الويب) :

gcloud config list project

ناتج الأمر

[core]
project = <PROJECT_ID>

إذا لم يتم ضبط المشروع لسبب ما، ما عليك سوى تنفيذ الأمر التالي:

gcloud config set project <PROJECT_ID>

هل تبحث عن PROJECT_ID؟ اطّلِع على القائمة المنسدلة في أعلى Cloud Console :

2c7a57249d954735.png

يمكنك أيضًا الاطّلاع على تفاصيل مشروعك باستخدام قسم "الإعدادات والأدوات":

791f101797cfef39.png

يضبط Cloud Shell أيضًا بعض متغيرات البيئة تلقائيًا، ما قد يكون مفيدًا عند تنفيذ الأوامر المستقبلية.

echo $GOOGLE_CLOUD_PROJECT

ناتج الأمر

<PROJECT_ID>
  • أخيرًا، يمكنك ضبط المنطقة التلقائية :
gcloud config set compute/zone us-central1-f

يمكنك اختيار مناطق مختلفة. لمزيد من المعلومات، يُرجى الاطّلاع على المناطق والأقاليم.

تفعيل Cloud Run API

من Cloud Shell، فعِّل Cloud Run API :

gcloud services enable run.googleapis.com

من المفترض أن يؤدي ذلك إلى ظهور رسالة نجاح مشابهة لما يلي :

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

3- كتابة نموذج التطبيق

سننشئ تطبيقًا بسيطًا بلغة ASP.NET C#‎ يستجيب لطلبات HTTP.

لإنشاء تطبيقك، استخدِم أداة سطر الأوامر dotnet في Cloud Shell:

dotnet new web -o helloworld-csharp

التغيير إلى دليل helloworld-csharp:

cd helloworld-csharp

بعد ذلك، عدِّل Program.cs ليتطابق مع ما يلي:

var builder = WebApplication.CreateBuilder(args);

var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var url = $"http://0.0.0.0:{port}";
builder.WebHost.UseUrls(url);

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

تنشئ هذه التعليمات البرمجية خادم ويب أساسيًا يستمع إلى المنفذ المحدّد بواسطة متغيّر البيئة PORT ويردّ بالرسالة Hello World.

يمكنك اختبار التطبيق من خلال تشغيله محليًا في Cloud Shell. من المفترض أن تظهر لك عملية الاستماع على المنفذ 8080:

$ dotnet run
Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json...
Hosting environment: Development
Content root path: /home/atameldev/helloworld-csharp
Now listening on: http://0.0.0.0:8080
Application started. Press Ctrl+C to shut down.

4. النشر على Cloud Run

انشر تطبيقك على Cloud Run باستخدام الأمر التالي:

gcloud run deploy hello-world \
    --allow-unauthenticated \
    --region us-central1 \
    --source .
  • hello-world هو اسم الخدمة.
  • تعمل العلامة allow-unauthenticated على نشر الخدمة كخدمة متاحة للجميع بدون متطلبات مصادقة.
  • ‫us-central1 هي المنطقة التي سيتم نشر التطبيق فيها.
  • يحدّد الخيار source الموقع الجغرافي للمصدر الذي سيتم إنشاء التطبيق منه. تستخدم Cloud Run حِزم الإنشاء لإنشاء حاوية تلقائيًا من رمز المصدر.

انتظِر بضع دقائق إلى أن يكتمل التوزيع. عند النجاح، يعرض سطر الأوامر عنوان URL للخدمة :

Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic.
Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app

يمكنك الآن الانتقال إلى الحاوية التي تم نشرها من خلال فتح عنوان URL الخاص بالخدمة في متصفّح ويب :

85e7fbbd264444c9.png

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

5- حان وقت التنظيف

يمكنك إما حذف مشروعك على Google Cloud Platform لتجنُّب تحمّل الرسوم، ما سيؤدي إلى إيقاف الفوترة لجميع الموارد المستخدَمة في هذا المشروع، أو يمكنك ببساطة حذف خدمة Cloud Run باتّباع الخطوات التالية:

gcloud run services delete helloworld

6. ما هي الخطوات التالية؟

تتمثّل الخطوة التالية الجيدة في النشر على Cloud Run على GKE.

لمزيد من المعلومات حول إنشاء حاوية HTTP لا يتم تسجيل بياناتها ومناسبة لـ Cloud Run من مصدر الرمز البرمجي ونقلها إلى Container Registry، يُرجى الاطّلاع على: