פריסת עומסי עבודה

מפעיל עומס העבודה יכול להעביר אפשרויות למכונה וירטואלית של עומס עבודה ב-Confidential Space כדי לקבוע את ההתנהגות שלה לפני שהיא פועלת. למרות שלחלק מהדגלים יש ערכי חובה שלא משתנים, עדיין צריך לבצע את הבחירות הבאות:

בדוגמה הבאה נוצרת Confidential VM, ומופעל קונטיינר 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. \
    --scopes=cloud-platform \
    --zone=ZONE_NAME \
    --project=PROJECT_ID

מספקים את הערכים הבאים:

  • ‫INSTANCE_NAME: השם של המכונה הווירטואלית החדשה.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג טכנולוגיית Confidential Computing שבה רוצים להשתמש. בוחרים אחד מהערכים הבאים:

    • SEV

    • TDX

  • ‫MACHINE_TYPE_NAME: סוג המכונה של ה-VM, לדוגמה n2d-standard-2. סוגי המכונות שאפשר להשתמש בהם במכונות וירטואליות Confidential VM נקבעים לפי טכנולוגיית 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 שבו מאוחסן מאגר עומסי העבודה.

  • ‫REPOSITORY_NAME: שם המאגר ב-Artifact Registry שבו מאוחסן מאגר עומס העבודה.

  • ‫WORKLOAD_CONTAINER_NAME: השם של מאגר עומסי העבודה.

  • ‫WORKLOAD_SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמריץ את עומס העבודה.

  • ‫WORKLOAD_OPERATOR_PROJECT_ID: מזהה הפרויקט שבו פועל עומס העבודה.

  • ‫ZONE_NAME: האזור שבו פועל המכונה הווירטואלית, לדוגמה us-west1-b. כדי להשתמש ב-Confidential Space צריך את השירותים הבאים, שזמינים במיקומים ספציפיים:

  • ‫PROJECT_ID: אופציונלי. מזהה הפרויקט שבו יוצרים את המכונה הווירטואלית.

עומסי עבודה שמבוססים על GPU

לפני שמתחילים

  • ‫Confidential Space תומך ב-NVIDIA Confidential Computing רק במעבדי GPU מסוג H100.

  • כדי לוודא שיש לכם מספיק מכסת GPU למשאבים שאתם מבקשים, בדקו את מכסת ה-GPU. במכונות וירטואליות של Confidential VM עם יחידות GPU, צריך לבקש מכסה של יחידות GPU ניתנות להחלפה כדי להשתמש במשאבים. כשמבקשים מכסה ל-GPU, צריך לבקש מכסה לדגמי ה-GPU שרוצים ליצור בכל אזור, ומכסה גלובלית נוספת (GPUs (all regions)) למספר הכולל של יחידות ה-GPU מכל הסוגים בכל האזורים.

  • במאמר מכונות וירטואליות של GPU ומכסות הקצאה שניתנות להפסקה לפני הזמן מוסבר איך המכסות מנוצלות.

  • המגבלות ליצירת בקשה לשינוי כמות ב-MIG.

  • כדי להתקין את מנהלי ההתקנים שנדרשים ל-NVIDIA Confidential Computing, צריך להעביר את משתנה המטא-נתונים tee-install-gpu-driver עם הערך true.

  • למנהלי ההתקנים של NVIDIA ולערכת הכלים של CUDA, מומלץ להשתמש בדיסק אתחול של VM עם נפח אחסון של 30GB או יותר.

  • כדי להשתמש באפליקציות CUDA, ספריות NVIDIA CUDA-X צריכות להיות זמינות בקובץ האימג' של הקונטיינר שבו אתם משתמשים. כדי לכלול את הספריות, מבצעים אחת מהפעולות הבאות:

    • משתמשים בקובץ אימג' של קונטיינר עם ספריות NVIDIA CUDA-X שמותקנות מראש. לדוגמה, אתם יכולים להשתמש בקונטיינרים של למידה עמוקה (Deep Learning) של Google בשביל frameworks מותקנות מראש של מדעי נתונים, ספריות NVIDIA CUDA-X וכלים נוספים. לחלופין, אתם יכולים להשתמש בקובץ אימג' של קונטיינר CUDA של NVIDIA רק בשביל ספריות NVIDIA CUDA-X.

    • ליצור קובץ אימג' של קונטיינר משלכם ולהשתמש בו. מגדירים את משתנה הסביבה LD_LIBRARY_PATH ל-/usr/local/nvidia/lib64, שחייב להכיל את הספריות של NVIDIA CUDA-X ואת מנהלי ההתקנים (דרייברים).

בעיות מוכרות

  • כשמריצים עומס עבודה של 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. כדי לעקוף את הבעיה, צריך להפעיל מחדש את ה-Confidential VM.

פריסת עומס עבודה שמבוסס על GPU

