سلام Cloud Run با سی شارپ

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.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Google Cloud Shell

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهیم کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

Cloud Shell یک محیط توسعه و عملیات آنلاین است که در هر جایی با مرورگر شما قابل دسترسی است. می توانید منابع خود را با ترمینال آنلاین آن که با ابزارهایی مانند ابزار خط فرمان gcloud، kubectl و غیره از قبل بارگذاری شده است، مدیریت کنید. همچنین می‌توانید برنامه‌های مبتنی بر ابر خود را با استفاده از ویرایشگر پوسته ابری آنلاین توسعه دهید، بسازید، اشکال‌زدایی کنید و به کار ببرید.

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه می‌کند و مستقیماً در Google Cloud اجرا می‌شود و عملکرد و احراز هویت شبکه را بسیار افزایش می‌دهد. این بدان معنی است که تمام چیزی که برای این کد لبه نیاز دارید یک مرورگر است (بله، روی کروم بوک کار می کند).

  • برای فعال کردن Cloud Shell از Cloud Console، کافی است روی Activate Cloud Shell کلیک کنید:

cb81e7c8e34bc8d.png

اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید

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 نام سرویس است.
  • flag allow-unauthenticated سرویس را به عنوان یک سرویس در دسترس عموم و بدون نیاز به احراز هویت مستقر می کند.
  • us-central1 منطقه ای است که برنامه در آن مستقر می شود.
  • source پرچم مکان منبع برای ساخت را تعیین می کند. Cloud Run از buildpack ها برای ایجاد خودکار یک کانتینر خارج از کد منبع استفاده می کند.

چند دقیقه صبر کنید تا استقرار کامل شود. در صورت موفقیت، خط فرمان 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 به صورت خودکار و افقی تصویر کانتینر شما را برای رسیدگی به درخواست‌های دریافتی تغییر می‌دهد، سپس با کاهش تقاضا کاهش می‌یابد. شما فقط هزینه CPU، حافظه و شبکه مصرف شده در هنگام رسیدگی به درخواست را پرداخت می کنید.

5. زمان تمیز کردن

می‌توانید برای جلوگیری از تحمیل هزینه‌ها، پروژه GCP خود را حذف کنید، که صورت‌حساب تمام منابع مورد استفاده در آن پروژه را متوقف می‌کند، یا به سادگی سرویس Cloud Run را حذف کنید:

gcloud run services delete helloworld

6. بعدی چیه؟

یک قدم خوب بعدی ، استقرار در Cloud Run در GKE است.

برای اطلاعات بیشتر در مورد ساخت یک کانتینر HTTP بدون حالت مناسب برای Cloud Run از منبع کد و فشار دادن آن به Container Registry، ببینید: