1. مقدمه
Cloud Run یک پلت فرم مدیریت شده است که به شما امکان می دهد کانتینرهای بدون حالتی را اجرا کنید که از طریق درخواست های HTTP قابل فراخوانی هستند. Cloud Run بدون سرور است: تمام مدیریت زیرساخت را انتزاعی می کند، بنابراین شما می توانید روی آنچه که مهمتر است تمرکز کنید - ساخت برنامه های کاربردی عالی.
این برنامه از Knative ساخته شده است و به شما امکان می دهد کانتینرهای خود را با مدیریت کامل Cloud Run یا در خوشه Google Kubernetes Engine خود با Cloud Run در GKE اجرا کنید.
هدف این کد لبه این است که شما یک تصویر ظرف بسازید و آن را در Cloud Run مستقر کنید.
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع 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 کلیک کنید:
اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید
تهیه محیط فقط چند ثانیه طول می کشد:
پس از اتصال به 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 را بررسی کنید:
همچنین میتوانید جزئیات پروژه خود را با استفاده از بخش «تنظیمات و ابزارها» بررسی کنید:
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 سرویس در یک مرورگر وب، از کانتینر مستقر شده خود بازدید کنید:
تبریک می گویم! شما به تازگی یک برنامه بسته بندی شده در یک تصویر ظرف را در Cloud Run مستقر کرده اید. Cloud Run به صورت خودکار و افقی تصویر کانتینر شما را برای رسیدگی به درخواستهای دریافتی تغییر میدهد، سپس با کاهش تقاضا کاهش مییابد. شما فقط هزینه CPU، حافظه و شبکه مصرف شده در هنگام رسیدگی به درخواست را پرداخت می کنید.
5. زمان تمیز کردن
میتوانید برای جلوگیری از تحمیل هزینهها، پروژه GCP خود را حذف کنید، که صورتحساب تمام منابع مورد استفاده در آن پروژه را متوقف میکند، یا به سادگی سرویس Cloud Run را حذف کنید:
gcloud run services delete helloworld
6. بعدی چیه؟
یک قدم خوب بعدی ، استقرار در Cloud Run در GKE است.
برای اطلاعات بیشتر در مورد ساخت یک کانتینر HTTP بدون حالت مناسب برای Cloud Run از منبع کد و فشار دادن آن به Container Registry، ببینید: