Dockerfile
בשורש שלו.
כדי לבצע אוטומציה של פריסה מ-Git באמצעות Cloud Build:
יוצרים תצורת 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.מקצים לחשבון השירות של Cloud Build את התפקידים Cloud Run Admin ו-Service Account User:
פותחים את דף ההגדרות של Cloud Build במסוף Google Cloud :
בחלונית Service account permissions (הרשאות חשבון השירות), מגדירים את הסטטוס של התפקיד Cloud Run Admin (אדמין של Cloud Run) ל-Enable (הפעלה):
בוחרים באפשרות GRANT ACCESS TO ALL SERVICE ACCOUNTS כדי להקצות את התפקיד Service Account User לכל חשבונות השירות בפרויקט בדף.
בחלונית הניווט הימנית, לוחצים על מפעילים כדי לפתוח את הדף מפעילים:
- לוחצים על Create Trigger (יצירת טריגר).
- בשדה שם, מזינים שם לטריגר.
- בקטע Event (אירוע), בוחרים את אירוע המאגר כדי להפעיל את הטריגר.
- בקטע Source (מקור), בוחרים את המאגר ואת שם הענף או התג שיתחילו את הטריגר. מידע נוסף על הגדרת הענפים שייבנו אוטומטית זמין במאמר בנושא יצירת טריגר לפיתוח גרסת Build.
- בקטע Cloud Build configuration file (yaml or json) (קובץ תצורת build של Cloud (yaml או json)), בוחרים באפשרות Cloud Build configuration file (קובץ תצורת build של Cloud).
- בשדה מיקום קובץ התצורה של Cloud Build, מקלידים
cloudbuild.yamlאחרי/. - לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.
סיימתם! מעכשיו, בכל פעם שתבצעו פעולת push למאגר, יופעלו אוטומטית build ופריסה לשירות Cloud Run.
פריסה רציפה עם הרשאות IAM מינימליות
כשפורסים קונטיינר בשירות Cloud Run, הוא מורץ עם הזהות של חשבון השירות של זמן הריצה של שירות Cloud Run הזה. מכיוון ש-Cloud Build יכול לפרוס קונטיינרים חדשים באופן אוטומטי, הוא צריך לפעול בתור חשבון השירות של זמן הריצה של שירות Cloud Run.
כדי לתת ל-Cloud Build גישה מוגבלת לפריסה בשירות Cloud Run:
ממשק המשתמש של המסוף
נכנסים לדף Service accounts במסוף Google Cloud :
לוחצים על כתובת האימייל של חשבון השירות של זמן הריצה של שירות Cloud Run (כברירת מחדל, היא
PROJECT_NUMBER-compute@developer.gserviceaccount.com).לוחצים על הכרטיסייה Principals with access (גורמים עם גישה).
לוחצים על Grant access.
מזינים את חשבון השירות של Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com).בתפריט הנפתח Select a role, בוחרים בתפקיד Service Accounts > Service Account User.
לוחצים על 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 בכתובת של חשבון השירות.
מידע נוסף זמין במאמר בנושא הרשאות פריסה.
המאמרים הבאים
- במאמר הגדרת הרשאות לחשבון שירות מוסבר איך לפרוס או לפרסם קובץ אימג' של קונטיינר במאגר פרטי בפרויקט אחר ב-Google Cloud.