כדי לפרוס עומס עבודה שמבוסס על GPU, צריך ליצור מכונה וירטואלית (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. \
    --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)

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

  1. יוצרים תבנית של הגדרות מכונה:

    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. \
        --scopes=cloud-platform \
        --boot-disk-size=30G \
        --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 דקות ל-7 ימים.

    • ‫PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונות הווירטואליות.

  2. יוצרים קבוצת 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
    

    מספקים את הערכים הבאים:

  3. יוצרים בקשה לשינוי כמות ב-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: השם של קבוצת המכונות המנוהלת.

    • ‫INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה למכונות וירטואליות עם GPU.

    • ‫ZONE_NAME: אחד מהאזורים שתומכים ב-NVIDIA Confidential Computing.

    • ‫RESIZE_REQUEST_NAME: השם של הבקשה לשינוי הגודל.

    • ‫COUNT: מספר המכונות הווירטואליות שרוצים להוסיף לקבוצה בבת אחת.

    הבקשה לשינוי כמות שיצרתם נשארת במצב ACCEPTED עד שקבוצת ה-MIG יוצרת את כל המכונות הווירטואליות של ה-GPU שביקשתם. אחרי שכל המכונות הווירטואליות של ה-GPU נוצרות בקבוצה, סטטוס הבקשה משתנה ל-SUCCEEDED.

  4. כשיש מספיק משאבים זמינים לבקשה לשינוי כמות, מכונות וירטואליות נוספות ל-MIG ומופעלות כדי להריץ את עומס העבודה. כדי להציג את המכונות שקיימות ב-MIG, מריצים את הפקודה הבאה:

    gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    מספקים את הערכים הבאים:

    • ‫INSTANCE_GROUP_NAME: השם של קבוצת המכונות המנוהלת.

    • ‫ZONE_NAME: האזור הנתמך שממנו רוצים לקבל רשימה של מכונות וירטואליות.

    • ‫PROJECT_ID: אופציונלי. מזהה הפרויקט שממנו רוצים לקבל רשימה של מכונות וירטואליות.

חשבון השירות המצורף

כדי להריץ את עומס העבודה, צריך לצרף חשבון שירות ל-Confidential VM של עומס העבודה. צריך להגדיר את חשבון השירות באופן הבא:

  • עם התפקידים הבאים:

  • עם גישת קריאה למיקום שבו שותפי הנתונים מאחסנים את הנתונים הסודיים שלהם, למשל קטגוריה של Cloud Storage או טבלה ב-BigQuery.

  • עם גישת כתיבה למקום שבו עומס העבודה מוציא את הנתונים, לדוגמה, קטגוריה של Cloud Storage. לשותפי הנתונים צריכה להיות גישת קריאה למיקום הזה.

בנוסף, שותפי הנתונים ומפעילי עומסי העבודה צריכים להגדיר את הדברים הבאים:

  • אם שותפי הנתונים משתמשים בהתחזות לחשבון שירות במקום בגישה ישירה למשאבים, הם צריכים להוסיף את חשבון השירות לספק של מאגר הזהויות של עומסי העבודה כתנאי למאפיין:

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.' 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 של עומס העבודה.

מפתח המטא-נתונים סוג תיאור וערכים

tee-image-reference

אינטראקציה עם:

String

חובה. הוא מצביע על המיקום של מאגר עומסי העבודה.

דוגמה
tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

ita-api-key

String

חובה רק אם משתמשים ב-Intel Trust Authority כשירות האימות. מגדירים את הערך למפתח ה-API של Intel Trust Authority.

ב מסמכי התיעוד של Intel מוסבר איך יוצרים מפתח API של Intel Trust Authority.

‫Intel Trust Authority תומך במכונות וירטואליות של Intel TDX, שיכולות לכלול גם GPU מסוג NVIDIA H100. אם ה-GPU קיים, גם ההוכחה שלו מאומתת.

דוגמה
ita-api-key=API_KEY

ita-region

String

חובה רק אם משתמשים ב-Intel Trust Authority כשירות האימות. מגדירים את הערך לאזור שבו רוצים להריץ את Intel Trust Authority. האזורים התקינים הם:

  • ארה"ב: https://api.trustauthority.intel.com
  • אירופה: https://api.eu.trustauthority.intel.com

‫Intel Trust Authority תומך במכונות וירטואליות של Intel TDX, שיכולות לכלול גם GPU מסוג NVIDIA H100. אם ה-GPU קיים, גם ההוכחה שלו מאומתת.

דוגמה
ita-region=REGION_NAME

tee-added-capabilities

אינטראקציה עם:

מערך מחרוזות JSON

מוסיפה יכולות Linux נוספות לקונטיינר של עומס העבודה.

דוגמה
tee-added-capabilities="[\"CAP_SYS_ADMIN\", \"CAP_SYS_CHROOT\"]"

tee-cgroup-ns

