מפעיל של עומס עבודה יכול להעביר אפשרויות למופע של מכונה וירטואלית של עומס עבודה ב-Confidential Space כדי לקבוע את ההתנהגות שלה לפני שהיא פועלת. למרות שלחלק מהדגלים יש ערכים נדרשים שלא משתנים, עדיין צריך לבחור את האפשרויות הבאות:
האם לבסס את מכונת ה-VM על תמונה של Confidential Space לייצור או לניפוי באגים.
האם להשתמש ב-AMD SEV, ב-Intel TDX או ב-Intel TDX עם NVIDIA Confidential Computing כדי לשמור על הפרטיות של נתוני עומס העבודה.
אילו משתני מטא-נתונים של מכונה וירטואלית צריך להעביר, כולל פרטים כמו קובץ אימג' של קונטיינר של עומס עבודה להפעלה, שירות אימות לשימוש, האם לבצע רישום ב-Cloud Logging ואילו משתני סביבה להגדיר.
איזה חשבון שירות לצרף למכונה הווירטואלית כדי להריץ את עומס העבודה, ואילו הרשאות נדרשות לו כדי לגשת לנתונים סודיים בפרויקטים אחרים ולכתוב את התוצאות במקום כלשהו.
האזור שבו המכונה הווירטואלית צריכה לפעול.
הנה דוגמה ליצירת מכונה וירטואלית חסויה ולהרצת קונטיינר Docker בשם WORKLOAD_CONTAINER_NAME:
עומסי עבודה שמבוססים על CPU
gcloud compute instances create INSTANCE_NAME \
--confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
--machine-type=MACHINE_TYPE_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--zone=ZONE_NAME \
--project=PROJECT_ID
מספקים את הערכים הבאים:
INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. בוחרים אחד מהערכים הבאים:SEVTDX
MACHINE_TYPE_NAME: סוג המכונה הווירטואלית, לדוגמה,n2d-standard-2. סוגי המכונות התקפים למכונות וירטואליות Confidential VMs נקבעים לפי טכנולוגיית Confidential Computing שבחרתם, AMD SEV או Intel TDX. סוגי מכונות, מעבדים ותחומים
MAINTENANCE_POLICY: עבור סוגי מכונות N2D שמשתמשים ב-SEV, צריך להגדיר את הערך הזה ל-MIGRATEכדי לתמוך במיגרציה פעילה. לכל שאר סוגי המכונות, צריך להגדיר את הערך הזה כ-TERMINATE, כי הן לא תומכות במיגרציה פעילה.
IMAGE_FAMILY_NAME: משפחת התמונות של Confidential Space. צריך לבחור אחת מהאפשרויות:confidential-spaceלעומסי עבודה בסביבת ייצור
confidential-space-debugלעומסי עבודה של ניפוי באגים
משתני מטא-נתונים נוספים, שמשנים את אופן הפעולה של המכונה הווירטואלית, כולל שירות האימות שבו יש להשתמש.
WORKLOAD_AUTHOR_PROJECT: מזהה הפרויקט שמארח את מאגר Artifact Registry שבו מאוחסן קובץ ה-container של עומס העבודה.
REPOSITORY_NAME: השם של מאגר Artifact Registry שבו מאוחסן קונטיינר של עומס עבודה.
WORKLOAD_CONTAINER_NAME: השם של מאגר עומסי העבודה.
WORKLOAD_SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמריץ את עומס העבודה.
WORKLOAD_OPERATOR_PROJECT_ID: מזהה הפרויקט שבו פועל עומס העבודה.
ZONE_NAME: האזור שבו פועל המופע של המכונה הווירטואלית, לדוגמה,us-west1-b. כדי להשתמש ב-Confidential Space, צריך את השירותים הבאים, שזמינים במיקומים ספציפיים:Confidential VM, בהתבסס על טכנולוגיית Confidential Computing שבשימוש
PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.
עומסי עבודה מבוססי GPU
לפני שמתחילים
Confidential Space תומך רק ב-NVIDIA Confidential Computing ב-GPU מסוג H100.
כדי לוודא שיש לכם מספיק מכסת GPU למשאבים שאתם מבקשים, כדאי לבדוק את מכסת ה-GPU. כדי להשתמש במשאבים של מכונות וירטואליות חסויות עם יחידות GPU, צריך לבקש מכסת GPU שניתנת להפסקת פעולה. כשמבקשים מכסת GPU, צריך לבקש מכסה לדגמי ה-GPU שרוצים ליצור בכל אזור, ומכסה גלובלית נוספת (
GPUs (all regions)) למספר הכולל של GPU מכל הסוגים בכל האזורים.כדי להבין את השימוש במכסות, כדאי לקרוא את המאמר בנושא מכסות הקצאה של מכונות וירטואליות עם GPU ושל מכונות וירטואליות שניתנות להפסקת פעולה.
קוראים את המגבלות ליצירת בקשה לשינוי גודל ב-MIG.
כדי להתקין את הדרייברים שנדרשים ל-NVIDIA Confidential Computing, צריך להעביר את משתנה המטא-נתונים
tee-install-gpu-driverעם הערךtrue.למנהלי ההתקנים (דרייברים) של NVIDIA ולערכת הכלים של CUDA, מומלץ להשתמש בדיסק אתחול של מכונה וירטואלית עם נפח של 30GB ומעלה.
כדי להשתמש באפליקציות CUDA, ספריות NVIDIA CUDA-X צריכות להיות זמינות בקובץ האימג' של הקונטיינר שבו אתם משתמשים. כדי לכלול את הספריות, מבצעים את אחת מהפעולות הבאות:
משתמשים בקובץ אימג' של קונטיינר עם ספריות NVIDIA CUDA-X מותקנות מראש. לדוגמה, אתם יכולים להשתמש בקונטיינרים של Google ללמידה עמוקה (Deep Learning) כדי לקבל frameworks של מדעי נתונים שהותקנו מראש, ספריות NVIDIA CUDA-X וכלים נוספים. לחלופין, אפשר להשתמש בתמונת קונטיינר של NVIDIA CUDA רק עבור ספריות NVIDIA CUDA-X.
ליצור קובץ אימג' משלכם בקונטיינר ולהשתמש בו. מגדירים את משתנה הסביבה
LD_LIBRARY_PATHל-/usr/local/nvidia/lib64, שצריך להכיל את ספריות NVIDIA CUDA-X ואת מנהלי ההתקנים של המכשיר.
בעיות מוכרות
יכול להיות שאימות ה-GPU ייכשל, ויוצג דיווח על רשומת מדידה לא תואמת באינדקס 9.
כדי לעקוף את הבעיה, צריך לבצע עצירה והפעלה מחדש מלאות של ה-VM החסוי. הפעלה מחדש של ה-VM ממערכת ההפעלה של האורח ב-VM לא פותרת את הבעיה.
Google ו-NVIDIA פועלות לפתרון הבעיה.
כשמריצים עומס עבודה של Confidential Space עם GPU מסוג NVIDIA H100 שמצורף, יכול להיות שתוצג הודעת השגיאה הבאה:
failed to get launchspec, make sure you're running inside a GCE VM: GPU Driver installation is not supported.זו בעיה מוכרת בתמונה של Confidential Space. כדי לעקוף את הבעיה, מפעילים מחדש את ה-VM החסוי.
פריסת עומס עבודה מבוסס-GPU
כדי לפרוס עומס עבודה מבוסס-GPU, צריך ליצור מופע של מכונה וירטואלית (VM) מסוג Confidential VM באמצעות מודל ההקצאה Spot או Flex-start.
כרטיס Spot
כדי להשתמש במודל הקצאת משאבים מסוג Spot, צריך ליצור מכונה וירטואלית (VM) שעברה אופטימיזציה לשימוש במאיץ.
gcloud compute instances create INSTANCE_NAME \
--provisioning-model=SPOT \
--confidential-compute-type=TDX \
--machine-type=a3-highgpu-1g \
--maintenance-policy=TERMINATE \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY_NAME \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest~tee-install-gpu-driver=true" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--boot-disk-size=30G \
--zone=ZONE_NAME \
--project=PROJECT_ID
מספקים את הערכים הבאים:
INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.
IMAGE_FAMILY_NAME: משפחת התמונות של Confidential Space. צריך לבחור אחת מהאפשרויות:confidential-spaceלעומסי עבודה בסביבת ייצור
confidential-space-debugלעומסי עבודה של ניפוי באגים
משתני מטא-נתונים נוספים, שמשנים את אופן הפעולה של המכונה הווירטואלית, כולל שירות האימות שבו יש להשתמש.
WORKLOAD_AUTHOR_PROJECT: מזהה הפרויקט שבו מופעל עומס העבודה.
REPOSITORY_NAME: שם המאגר ב-Artifact Registry.
WORKLOAD_CONTAINER_NAME: השם של מאגר עומסי העבודה.
WORKLOAD_SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמריץ את עומס העבודה.
WORKLOAD_OPERATOR_PROJECT_ID: מזהה הפרויקט שבו פועל עומס העבודה.
ZONE_NAME: אחד מהאזורים שתומכים ב-NVIDIA Confidential Computing.
PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.
Flex-start
כדי להשתמש במודל ההקצאה התחלה גמישה (Flex-start), יוצרים תבנית של הגדרות מכונה ואחריה קבוצת מופעי מכונה מנוהלים (MIG).
יוצרים תבנית של הגדרות מכונה:
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --provisioning-model=FLEX_START \ --confidential-compute-type=TDX \ --machine-type=a3-highgpu-1g \ --maintenance-policy=TERMINATE \ --shielded-secure-boot \ --image-project=confidential-space-images \ --image-family=IMAGE_FAMILY_NAME \ --metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest~tee-install-gpu-driver=true" \ --service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \ --scopes=cloud-platform \ --boot-disk-size=30G \ --reservation-affinity=none \ --max-run-duration=RUN_DURATION \ --instance-termination-action=DELETE \ --project=PROJECT_IDמספקים את הערכים הבאים:
INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה חדשה.
IMAGE_FAMILY_NAME: משפחת התמונות של Confidential Space. צריך לבחור אחת מהאפשרויות:confidential-spaceלעומסי עבודה בסביבת ייצור
confidential-space-debugלעומסי עבודה של ניפוי באגים
WORKLOAD_AUTHOR_PROJECT: מזהה הפרויקט שבו מופעל עומס העבודה.
REPOSITORY_NAME: שם המאגר של Artifact Registry.
WORKLOAD_CONTAINER_NAME: השם של מאגר העומסים.
WORKLOAD_SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמריץ את עומס העבודה.
WORKLOAD_OPERATOR_PROJECT_ID: מזהה הפרויקט שבו פועל עומס העבודה.
RUN_DURATION: משך הזמן שבו רוצים שהמופעים של המכונות הווירטואליות המבוקשות יפעלו. הערך צריך להיות בפורמט של מספר הימים, השעות, הדקות או השניות, ואחריוd,h,mאוsבהתאמה. לדוגמה, מציינים30mל-30 דקות או1d2h3m4sליום אחד, שעתיים, שלוש דקות וארבע שניות. הערך צריך להיות בין 10 דקות לשבעה ימים.
PROJECT_ID: אופציונלי. מזהה הפרויקט שבו ייצרו את מכונות ה-VM.
יוצרים קבוצת מופעי מכונה מנוהלים (MIG) אזורית באמצעות הפקודה
instance-groups managed create:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template=INSTANCE_TEMPLATE_NAME \ --size=0 \ --zone=ZONE_NAME \ --default-action-on-vm-failure=do_nothingמספקים את הערכים הבאים:
INSTANCE_GROUP_NAME: השם של ה-MIG.
INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה למכונות וירטואליות עם GPU.
ZONE_NAME: אחד מהאזורים שתומכים ב-NVIDIA Confidential Computing.
ב-MIG, יוצרים בקשה לשינוי הגודל. מציינים את מספר המכונות הווירטואליות עם GPU שרוצים, ואת משך הזמן שבו המכונות הווירטואליות האלה יפעלו.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAMEמספקים את הערכים הבאים:
INSTANCE_GROUP_NAME: השם של ה-MIG.
INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה למכונות וירטואליות עם GPU.
ZONE_NAME: אחד מהאזורים שתומכים ב-NVIDIA Confidential Computing.RESIZE_REQUEST_NAME: השם של בקשת שינוי הגודל.
COUNT: מספר המופעים של מכונות וירטואליות שרוצים להוסיף לקבוצה בבת אחת.
בקשת שינוי הגודל שיוצרים נשארת במצב
ACCEPTEDעד שקבוצת ה-MIG יוצרת את כל המכונות הווירטואליות עם ה-GPU המבוקשות. אחרי שכל מכונות ה-VM עם GPU נוצרות בקבוצה, מצב הבקשה משתנה ל-SUCCEEDED.אם יש מספיק משאבים זמינים לבקשת שינוי הגודל, מכונות וירטואליות מתווספות ל-MIG ומופעלות כדי להריץ את עומס העבודה. כדי להציג את רשימת המופעים שקיימים ב-MIG, מריצים את הפקודה הבאה:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_IDמספקים את הערכים הבאים:
INSTANCE_GROUP_NAME: השם של ה-MIG.
ZONE_NAME: האזור הנתמך שממנו רוצים לקבל רשימה של מופעים של מכונות וירטואליות.
PROJECT_ID: אופציונלי. המזהה של הפרויקט שממנו רוצים לקבל רשימה של מכונות וירטואליות.
חשבון שירות מצורף
כדי להפעיל עומס עבודה, צריך לצרף חשבון שירות למכונה וירטואלית חסויה של עומס העבודה. חשבון השירות צריך להיות מוגדר באופן הבא:
עם התפקידים הבאים:
roles/confidentialcomputing.workloadUserכדי ליצור אסימון אימות.
roles/artifactregistry.readerכדי לאחזר קובץ אימג' של קונטיינר של עומס עבודה שמאוחסנת ב-Artifact Registry.roles/logging.logWriterאם רוצים להפנות אתSTDOUTו-STDERRאל Cloud Logging.
עם גישת קריאה למיקום שבו משתפי הפעולה מאחסנים את הנתונים הסודיים שלהם, למשל, קטגוריה של Cloud Storage או טבלה ב-BigQuery.
גישת כתיבה למיקום שבו עומס העבודה מוציא את הנתונים, למשל, קטגוריה של Cloud Storage. לשותפי העריכה של הנתונים צריכה להיות גישת קריאה למיקום הזה.
בנוסף, משתפי פעולה בנתונים ומפעילים של עומסי עבודה צריכים להגדיר את הדברים הבאים:
אם משתפי הפעולה עם הנתונים משתמשים בהתחזות לחשבון שירות במקום בגישה ישירה למשאבים, הם צריכים להוסיף את חשבון השירות לספק של מאגר זהויות עומס העבודה שלהם כתנאי מאפיין:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accountsלמפעיל עומס העבודה צריך להיות התפקיד
roles/iam.serviceAccountUserכדי להתחזות לחשבון השירות. כך הם יכולים לצרף אותו למופע של מכונה וירטואלית של עומס עבודה כדי להריץ את עומס העבודה.
משתני מטא-נתונים
אפשר לשנות את ההתנהגות של המכונה הווירטואלית של עומס העבודה ב-Confidential Space על ידי העברת משתנים לאפשרות --metadata כשיוצרים את המכונה הווירטואלית.
כדי להעביר כמה משתנים, קודם צריך להגדיר את התו המפריד על ידי הוספת הקידומת ^~^ לערך --metadata. ההגדרה הזו קובעת את התו המפריד כ-~, כי נעשה שימוש ב-, בערכי המשתנים.
לדוגמה:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
בטבלה הבאה מפורטים משתני המטא-נתונים שאפשר להגדיר עבור מכונת ה-VM של עומס העבודה.
| מפתח מטא-נתונים | סוג | תיאור וערכים |
|---|---|---|
|
אינטראקציה עם:
|
String |
חובה. הנתיב הזה מצביע על המיקום של מאגר עומס העבודה. דוגמה |
|
String |
חובה רק אם משתמשים ב-Intel Trust Authority כשירות האימות. מגדירים את הערך למפתח ה-API של Intel Trust Authority. ב מסמכי התיעוד של Intel מוסבר איך ליצור מפתח API של Intel Trust Authority. Intel Trust Authority תומך רק במכונות וירטואליות מסוג Intel TDX. דוגמה |
|
String |
חובה רק אם משתמשים ב-Intel Trust Authority כשירות האימות. מגדירים את הערך לאזור שבו רוצים להפעיל את Intel Trust Authority. האזורים התקפים הם:
Intel Trust Authority תומך רק במכונות וירטואליות מסוג Intel TDX. דוגמה |
|
אינטראקציה עם:
|
מערך מחרוזות JSON |
מוסיף יכולות Linux נוספות לקונטיינר של עומס העבודה. דוגמה |
|
אינטראקציה עם:
|
בוליאני |
ברירת המחדל היא דוגמה |
|
אינטראקציה עם:
|
מערך מחרוזות JSON |
מחליף את ההוראות
CMD שצוינו ב- דוגמה |
|
אינטראקציה עם:
|
ספירה |
הפלט של הערכים התקינים הם:
נפח גדול של יומנים במסוף הטורי עלול להשפיע על ביצועי עומס העבודה. דוגמה |
|
|
מספר שלם |
מגדיר את הגודל ב-kB של נקודת הטעינה של דוגמה |
|
אינטראקציה עם:
|
String |
הגדרת משתני סביבה בקונטיינר של עומס העבודה. יוצר עומס העבודה צריך גם להוסיף את שמות משתני הסביבה למדיניות ההפעלה
דוגמה |
|
אינטראקציה עם:
|
String |
רשימה של חשבונות שירות שאפשר להתחזות אליהם באמצעות האופרטור של עומס העבודה. למפעיל עומס העבודה צריכה להיות הרשאה להתחזות לחשבונות השירות. אפשר לציין כמה חשבונות שירות ולהפריד ביניהם באמצעות פסיקים. דוגמה |
|
אינטראקציה עם:
|
בוליאני |
האם להתקין את דרייבר ה-GPU של NVIDIA ל-Confidential Computing. נדרש סוג מכונה שתומך ב-NVIDIA Confidential Computing. דוגמה |
|
אינטראקציה עם:
|
בוליאני |
ברירת המחדל היא דוגמה |
|
אינטראקציה עם:
|
String |
רשימה של הגדרות של נקודות חיבור שמופרדות באמצעות נקודה-פסיק. הגדרת הנפח מורכבת מרשימה מופרדת בפסיקים של צמדי מפתח/ערך, שכוללת את דוגמה |
|
אינטראקציה עם:
|
ספירה |
מדיניות ההפעלה מחדש של מפעיל הקונטיינר כשהעומס מופסק. הערכים התקינים הם:
המשתנה הזה נתמך רק בתמונה של Confidential Space בסביבת הייצור. דוגמה |
|
אינטראקציה עם:
|
String |
רשימה של מאגרי מאגרי תגים מופרדים בפסיקים שמאחסנים את החתימות שנוצרות על ידי Sigstore Cosign. דוגמה |
התאמה להיקף
מידע על הרחבת נפח העבודה וזמינות גבוהה של עומסי עבודה ב-Confidential Space בסביבת ייצור זמין במאמר בנושא קבוצות מנוהלות של מופעים.