Cloud Run מאפשר להריץ תמונות ללא שמירת מצב בסביבה ללא שרתים. באמצעות Cloud Build, אפשר לפרוס קובצי אימג' מ-Artifact Registry ל-Cloud Run. אתם יכולים לפרוס תמונה קיימת, ליצור ולפרוס תמונה או להפוך את הפריסה לאוטומטית.
לפני שמתחילים
מפעילים את ממשקי ה-API של Cloud Build, Cloud Run, Artifact Registry ומנהל המשאבים.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
חשוב להכין את קוד המקור של האפליקציה. קוד המקור צריך להיות מאוחסן במאגר כמו 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 (הקצאת התפקיד Service Account User), בוחרים חשבון שירות להתחזות אליו ולוחצים על Grant Permission (מתן הרשאה).
- אדמין לניהול נפח האחסון (
roles/storage.admin) | מאפשר קריאה וכתיבה מ-Cloud Storage. - כותב של Artifact Registry (
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, ואז מוסיפיםdockerשלב build כדי להפעיל את הפקודהgcloud run deployולפרוס את קובץ האימג' ב-Cloud Run:gcloudsteps: # 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. אתם יכולים להגדיר את הטריגרים כך שיבנו ויפרסו תמונות בכל פעם שתעדכנו את קוד המקור.
כדי להפוך את הפריסה לאוטומטית:
בשורש המאגר, מוסיפים קובץ הגדרות בשם
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 באמצעות קובץ התצורה שנוצר בשלב הקודם:
פותחים את הדף Triggers (מפעילים):
לוחצים על 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
- איך מבצעים פריסות כחולות-ירוקות ב-Compute Engine
- איך פותרים בעיות שקשורות לבנייה