אינטראקציה עם:

  • יוצר עומס העבודה: מדיניות ההפעלה של allow_cgroups.
בוליאני

ברירת המחדל היא false. כשהערך הוא true, מופעלת נקודת טעינה של cgroup במרחב שמות ב-/sys/fs/cgroup.

דוגמה
tee-cgroup-ns=true

tee-cmd

אינטראקציה עם:

מערך מחרוזות JSON

מבטלת את ההוראות של CMD שצוינו ב-Dockerfile של מאגר עומס העבודה.

דוגמה
tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

אינטראקציה עם:

  • יוצר עומס העבודה: מדיניות ההפעלה של log_redirect.
ערכי ספירה

פלט של STDOUT ו-STDERR מקונטיינר עומס העבודה ל-Cloud Logging או לקונסולה טורית, באמצעות השדה confidential-space-launcher.

הערכים התקינים הם:

  • ‫false: (ברירת המחדל) לא מתבצע רישום ביומן.
  • ‫true: פלט לקונסולה הטורית ול-Cloud Logging.
  • ‫cloud_logging: פלט ל-Cloud Logging בלבד.
  • ‫serial: פלט לקונסולה הטורית בלבד.

נפח גבוה של יומנים בקונסולה הטורית עלול להשפיע על הביצועים של עומס העבודה.

דוגמה
tee-container-log-redirect=true

tee-dev-shm-size-kb

מספר שלם

מגדיר את הגודל בקילו-בייט של נקודת הטעינה של הזיכרון המשותף של /dev/shm.

דוגמה
tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

אינטראקציה עם:

String

מגדיר משתני סביבה בקונטיינר של עומס העבודה. יוצר עומס העבודה צריך גם להוסיף את שמות משתני הסביבה למדיניות ההפעלה של allow_env_override, אחרת הם לא יוגדרו.

דוגמה
tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

אינטראקציה עם:

String

רשימה של חשבונות שירות שמפעיל עומס העבודה יכול להתחזות אליהם. למפעיל של עומס העבודה צריכה להיות הרשאה להתחזות לחשבונות השירות.

אפשר לציין כמה חשבונות שירות, מופרדים בפסיקים.

דוגמה
tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.

tee-install-gpu-driver

אינטראקציה עם:

בוליאני

אם להתקין את מנהל ההתקן של NVIDIA ל-GPU של Confidential Computing. צריך סוג מכונה שתומך ב-NVIDIA Confidential Computing.

דוגמה
tee-install-gpu-driver=true

tee-monitoring-memory-enable

אינטראקציה עם:

בוליאני

ברירת המחדל היא false. כשהמדיניות מוגדרת לערך true, המעקב אחרי השימוש בזיכרון מופעל. המדדים שנאספים על ידי Confidential VM הם מסוג guest/memory/bytes_used, ואפשר לראות אותם ב-Cloud Logging או ב- Metrics Explorer.

דוגמה
tee-monitoring-memory-enable=true

tee-mount

אינטראקציה עם:

String

רשימה של הגדרות טעינה שמופרדות באמצעות נקודה ופסיק. הגדרת טעינה מורכבת מרשימה מופרדת בפסיקים של צמדי מפתח/ערך, וצריך לכלול בה את type, source ו-destination. הערך של destination חייב להיות נתיב מוחלט, והערך של type/source חייב להיות tmpfs.

דוגמה
type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-nonroot-container

אינטראקציה עם:

בוליאני

ברירת המחדל היא false. כשהערך הוא true, הקונטיינר פועל במרחב שמות מבודד של משתמש, כמשתמש Root ב-VM המארח. צריך להגדיר את המשתנה הזה לערך true אם יוצר עומס העבודה מגדיר את tee.launch_policy.nonroot_container לערך nonrootonly.

דוגמה
tee-nonroot-container=true

tee-restart-policy

אינטראקציה עם:

ערכי ספירה

מדיניות ההפעלה מחדש של מרכז האפליקציות של הקונטיינר כשעומס העבודה נפסק.

הערכים התקינים הם:

  • Never (ברירת מחדל)
  • Always
  • OnFailure

המשתנה הזה נתמך רק בתמונה של Confidential Space בסביבת הייצור.

דוגמה
tee-restart-policy=OnFailure

tee-signed-image-repos

אינטראקציה עם:

String

רשימה מופרדת בפסיקים של מאגרי קונטיינרים שבהם מאוחסנות החתימות שנוצרו על ידי Sigstore Cosign.

דוגמה
tee-signed-image-repos=us-docker.pkg.dev/projectA/repo/example,us-docker.pkg.dev/projectB/repo/example,us-docker.pkg.dev/projectC/repo/example

התאמה לעומס (scaling)

כדי לשנות את קנה המידה ולהגביר את הזמינות הגבוהה של עומסי עבודה בסביבת הייצור של Confidential Space, קראו את המאמר קבוצת מופעי מכונה מנוהלים.