1. مقدمه
Cloud Run یک پلت فرم محاسباتی مدیریت شده است که به شما امکان می دهد کانتینرهای بدون حالتی را اجرا کنید که از طریق درخواست های HTTP قابل فراخوانی هستند. این برنامه بر اساس پروژه منبع باز Knative ساخته شده است و امکان حمل بارهای کاری شما را در پلتفرم ها فراهم می کند. Cloud Run بدون سرور است: تمام مدیریت زیرساخت را انتزاعی می کند، بنابراین شما می توانید روی آنچه که مهمتر است تمرکز کنید - ساخت برنامه های کاربردی عالی.
هدف از این آموزش ایجاد یک برنامه وب ساده و استقرار آن در Cloud Run است.
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این آموزش شما از Cloud Shell استفاده می کنید، یک محیط خط فرمان که در Cloud اجرا می شود.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید .
اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه میکند و در Google Cloud اجرا میشود، که عملکرد و احراز هویت شبکه را بسیار افزایش میدهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.
پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.
- برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list
خروجی فرمان
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project
خروجی فرمان
[core] project = <PROJECT_ID>
اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:
gcloud config set project <PROJECT_ID>
خروجی فرمان
Updated property [core/project].
3. API ها را فعال کنید
از Cloud Shell، APIهای Artifact Registry، Cloud Build و Cloud Run را فعال کنید:
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
این پیام موفقیت آمیزی مشابه این پیام را نشان می دهد:
Operation "operations/..." finished successfully.
اکنون، شما آماده شروع کار و نوشتن برنامه خود هستید...
4. برنامه را بنویسید
در این مرحله، شما یک برنامه ساده پایتون مبتنی بر Flask میسازید که به درخواستهای HTTP پاسخ میدهد.
دایرکتوری کار
از Cloud Shell برای ایجاد دایرکتوری کاری به نام helloworld-python
استفاده کنید و به آن سوئیچ کنید:
mkdir ~/helloworld-python cd ~/helloworld-python
main.py
فایلی به نام main.py
ایجاد کنید:
touch main.py
فایل را با ویرایشگر خط فرمان دلخواه خود (nano، vim، یا emacs) یا با کلیک کردن روی دکمه Cloud Shell Editor ویرایش کنید:
برای ویرایش مستقیم فایل با Cloud Shell Editor از این دستور استفاده کنید:
cloudshell edit main.py
main.py
from flask import Flask, request
app = Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
who = request.args.get("who", default="World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Development only: run "python main.py" and open http://localhost:8080
# When deploying to Cloud Run, a production-grade WSGI HTTP server,
# such as Gunicorn, will serve the app.
app.run(host="localhost", port=8080, debug=True)
این کد یک سرویس وب اولیه ایجاد می کند که به درخواست های HTTP GET با یک پیام دوستانه پاسخ می دهد.
الزامات. txt
برای تعریف وابستگی ها فایلی به نام requirements.txt
اضافه کنید:
touch requirements.txt
برای ویرایش مستقیم فایل با Cloud Shell Editor از این دستور استفاده کنید:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/flask
Flask==3.0.2
# https://pypi.org/project/gunicorn
gunicorn==21.2.0
نمایه
در نهایت، یک فایل به نام Procfile
اضافه کنید تا نحوه ارائه برنامه را مشخص کنید:
touch Procfile
برای ویرایش مستقیم فایل با Cloud Shell Editor از این دستور استفاده کنید:
cloudshell edit Procfile
Procfile
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
اطمینان حاصل کنید که همه فایلها در پوشه کاری موجود هستند:
ls
این باید فایل های زیر را فهرست کند:
main.py Procfile requirements.txt
برنامه شما آماده استقرار است، اما بیایید ابتدا آن را آزمایش کنیم...
5. برنامه را تست کنید
برای آزمایش برنامه، یک محیط مجازی ایجاد کنید:
virtualenv venv
فعال کردن محیط مجازی:
source venv/bin/activate
وابستگی ها را نصب کنید:
pip install -r requirements.txt
شما باید یک پیام تایید مانند زیر دریافت کنید:
... Successfully installed Flask ... gunicorn ...
برنامه را شروع کنید:
python main.py
گزارشها نشان میدهند که شما در حالت توسعه هستید:
* Serving Flask app 'main' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://localhost:8080 Press CTRL+C to quit ...
در پنجره Cloud Shell، روی نماد Web Preview
کلیک کنید و Preview on port 8080
را انتخاب کنید:
این باید یک پنجره مرورگر باز کند که Hello World!
پیام
همچنین میتوانید با کلیک کردن روی نماد +
و ارسال درخواست وب به برنامهای که به صورت محلی اجرا میشود، یک جلسه Cloud Shell دیگر (یک برگه ترمینال جدید) باز کنید:
curl localhost:8080
شما باید پاسخ زیر را دریافت کنید:
Hello World!
وقتی کارتان تمام شد، به جلسه اصلی Cloud Shell برگردید و دستور python main.py
را با CTRL+C
متوقف کنید.
خروج از محیط مجازی:
deactivate
در نهایت، دایرکتوری محیط مجازی را حذف کنید:
rm -r venv/
برنامه شما همانطور که انتظار می رود کار می کند: بیایید آن را گسترش دهیم...
6. در Cloud Run مستقر شوید
Cloud Run منطقهای است، به این معنی که زیرساختی که سرویسهای Cloud Run شما را اجرا میکند در یک منطقه خاص قرار دارد و توسط Google مدیریت میشود تا بهطور اضافی در تمام مناطق آن منطقه در دسترس باشد. منطقه ای را که برای استقرار خود استفاده می کنید، تعریف کنید، به عنوان مثال:
REGION="europe-west9"
مطمئن شوید که هنوز در دایرکتوری کاری هستید:
ls
این باید فایل های زیر را فهرست کند:
main.py Procfile requirements.txt
استقرار برنامه در Cloud Run:
gcloud run deploy helloworld-python \ --source . \ --platform managed \ --region $REGION \ --allow-unauthenticated
- شما می توانید یک منطقه پیش فرض را با این دستور تعریف کنید:
gcloud config set run/region $REGION
- همچنین می توانید Cloud Run را به صورت پیش فرض با این دستور مدیریت کنید:
gcloud config set run/platform managed
- گزینه
--allow-unauthenticated
سرویس را در دسترس عموم قرار می دهد. برای جلوگیری از درخواست های احراز هویت نشده، به جای آن از--no-allow-unauthenticated
استفاده کنید.
اولین بار، یک اعلان برای ایجاد یک مخزن رجیستری Artifact دریافت خواهید کرد. برای تأیید اعتبار روی Enter ضربه بزنید:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
با این کار آپلود کد منبع شما در مخزن Artifact Registry و ساخت تصویر ظرف شما راه اندازی می شود:
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
سپس، یک لحظه صبر کنید تا استقرار کامل شود. در صورت موفقیت، خط فرمان URL سرویس را نمایش می دهد:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
با این دستور می توانید URL سرویس را دریافت کنید:
SERVICE_URL=$( \ gcloud run services describe helloworld-python \ --platform managed \ --region $REGION \ --format "value(status.url)" \ ) echo $SERVICE_URL
این باید چیزی شبیه به زیر نمایش دهد:
https://helloworld-python-PROJECTHASH-REGIONID.a.run.app
اکنون می توانید با باز کردن URL سرویس در یک مرورگر وب از برنامه خود استفاده کنید:
همچنین می توانید از Cloud Shell با برنامه تماس بگیرید:
curl $SERVICE_URL?who=me
این باید به شما خوشامدگویی مورد انتظار را بدهد:
Hello me!
تبریک می گویم! شما به تازگی یک برنامه را در Cloud Run مستقر کرده اید. Cloud Run به صورت خودکار و افقی تصویر کانتینر شما را برای رسیدگی به درخواستهای دریافتی تغییر میدهد، سپس با کاهش تقاضا کاهش مییابد. شما فقط هزینه CPU، حافظه و شبکه مصرف شده در هنگام رسیدگی به درخواست را پرداخت می کنید.
7. پاکسازی کنید
در حالی که Cloud Run زمانی که از سرویس استفاده نمیشود شارژ نمیشود، ممکن است همچنان برای ذخیره تصویر ظرف در Artifact Registry هزینه دریافت کنید. برای جلوگیری از تحمیل هزینه، می توانید مخزن خود را حذف کنید یا پروژه Cloud خود را حذف کنید. با حذف پروژه Cloud، صورتحساب تمام منابع مورد استفاده در آن پروژه متوقف میشود.
برای حذف مخزن تصویر ظرف خود:
gcloud artifacts repositories delete cloud-run-source-deploy \ --location $REGION
برای حذف سرویس Cloud Run:
gcloud run services delete helloworld-python \ --platform managed \ --region $REGION
برای حذف پروژه Google Cloud خود،
- شناسه پروژه فعلی خود را بازیابی کنید:
PROJECT_ID=$(gcloud config get-value core/project)
- مطمئن شوید که این پروژه ای است که می خواهید حذف کنید:
echo $PROJECT_ID
- پروژه را حذف کنید:
gcloud projects delete $PROJECT_ID
8. تبریک!
شما یک برنامه وب ساده ایجاد کردید و آن را در Cloud Run مستقر کردید!
بیشتر بدانید
- مستندات Cloud Run را بررسی کنید
- برای بررسی گزینههای بیشتر ، برنامهنویس را در سه مرحله آسان با اجرای ابری کامل کنید
- Django را در Cloud Run کامل کنید، برای ایجاد یک Cloud SQL DB، مدیریت اعتبار با Secret Manager، و استقرار جنگو
- بررسی بیشتر کدهای Cloud Run ...
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.