Cloud Run מאפשר להריץ אימג'ים ללא שמירת מצב בסביבה ללא שרתים. באמצעות Cloud Build, אפשר לפרוס קובצי אימג' מ-Artifact Registry ב-Cloud Run. אתם יכולים לפרוס תמונה קיימת, ליצור ולפרוס תמונה או להפוך את הפריסה לאוטומטית.
לפני שמתחילים
מפעילים את Cloud Build API, Cloud Run API, Artifact Registry API ו-Resource Manager API (מנהל המשאבים), אם אחד מהם עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
חשוב להכין את קוד המקור של האפליקציה. קוד המקור צריך להיות מאוחסן במאגר כמו GitHub או Bitbucket.
כדי להריץ את הפקודות
gcloudשבדף הזה, צריך להתקין את Google Cloud CLI.אם אתם משתמשים ב-VPC Service Controls, אתם צריכים להגדיר מאגר פרטי בגבולות הגזרה של VPC Service Controls. צריך גם להגדיר את Cloud Run ל-VPC Service Controls.
הרשאות נדרשות לניהול זהויות והרשאות גישה (IAM)
-
במסוף Google Cloud , נכנסים לדף settings Cloud Build Permissions:
בחשבון השירות שצוין ב-Cloud Build או בחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build, מגדירים את הסטטוס של התפקידים הבאים למופעל:
- Cloud Run Admin (
roles/run.admin) | מאפשר ל-Cloud Build לפרוס שירותים חדשים ב-Cloud Run.- בחלונית Assign Service Account User Role (הקצאת תפקיד משתמש בחשבון שירות), בוחרים חשבון שירות להתחזות אליו ולוחצים על Grant Permission (הענקת הרשאה).
- אדמין לניהול נפח האחסון (
roles/storage.admin) | מאפשר קריאה וכתיבה מ-Cloud Storage. - Artifact Registry Writer (
roles/artifactregistry.writer) | מאפשר שליפת תמונות מ-Artifact Registry וכתיבה ב-Artifact Registry. - כותב יומנים (
roles/logging.logWriter) | מאפשר לכתוב רשומות ביומן ב-Cloud Logging. - עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) | מאפשר לחשבון השירות להריץ בנייה.
- Cloud Run Admin (
פיתוח ופריסה של תמונה
בעזרת Cloud Build אפשר ליצור קובץ אימג', לאחסן אותו ב-Artifact Registry ואז לפרוס אותו ב-Cloud Run.
כדי לבנות ולפרוס תמונה:
בתיקיית השורש של הפרויקט, יוצרים קובץ הגדרות בשם
cloudbuild.yaml.בקובץ התצורה של ה-build, מוסיפים
dockerשלבי build כדי ליצור את קובץ האימג' ולהעביר אותו בדחיפה ל-Artifact Registry, ואז מוסיפיםgcloudשלב build כדי להפעיל את הפקודהgcloud run deployולפרוס את קובץ האימג' ב-Cloud Run:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'כאשר:
-
REPOSITORYהוא שם המאגר ב-Artifact Registry שממנו פורסים את האימג'. -
LOCATIONהוא המיקום של מאגר Artifact Registry, כמוus-east1. -
PROJECT_IDהוא מזהה הפרויקט Google Cloudשבו התמונה מאוחסנת. -
SERVICE_NAMEהוא השם של שירות Cloud Run. -
SERVICE_REGIONהוא האזור של שירות Cloud Run שאתם פורסים. -
IMAGEהוא השם של קובץ האימג' ב-Artifact Registry.
-
עוברים לתיקיית השורש של הפרויקט ומריצים את הפקודה הבאה, כאשר
LOCATIONהוא אחד מאזורי הבנייה הנתמכים להרצת הבנייה:gcloud builds submit --region=LOCATION
אחרי השלמת הפריסה בהצלחה, מוצגת הודעת הצלחה יחד עם כתובת ה-URL של השירות שנפרס.
פריסה רציפה
אתם יכולים ליצור טריגרים של Cloud Build כדי לבצע אוטומציה של פריסת התוכנה ב-Cloud Run. אתם יכולים להגדיר את הטריגרים כך שיבצעו build ויפרוסו תמונות בכל פעם שתעדכנו את קוד המקור.
כדי להפוך את הפריסה לאוטומטית:
בשורש המאגר, מוסיפים קובץ הגדרות בשם
cloudbuild.yamlעם השלבים ליצירת התמונה, להעברת התמונה אל Artifact Registry ולהפעלת הפקודהgcloud run deploy:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'כאשר:
-
REPOSITORYהוא שם המאגר ב-Artifact Registry שממנו פורסים את האימג'. -
LOCATIONהוא המיקום של מאגר Artifact Registry, כמוus-east1. -
PROJECT_IDהוא מזהה הפרויקט Google Cloudשבו התמונה מאוחסנת. -
SERVICE_NAMEהוא השם של שירות Cloud Run. -
SERVICE_REGIONהוא האזור של שירות Cloud Run שאתם פורסים. -
IMAGEהוא השם של קובץ האימג' ב-Artifact Registry.
משתנה ההחלפה
$COMMIT_SHAמאוכלס על ידי Cloud Build כשהוא מופעל ממאגר Git.-
יוצרים טריגר לפיתוח גרסת Build באמצעות קובץ התצורה שנוצר בשלב הקודם:
פותחים את הדף מפעילים:
לוחצים על Create Trigger (יצירת טריגר).
בשדה שם, מזינים שם לטריגר.
בקטע Region (אזור), בוחרים את האזור של הטריגר.
בקטע Event (אירוע), בוחרים את אירוע המאגר שרוצים להגדיר כטריגר.
בקטע Source (מקור), בוחרים את המאגר ואת שם הענף או התג שיתחילו את הטריגר. מידע נוסף על הגדרת הענפים שייבנו באופן אוטומטי זמין במאמר בנושא יצירת טריגר לפיתוח גרסת Build.
בקטע Configuration, בוחרים באפשרות Cloud Build configuration file (YAML or JSON) (קובץ הגדרות של Cloud Build (YAML או JSON)).
בשדה Cloud Build configuration file location, מקלידים
cloudbuild.yamlאחרי/.לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.
מעכשיו, כשדוחפים קוד חדש למאגר, Cloud Build מפעיל build ומפריס את השירות ב-Cloud Run.
מידע נוסף על יצירת טריגרים של Cloud Build זמין במאמר בנושא יצירה וניהול של טריגרים של Build.
דוגמאות לקוד
הנה כמה מאגרי דוגמאות, שכל אחד מהם מכיל אפליקציה לדוגמה וקובץ הגדרות build לפריסת האפליקציה ב-Cloud Run:
- deploy-prebuilt: דוגמה לקוד שמראה איך לפרוס אימג' שנוצר מראש ב-Cloud Run.
- run-example-builddeploy: דוגמת קוד שמראה איך ליצור ולפרוס תמונה ב-Cloud Run.
המאמרים הבאים
- איך משתמשים ב-Cloud Deploy כדי לפרוס ב-Cloud Run
- איך פורסים ב-GKE
- איך פורסים בפונקציות Cloud Run
- איך פורסים ב-App Engine
- איך פורסים ב-Firebase
- איך מבצעים פריסות blue-green ב-Compute Engine
- איך פותרים בעיות שקשורות לבנייה