הגדרה ידנית של פריסה רציפה באמצעות Cloud Build

במסגרת ההנחיות האלה, אנחנו מניחים שיש לכם מאגר git עם Dockerfile בשורש שלו.

כדי לבצע אוטומציה של פריסה מ-Git באמצעות Cloud Build:

  1. יוצרים תצורת build של Cloud Build שכוללת:

    • יוצר את קובץ האימג' של הקונטיינר
    • העלאת התמונה ל-Container Registry (הוצא משימוש)
    • פריסת גרסה חדשה בשירות Cloud Run

    כדי לעשות זאת, מוסיפים קובץ בשם cloudbuild.yaml בשורש של המאגר עם התוכן הבא:

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--region'
       - '[REGION]'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    החלפה

    • [SERVICE-NAME] מחליפים בשם של שירות Cloud Run.
    • [REGION] מחליפים באזור של שירות Cloud Run שפורסים.

    השימוש במשתנה ההחלפה $COMMIT_SHA מאוכלס על ידי Cloud Build כשהוא מופעל ממאגר Git.

  2. מקצים לחשבון השירות של Cloud Build את התפקידים Cloud Run Admin ו-Service Account User:

    1. פותחים את דף ההגדרות של Cloud Build במסוף Google Cloud :

      כניסה לדף ההגדרות של Cloud Build

    2. בחלונית Service account permissions (הרשאות חשבון השירות), מגדירים את הסטטוס של התפקיד Cloud Run Admin (אדמין של Cloud Run) ל-Enable (הפעלה):

      צילום מסך של הדף Service account permissions (הרשאות לחשבון שירות)

    3. בוחרים באפשרות GRANT ACCESS TO ALL SERVICE ACCOUNTS כדי להקצות את התפקיד Service Account User לכל חשבונות השירות בפרויקט בדף.

  3. בחלונית הניווט הימנית, לוחצים על מפעילים כדי לפתוח את הדף מפעילים:

    כניסה לדף Triggers

    1. לוחצים על Create Trigger (יצירת טריגר).
    2. בשדה שם, מזינים שם לטריגר.
    3. בקטע Event (אירוע), בוחרים את אירוע המאגר כדי להפעיל את הטריגר.
    4. בקטע Source (מקור), בוחרים את המאגר ואת שם הענף או התג שיתחילו את הטריגר. מידע נוסף על הגדרת הענפים שייבנו אוטומטית זמין במאמר בנושא יצירת טריגר לפיתוח גרסת Build.
    5. בקטע Cloud Build configuration file (yaml or json) (קובץ תצורת build של Cloud‏ (yaml או json)), בוחרים באפשרות Cloud Build configuration file (קובץ תצורת build של Cloud).
    6. בשדה מיקום קובץ התצורה של Cloud Build, מקלידים cloudbuild.yaml אחרי /.
    7. לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.
  4. סיימתם! מעכשיו, בכל פעם שתבצעו פעולת push למאגר, יופעלו אוטומטית build ופריסה לשירות Cloud Run.

פריסה רציפה עם הרשאות IAM מינימליות

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

כדי לתת ל-Cloud Build גישה מוגבלת לפריסה בשירות Cloud Run:

ממשק המשתמש של המסוף

  1. נכנסים לדף Service accounts במסוף Google Cloud :

    כניסה לדף Service accounts

  2. לוחצים על כתובת האימייל של חשבון השירות של זמן הריצה של שירות Cloud Run (כברירת מחדל, היא PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. לוחצים על הכרטיסייה Principals with access (גורמים עם גישה).

  4. לוחצים על Grant access.

  5. מזינים את חשבון השירות של Cloud Build‏ (PROJECT_NUMBER@cloudbuild.gserviceaccount.com).

  6. בתפריט הנפתח Select a role, בוחרים בתפקיד Service Accounts > Service Account User.

  7. לוחצים על Save.

gcloud

משתמשים בפקודה gcloud iam service-accounts add-iam-policy-binding:

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

מחליפים את PROJECT_NUMBER במזהה המספרי של הפרויקט.

אם משתמשים ב-Cloud Run באמצעות זהות שירות בהתאמה אישית, מחליפים את PROJECT_NUMBER-compute@developer.gserviceaccount.com בכתובת של חשבון השירות.

מידע נוסף זמין במאמר בנושא הרשאות פריסה.

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