פריסה ב-Cloud Run באמצעות Cloud Build

בדף הזה מוסבר איך לפרוס באופן אוטומטי שירותי Cloud Run באמצעות Cloud Build. אם אתם חדשים ב-Cloud Build, כדאי קודם לקרוא את המדריכים לתחילת העבודה ואת סקירת תצורת ה-build.

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. איך מקצים תפקידים

    הפעלת ממשקי ה-API

הרשאות נדרשות לניהול זהויות והרשאות גישה (IAM)

  1. במסוף Google Cloud , נכנסים לדף Cloud Build Permissions:

    עוברים אל הרשאות

  2. בחשבון השירות שצוין ב-Cloud Build או בחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build, מגדירים את הסטטוס של התפקידים הבאים למופעל:

    • Cloud Run Admin‏ (roles/run.admin) | מאפשר ל-Cloud Build לפרוס שירותים חדשים ב-Cloud Run.
    • אדמין לניהול נפח האחסון (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 Build אפשר ליצור קובץ אימג', לאחסן אותו ב-Artifact Registry ואז לפרוס אותו ב-Cloud Run.

כדי ליצור ולפרוס תמונה:

  1. בתיקיית השורש של הפרויקט, יוצרים קובץ הגדרות בשם cloudbuild.yaml.

  2. בקובץ התצורה של ה-build, מוסיפים docker שלבי build כדי ליצור את קובץ האימג' ולהעביר אותו בדחיפה ל-Artifact Registry, ואז מוסיפים docker שלב build כדי להפעיל את הפקודה gcloud run deploy ולפרוס את קובץ האימג' ב-Cloud Run:gcloud

    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.
  3. עוברים לתיקיית השורש של הפרויקט ומריצים את הפקודה הבאה, כאשר LOCATION הוא אחד מאזורי הבנייה הנתמכים להרצת הבנייה:

     gcloud builds submit --region=LOCATION
    

אחרי השלמה מוצלחת, תוצג הודעה על הצלחה יחד עם כתובת ה-URL של השירות שנפרס.

פריסה רציפה

אתם יכולים ליצור טריגרים של Cloud Build כדי לבצע אוטומציה של פריסת התוכנה ב-Cloud Run. אתם יכולים להגדיר את הטריגרים כך שיבנו ויפרסו תמונות בכל פעם שתעדכנו את קוד המקור.

כדי להפוך את הפריסה לאוטומטית:

  1. בשורש המאגר, מוסיפים קובץ הגדרות בשם 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.

  2. יוצרים טריגר לפיתוח גרסת Build באמצעות קובץ התצורה שנוצר בשלב הקודם:

    1. פותחים את הדף Triggers (מפעילים):

      כניסה לדף Triggers

    2. לוחצים על Create Trigger (יצירת טריגר).

    3. בשדה שם, מזינים שם לטריגר.

    4. בקטע Region (אזור), בוחרים את האזור של הטריגר.

    5. בקטע Event (אירוע), בוחרים את אירוע המאגר כדי להפעיל את הטריגר.

    6. בקטע Source (מקור), בוחרים את המאגר ואת שם הענף או התג שיתחילו את הטריגר. מידע נוסף על הגדרת ההסתעפויות שייבנו באופן אוטומטי זמין במאמר בנושא יצירת טריגר לפיתוח גרסת Build.

    7. בקטע Configuration (הגדרה), בוחרים באפשרות Cloud Build configuration file (YAML or JSON) (קובץ הגדרה של Cloud Build‏ (YAML או JSON)).

    8. בשדה Cloud Build configuration file location, מקלידים cloudbuild.yaml אחרי /.

    9. לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.

    מעכשיו, כשדוחפים קוד חדש למאגר, Cloud Build מפעיל build ופורס את השירות ב-Cloud Run.

מידע נוסף על יצירת טריגרים של Cloud Build זמין במאמר בנושא יצירה וניהול של טריגרים של Build.

דוגמאות לקוד

הנה כמה מאגרי דוגמאות, שכל אחד מהם מכיל אפליקציה לדוגמה וקובץ הגדרות build לפריסת האפליקציה ב-Cloud Run:

  • deploy-prebuilt: דוגמה לקוד שמראה איך לפרוס אימג' שנוצר מראש ב-Cloud Run.
  • run-example-builddeploy: דוגמת קוד שמראה איך ליצור ולפרוס תמונה ב-Cloud Run.

המאמרים הבאים