Cloud Workstations מאפשר לכם ליצור ולהשתמש בתמונות מותאמות אישית לתחנות העבודה שלכם. אחרי שמתחילים להשתמש בתמונה מותאמת אישית, כדאי להגדיר בנייה מחדש אוטומטית של התמונה המותאמת אישית כדי להחיל תיקונים ועדכונים שזמינים בתמונות הבסיסיות.
במדריך הזה תלמדו איך ליצור צינור נתונים אוטומטי שיעזור לכם לוודא שאתם כוללים עדכוני אבטחה ותיקוני באגים בתמונות של תחנות העבודה המותאמות אישית שלכם.
מטרות
במדריך הזה תלמדו איך ליצור צינור אוטומטי לתמונה הבסיסית שלכם, לפי השלבים הבאים:
- יוצרים מאגר ב-Artifact Registry כדי לאחסן את התמונה המותאמת אישית ולסרוק אותה.
- מגדירים את GitHub עם Google Cloud כדי לאחסן את הגדרות התמונות.
- יוצרים טריגר לפיתוח גרסת Build של Cloud Build כדי לבצע אוטומציה של יצירה ופריסה של תמונות בהתאמה אישית ב-Artifact Registry.
- הגדרת Cloud Scheduler כדי ליזום בנייה על בסיס קבוע.
- בודקים את התוצאות של התהליכים האוטומטיים.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של
gcloudבאמצעות המאגר המאוחד לניהול זהויות. -
כדי לאתחל את
gcloudCLI, מריצים את הפקודה הבאה:gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של
gcloudבאמצעות המאגר המאוחד לניהול זהויות. -
כדי לאתחל את
gcloudCLI, מריצים את הפקודה הבאה:gcloud init
הכנת הסביבה
לפני שממשיכים, צריך להגדיר את משתני הסביבה הבאים.
מגדירים את מזהה הפרויקט של הפרויקט בענן שבו אתם מתכננים להשתמש:
PROJECT_ID=$PROJECT_IDמגדירים את שם המשתמש ב-GitHub שבו מתכננים לאחסן את המאגר:
GITHUB_USER=$GITHUB_IDמגדירים את המשתנים
PROJECT_NUMBERו-REGIONלשימוש בתהליך:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGIONבדוגמה הקודמת, מחליפים את $REGION בשם האזור שבו רוצים להשתמש – לדוגמה,
us-central1.מידע נוסף על האזורים הזמינים מופיע במאמר מיקומים של Cloud Workstations.
יצירת מאגר Artifact Registry
במדריך הזה משתמשים ב-Artifact Registry כדי לאחסן ולסרוק את התמונות.
יוצרים מאגר באמצעות הפקודה הבאה:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"מחליפים את $REGION בשם האזור שבו אתם מתכננים להשתמש.
מגדירים את Docker כך שישתמש בפרטי הכניסה שלכם ב-
gcloudCLI כשניגשים ל-Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.devכדי להשבית את Artifact Analysis, מריצים את הפקודה הבאה:
gcloud services disable containerscanning.googleapis.com
הגדרת מאגר ב-GitHub
בפועל, שומרים את קובץ ה-Dockerfile של התמונות המותאמות אישית במאגר Git. התהליך האוטומטי ניגש למאגר הזה במהלך תהליך ה-build כדי לשלוף את קובצי ההגדרות הרלוונטיים ואת קובץ ה-Dockerfile.
חיבור מאגר לדוגמה
כדי ליצור עותק (fork) של מאגר לדוגמה שמספק הגדרות של מאגרי תמונות, פועלים לפי השלבים הבאים:
- לוחצים על הקישור הזה כדי ליצור העתק חדש של מאגר
software-delivery-workshop. - אם מתבקשים, נכנסים לחשבון GitHub.
- בוחרים את שם המשתמש ב-GitHub כבעלים. שם המאגר מופיע כ-
software-delivery-workshop. - לוחצים על יצירת הסתעפות וממתינים כמה שניות עד שהתהליך יסתיים.
חיבור Cloud Build ל-GitHub
בשלב הבא, מחברים את המאגר הזה ל-Cloud Build באמצעות יכולת החיבור המובנית של GitHub. לוחצים על הקישור למאגר GitHub ופועלים לפי ההוראות לביצוע התהליך. לא צריך ליצור את הטריגר בשלב האחרון של האשף, ואפשר לדלג על השלבים האחרונים כי אפשר לעשות את זה מאוחר יותר משורת הפקודה.
אם אתם משתמשים בפתרון אחר למאגרי Git, תוכלו גם לפעול לפי ההוראות לחיבור Cloud Build ל-GitLab או ל-Bitbucket.
יצירת טריגר לפיתוח גרסת Build ב-Cloud
מאגר הדוגמה מכיל הגדרת קונטיינר ותצורת Cloud Build שמשמשת ליצירת קובץ אימג' של קונטיינר. בשלב הזה יוצרים טריגר לפיתוח גרסת Build של Cloud Build שמריץ את ההוראות בקובץ cloudbuild.yaml שנמצא בתיקייה labs/cloudbuild-scheduled-jobs/code-oss-java.
gcloud builds triggers create manual \
--name=custom-image-trigger \
--repo=$GITHUB_USER/software-delivery-workshop \
--repo-type=GITHUB \
--branch=main \
--build-config=labs/cloudbuild-scheduled-jobs/code-oss-java/cloudbuild.yaml \
--substitutions=_REGION=$REGION,_AR_REPO_NAME=custom-images,_AR_IMAGE_NAME=code-oss-java,_IMAGE_DIR=labs/cloudbuild-scheduled-jobs/code-oss-java
TRIGGER_ID=$(gcloud builds triggers list \
--filter=name="custom-image-trigger" --format="value(id)")
בדוגמה הזו מוגדרות ההגדרות הבאות:
- הפקודה
gcloudב-CLI יוצרת טריגר ידני ב-Cloud Build בשםcustom-image-trigger, כפי שמצוין בדגלnameבשורה השנייה. - שלוש השורות הבאות מכילות דגלים שקשורים למאגר המקור ב-GitHub:
- הנתיב למאגר
- סוג המאגר
- הסתעפות Git לבנייה
- הדגל
build-configמציין את הנתיב לקובץ Cloud Build במאגר Git. כדי להפוך את העבודה לדינמית, משתמשים בדגל
substitutions. במקרה של המשרה הזו, הפקודה מעבירה את המשתנים הבאים:- אזור,
$_REGION - שם מאגר Artifact Registry,
$_AR_REPO_NAME - שם קובץ האימג' של הקונטיינר,
$_AR_IMAGE_NAME - המיקום של קובץ ה-Dockerfile לבנייה,
$_IMAGE_DIR
כדי לראות איך המשתנים האלה משמשים בתהליך, אפשר לעיין בקובץ cloudbuild.yaml.
- אזור,
אחרי יצירת הטריגר, השם הייחודי של הטריגר מאוחזר ונשמר במשתנה הסביבה
$TRIGGER_IDלשימוש עתידי.
הגדרת Cloud Scheduler
כדי לוודא שהתמונות שלכם מעודכנות עם העדכונים והתיקונים האחרונים, אתם יכולים להשתמש ב-Cloud Scheduler כדי להפעיל את הטריגר של Cloud Build בתדירות קבועה. במדריך הזה, העבודה מופעלת כל יום. בפועל, כדאי להגדיר את התדירות בהתאם לצרכים של הארגון כדי לוודא שהעדכונים האחרונים תמיד כלולים.
מקצים תפקיד נדרש לחשבון השירות שמוגדר כברירת מחדל כדי להפעיל טריגר לפיתוח גרסת Build של Cloud Build:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"מקצים לחשבון השירות ב-Cloud Build את התפקיד הנדרש כדי להעלות תמונות ל-Artifact Registry:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"יוצרים את המשימה של Cloud Scheduler באמצעות הפקודה הבאה:
gcloud scheduler jobs create http run-build \ --schedule='0 1 * * *' \ --uri=https://cloudbuild.googleapis.com/v1/projects/$PROJECT_ID/locations/global/triggers/$TRIGGER_ID:run \ --location=us-central1 \ --oauth-service-account-email=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --oauth-token-scope=https://www.googleapis.com/auth/cloud-platformהמשימה מוגדרת להפעלה פעם ביום, אבל כדי לבדוק את התכונה באופן מיידי, מפעילים את המשימה באופן ידני מ-Cloud Scheduler:
- בדף Cloud Scheduler, מחפשים את הרשומה שיצרתם שנקראת run-build.
- בעמודה 'פעולות', לוחצים על סמל האפשרויות הנוספות more_vert
- כדי לבדוק את המערכת באופן ידני, לוחצים על Force a job run (הפעלת משימה בכוח).
אחרי שהפקודה תופעל בהצלחה, עוברים לדף ההיסטוריה של Cloud Build כדי לבדוק את ההתקדמות:
עיון בתוצאות
הפעלתם את Container Scanning API כחלק מתהליך ההגדרה, ולכן Artifact Registry סורק באופן אוטומטי את התמונות כדי לזהות נקודות חולשה באבטחה.
כדי לבדוק את נקודות החולשה:
פותחים את הדף Artifact Registry Repositories (מאגרי Artifact Registry):
ברשימת המאגרים, לוחצים על מאגר.
לוחצים על שם התמונה. הסכומים הכוללים של נקודות החולשה לכל תקציר תמונה מופיעים בעמודה Vulnerabilities.

כדי לראות את רשימת נקודות החולשה בתמונה, לוחצים על הקישור בעמודה Vulnerabilities (נקודות חולשה). ברשימת נקודות החולשה מוצגים חומרת נקודת החולשה, הזמינות של תיקון והשם של החבילה שמכילה את נקודת החולשה.

הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, חשוב לזכור למחוק משאבים שכבר אין לכם צורך בהם.
כדי למחוק פרויקט Google Cloud ממסוף Google Cloud או מ-gcloudCLI:
המסוף
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
gcloud
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
המאמרים הבאים
- בודקים את רשימת תמונות הבסיס המוגדרות מראש שזמינות.
- התאמה אישית של קובצי אימג' בקונטיינר.
- בודקים את סוגי המכונות הזמינים.
- להגדיר שיטות אבטחה מומלצות.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.