Dockerfile
בשורש שלו.
כדי לבצע אוטומציה של פריסה מ-Git באמצעות Cloud 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 ומשתמש בחשבון שירות:
פותחים את דף ההגדרות של Cloud Build במסוף Cloud de Confiance :
בחלונית 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 configuration file location, מקלידים
cloudbuild.yamlאחרי/. - לוחצים על יצירה כדי לשמור את טריגר לפיתוח גרסת Build.
סיימתם! מעכשיו, בכל פעם שתבצעו פעולת push למאגר, יופעלו אוטומטית גרסת build ופריסה לשירות Cloud Run.
פריסה רציפה עם הרשאות IAM מינימליות
כשפריסת קונטיינר מתבצעת לשירות Cloud Run, הוא מורץ עם הזהות של חשבון השירות של זמן הריצה של שירות Cloud Run הזה. מכיוון ש-Cloud Build יכול לפרוס קונטיינרים חדשים באופן אוטומטי, הוא צריך לפעול בתור חשבון השירות של זמן הריצה של שירות Cloud Run.
כדי לתת ל-Cloud Build גישה מוגבלת לפריסה בשירות Cloud Run:
ממשק המשתמש של המסוף
נכנסים לדף Service accounts במסוף Cloud de Confiance :
לוחצים על כתובת האימייל של חשבון השירות של זמן הריצה של שירות Cloud Run (כברירת מחדל, היא
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com).לוחצים על הכרטיסייה Principals with access (גורמים עם גישה).
לוחצים על Grant access.
מזינים את חשבון השירות של Cloud Build (
PROJECT_NUMBER@cloudbuild.s3ns-system.iam.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.s3ns-system.iam.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
מחליפים את PROJECT_NUMBER במזהה המספרי של הפרויקט.
אם משתמשים ב-Cloud Run באמצעות זהות שירות בהתאמה אישית, מחליפים את PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com בכתובת של חשבון השירות.
מידע נוסף זמין במאמר בנושא הרשאות פריסה.
המאמרים הבאים
- במאמר הגדרת הרשאות לחשבון שירות מוסבר איך פורסים או מפרסמים קובץ אימג' של קונטיינר במאגר פרטי בפרויקט אחר.