מדריך למתחילים: פריסת פונקציה ב-Cloud Run באמצעות ה-CLI של gcloud
בדף הזה מוסבר איך לפרוס פונקציה של Cloud Run מסוג HTTP באמצעות ה-CLI של gcloud.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build, Cloud Run Admin ו-Cloud Logging:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build, Cloud Run Admin ו-Cloud Logging:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com - כדי להגדיר את פרויקט ברירת המחדל לשירות Cloud Run:
מחליפים את PROJECT_ID בשם הפרויקט שיצרתם במדריך למתחילים.gcloud config set project PROJECT_ID
אם אתם כפופים למדיניות ארגונית של הגבלת דומיין שמגבילה הפעלות לא מאומתות של הפרויקט, תצטרכו לגשת לשירות הפרוס שלכם כמו שמתואר בקטע בדיקת שירותים פרטיים.
- אפשר לעיין במחירון של Cloud Run או להשתמש במחשבון התמחור כדי לקבל הערכה של העלויות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- אדמין Cloud Run (
roles/run.admin) בפרויקט - Cloud Run Source Developer (
roles/run.sourceDeveloper) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות - מציג היומנים (
roles/logging.viewer) בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
נותנים לחשבון השירות ב-Cloud Build גישה לפרויקט
כברירת מחדל, Cloud Build משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine כחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build כדי לבנות את קוד המקור ואת משאב Cloud Run, אלא אם משנים את ההתנהגות הזו.
כדי ש-Cloud Build יוכל לבנות את המקורות, צריך להקצות לחשבון השירות של Cloud Build את התפקיד Cloud Run Builder (roles/run.builder) בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \ --role=roles/run.builder
מחליפים את PROJECT_ID במזהה הפרויקט שלכם ב- Google Cloudואת SERVICE_ACCOUNT_EMAIL_ADDRESS בכתובת האימייל של חשבון השירות של Cloud Build. אם אתם משתמשים בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine כחשבון השירות ב-Cloud Build, אתם צריכים להשתמש בפורמט הבא עבור כתובת האימייל בחשבון השירות:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud.
הוראות מפורטות לאיתור מזהה הפרויקט ומספר הפרויקט זמינות במאמר יצירה וניהול של פרויקטים.
לוקח כמה דקות עד שההרשאה של התפקיד Cloud Run builder מתעדכנת.
כתיבת פונקציית הדוגמה
כדי לכתוב בקשה:
Node.js
יוצרים ספרייה חדשה בשם
helloworldועוברים אליה:mkdir helloworld cd helloworldיוצרים קובץ
package.jsonבספרייהhelloworldכדי לציין תלויות של Node.js:{ "name": "nodejs-docs-samples-functions-hello-world-get", "version": "0.0.1", "private": true, "license": "Apache-2.0", "author": "Google Inc.", "repository": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" }, "engines": { "node": ">=16.0.0" }, "scripts": { "test": "c8 mocha -p -j 2 test/*.test.js --timeout=6000 --exit" }, "dependencies": { "@google-cloud/functions-framework": "^3.1.0" }, "devDependencies": { "c8": "^10.0.0", "gaxios": "^6.0.0", "mocha": "^10.0.0", "wait-port": "^1.0.4" } }
יוצרים קובץ
index.jsבתיקייהhelloworldעם הדוגמה הבאה של Node.js:import { http } from '@google-cloud/functions-framework'; // Register an HTTP function with the Functions Framework that executes // when you make an HTTP request to the deployed function's endpoint. http('helloGET', (req, res) => { res.send('Hello World!'); });
Python
יוצרים ספרייה חדשה בשם
helloworldועוברים אליה:mkdir helloworld cd helloworldיוצרים קובץ
requirements.txtבספרייהhelloworldכדי לציין יחסי תלות של Python:הפעולה הזו מוסיפה חבילות שדרושות לדוגמה.
יוצרים קובץ
main.pyבספרייהhelloworldעם דוגמת Python הבאה:
המשך
יוצרים ספרייה חדשה בשם
helloworldועוברים אליה:mkdir helloworld cd helloworldיוצרים קובץ
go.modכדי להצהיר על מודול Go:יוצרים קובץ
hello_http.goבספרייהhelloworldעם דוגמת קוד Go הבאה:
Java
יוצרים ספרייה חדשה בשם
helloworldועוברים אליה:mkdir helloworld cd helloworldיוצרים את מבנה הפרויקט הבא כדי להכיל את ספריית קובצי המקור ואת קובץ המקור:
mkdir -p ~/helloworld/src/main/java/functions touch ~/helloworld/src/main/java/functions/HelloWorld.javaמעדכנים את הקובץ
HelloWorld.javaבאמצעות דוגמת הקוד הבאה ב-Java:יוצרים קובץ
pom.xmlבספרייהhelloworldומוסיפים את יחסי התלות הבאים של Java:
Ruby
יוצרים ספרייה חדשה בשם
helloworldועוברים אליה:mkdir helloworld cd helloworldיוצרים קובץ בשם
app.rbומדביקים בו את הקוד הבא:יוצרים קובץ בשם
Gemfileומעתיקים אליו את התוכן הבא:אם לא מותקנת אצלכם גרסה 2.0 של Bundler או גרסה מתקדמת יותר, צריך להתקין את Bundler.
מריצים את הפקודה הבאה כדי ליצור קובץ
Gemfile.lock:bundle install
PHP
יוצרים ספרייה חדשה בשם
helloworldועוברים אליה:mkdir helloworld cd helloworldיוצרים קובץ בשם
index.phpומדביקים בו את הקוד הבא:אם אתם לא משתמשים ב-Cloud Shell, אתם צריכים ליצור קובץ
composer.jsonולהדביק בו את הקוד הבא:
.NET
מתקינים את .NET SDK.
במסוף, יוצרים פרויקט אינטרנט חדש וריק באמצעות הפקודה dotnet.
dotnet new web -o helloworld-csharpשינוי הספרייה ל-
helloworld-csharp:מחליפים את הקוד לדוגמה בקובץ הפרויקט
helloworld-csharp.csprojבקוד הבא:מחליפים את קוד הדוגמה בקובץ
Program.csבקוד הבא:
פריסת הפונקציה
כדי לפרוס את פונקציית Cloud Run:
מפעילים את הפקודה הבאה בספרייה שמכילה את הקוד לדוגמה כדי לפרוס את הפונקציה:
Node.js
gcloud run deploy nodejs-http-function \ --source . \ --function helloGET \ --base-image nodejs24 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1.Python
gcloud run deploy python-http-function \ --source . \ --function hello_get \ --base-image python314 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1.המשך
gcloud run deploy go-http-function \ --source . \ --function HelloGet \ --base-image go126 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1.Java
מריצים את הפקודה הבאה בספרייה שמכילה את הקובץ
pom.xml:gcloud run deploy java-http-function \ --source . \ --function functions.HelloWorld \ --base-image java25 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1.Ruby
gcloud run deploy ruby-http-function \ --source . \ --function hello_get \ --base-image ruby40 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1.PHP
gcloud run deploy php-http-function \ --source . \ --function helloGet \ --base-image php85 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1..NET
gcloud run deploy csharp-http-function \ --source . \ --function HelloWorld.Function \ --base-image dotnet10 \ --region REGION \ --allow-unauthenticatedמחליפים את REGION ב Google Cloud אזור של השירות שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1.בסיום הפריסה, Google Cloud CLI מציג כתובת URL שבה השירות פועל. פותחים את כתובת ה-URL בדפדפן כדי לראות את הפלט של הפונקציה.
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Google Cloud , מוחקים את כל המשאבים שהצבתם באמצעות המדריך הזה.
מחיקת המאגר
ב-Cloud Run לא מחייבים אתכם כשהשירות שפרסתם לא נמצא בשימוש. עם זאת, יכול להיות שעדיין תחויבו על אחסון קובץ האימג' של הקונטיינר ב-Artifact Registry. כדי למחוק מאגרי Artifact Registry, פועלים לפי השלבים שמפורטים במאמר מחיקת מאגרים במסמכי התיעוד של Artifact Registry.
מחיקת השירות
שירותי Cloud Run לא צוברים עלויות עד שהם מקבלים בקשות. כדי למחוק את שירות Cloud Run, פועלים לפי אחד מהשלבים הבאים:
המסוף
כדי למחוק שירות:
נכנסים לדף Services של Cloud Run במסוף Google Cloud :
ברשימת השירותים, מאתרים את השירות שרוצים למחוק ולוחצים על תיבת הסימון שלו כדי לבחור אותו.
לוחצים על Delete. כל הגרסאות של השירות יימחקו.
gcloud
כדי למחוק שירות, מריצים את הפקודה הבאה:
gcloud run services delete SERVICE --region REGION
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- REGION: Google Cloud האזור של השירות.
מחיקת פרויקט הבדיקה
כשמוחקים פרויקט ב- Google Cloud , החיוב על כל המשאבים באותו פרויקט מופסק. כדי לשחרר את כל Google Cloud המשאבים בפרויקט, פועלים לפי השלבים הבאים:
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
המאמרים הבאים
כדי לפרוס פונקציה לדוגמה ב-Cloud Run באמצעות מסוף Google Cloud , אפשר לעיין במאמר מדריך למתחילים: פריסת פונקציה ב-Cloud Run באמצעות מסוף Google Cloud .
כדי לפרוס פונקציות וליצור טריגרים באמצעות מסוף Google Cloud ו-Google Cloud CLI, ראו פריסת פונקציות.
במאמר ניהול עדכונים של שירותים מוסבר איך לראות ולמחוק פונקציות קיימות.
כדי ליצור קונטיינרים של פונקציות בשרשרת הכלים שלכם ולפרוס אותם ב-Cloud Run, אפשר לעיין במאמר בנושא יצירת פונקציות.
במאמר יצירת טריגרים באמצעות Eventarc מוסבר איך ליצור טריגרים באמצעות Eventarc.