אתם יכולים להגדיר צינורות Image Builder אוטומטיים שפועלים בכל פעם שאתם דוחפים שינויים בהגדרות למאגר Git, למשל כשאתם דוחפים ל-main.
אוטומציה של גרסאות build באירועים של מאגר מאפשרת ל-Cloud Build לאמת, ליצור ולפרסם באופן מיידי את תמונות מערכת ההפעלה המותאמות אישית ב-Compute Engine וב-Artifact Registry אחרי ביקורת קוד או מיזוג.
לפני שמתחילים
- משלימים את השלבים להגדרת הסביבה במאמר הכנת הסביבה.
- אם אתם מתכוונים לפרוס את צינור העברת הנתונים באמצעות Terraform או לבצע אוטומציה של בנייה ממאגר, אתם צריכים לקשר את מאגר GitHub, GitLab או Bitbucket באמצעות מאגרי Cloud Build (
2nd gen) או קישורי חיבור של Developer Connect. - מוודאים שהמאגר מכיל את קובץ התזמור
cloudbuild.yaml, את קובץ המתכוןimagebuilder.yamlוכל סקריפט build שמופיע כהפניה. - אם אתם מתכננים להשתמש ב-Terraform, אתם צריכים להתקין את Terraform CLI בגרסה 1.3 ואילך.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת טריגרים של אירועים במאגר, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת אוטומציה של מאגר
אפשר להגדיר טריגרים של אירועים במאגר באמצעות ה-CLI של gcloud או Terraform. בוחרים באחת מהכרטיסיות הבאות כדי להגדיר טריגרים של מאגר:
gcloud
אפשר ליצור טריגר אוטומטי למאגר באמצעות הפקודה gcloud builds
triggers create ולהפנות ישירות לקישור של מאגר מהדור השני (--repository).
gcloud builds triggers create repository \
--name="TRIGGER_NAME" \
--repository="projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME" \
--branch-pattern="^main$" \
--build-config="CLOUDBUILD_YAML_PATH" \
--service-account="projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL" \
--substitutions="_GCS_WORKDIR=gs://STAGING_BUCKET/workdir/,_IMAGE_BUILDER_CONFIG_PATH=RECIPE_PATH,_SERVICE_ACCOUNT=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL,_IMAGE_OUTPUT_PATH=image-builder/binaryOut" \
--region=REGION \
--project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
TRIGGER_NAME: השם של הטריגר, לדוגמה,git-push-custom-os-builder. PROJECT_ID: מזהה הפרויקט.-
REGION: האזור שבו מתארח חיבור המאגר ושבו מופעלת משימת צינור ההעברה של התאמה אישית של התמונה, לדוגמה,us-central1. -
CONNECTION_NAME: השם של החיבור שלכם ל-Developer Connect, לדוגמה,github-connection. -
REPO_NAME: שם מאגר Git המקושר. -
CLOUDBUILD_YAML_PATH: הנתיב היחסי אלcloudbuild.yamlבספרייה המקומית. SERVICE_ACCOUNT_EMAIL: כתובת האימייל המדויקת של חשבון השירות של שירות ה-build.-
STAGING_BUCKET: שם הקטגוריה של Cloud Storageworkdir. -
RECIPE_PATH: הנתיב היחסי אלimagebuilder.yamlבמאגר.
Terraform
כדי להגדיר טריגר אוטומטי למאגר באמצעות Terraform, מבצעים את השלבים הבאים:
מוסיפים את משאב הטריגר לקובץ ההגדרות
main.tf:resource "google_cloudbuild_trigger" "repository_trigger" { name = "TRIGGER_NAME" location = "REGION" project = "PROJECT_ID" description = "Triggers custom OS image builds on repository push events" repository_event_config { repository = "projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME" push { branch = "^main$" } } filename = "CLOUDBUILD_YAML_PATH" substitutions = { _GCS_WORKDIR = "gs://STAGING_BUCKET/workdir/" _IMAGE_BUILDER_CONFIG_PATH = "RECIPE_PATH" _SERVICE_ACCOUNT = "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL" } }מחליפים את מה שכתוב בשדות הבאים:
-
TRIGGER_NAME: השם של הטריגר, לדוגמה,git-push-custom-os-builder. PROJECT_ID: מזהה הפרויקט.-
REGION: Cloud de Confiance האזור שבו מתארחת ההתחברות למאגר, לדוגמה,us-central1. -
CONNECTION_NAME: השם של חיבור Developer Connect, לדוגמה,github-connection. -
REPO_NAME: שם מאגר Git המקושר. -
CLOUDBUILD_YAML_PATH: הנתיב היחסי אלcloudbuild.yamlבספרייה המקומית. -
STAGING_BUCKET: שם קטגוריית הביניים של Cloud Storage. -
RECIPE_PATH: הנתיב היחסי אלimagebuilder.yamlבמאגר. -
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שלכם לבנייה.
-
פורסים את התצורה המעודכנת של Terraform:
terraform plan terraform apply
כדי לראות את המבנה המלא של פרויקט תשתית Terraform מרובה קבצים, אפשר לעיין במאמר יצירה וניהול של צינורות באמצעות Terraform.
המאמרים הבאים
- איך מתזמנים יצירה של תמונות מערכת הפעלה בהתאמה אישית באופן תקופתי כדי להחיל תיקוני אבטחה באמצעות Cloud Scheduler.
- פעולות ההתאמה האישית הנתמכות (
Shell,FileCopy,UpdateKernelCommandLine,InstallGPU).