מדריך למתחילים: פריסת פונקציית Cloud Run באמצעות ה-CLI של gcloud
בעזרת פונקציות Cloud Run אפשר להריץ קוד קל בתגובה לבקשות HTTP, בלי לנהל תשתית. במדריך למתחילים הזה תפרסו פונקציית HTTP באמצעות ה-CLI של gcloud.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים פרויקט ב- Google Cloud .
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
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 API ו-Cloud Logging API.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים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 .
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
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 API ו-Cloud Logging API.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים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 (
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" מתעדכנת תוך כמה דקות.
כתיבת הפונקציה לדוגמה
כדי לכתוב אפליקציה, פועלים לפי השלבים הבאים:
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 go127 \ --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, קראו את המאמר פריסת פונקציות.
במאמר ניהול גרסאות של שירותים מוסבר איך להציג ולמחוק פונקציות קיימות.
כדי ליצור קונטיינרים של פונקציות ב-toolchain שלכם ולפרוס אותם ב-Cloud Run, קראו את המאמר יצירת פונקציות.
כדי ליצור טריגרים באמצעות Eventarc, קראו את המאמר יצירת טריגרים באמצעות Eventarc.