Un operatore di workload può passare opzioni a un'istanza VM di workload Confidential Space per determinarne il comportamento prima dell'esecuzione. Anche se alcuni flag hanno valori obbligatori che non cambiano, devi comunque effettuare le seguenti scelte:
Se basare l'istanza VM su un'immagine Confidential Space di produzione o di debug.
Se utilizzare AMD SEV, Intel TDX o Intel TDX con NVIDIA Confidential Computing (anteprima) per mantenere privati i dati del carico di lavoro.
Quali variabili dei metadati VM devono essere passate, tra cui dettagli come l'immagine del container del carico di lavoro da eseguire, se eseguire la registrazione in Cloud Logging e quali variabili di ambiente impostare.
Quale service account collegare alla VM per eseguire il workload e quali autorizzazioni deve avere per accedere ai dati riservati in altri progetti e scrivere i risultati da qualche parte.
La zona in cui deve essere eseguita l'istanza VM.
Ecco un esempio che crea una Confidential VM ed esegue un container Docker denominato WORKLOAD_CONTAINER_NAME:
Workload basati su 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
Fornisci i seguenti valori:
INSTANCE_NAME
: il nome della nuova istanza VM.CONFIDENTIAL_COMPUTING_TECHNOLOGY
: Il tipo di tecnologia Confidential Computing da utilizzare. Scegli uno dei seguenti valori:SEV
TDX
MACHINE_TYPE_NAME
: il tipo di macchina della VM, ad esempion2d-standard-2
. I tipi di macchina validi per le istanze Confidential VM sono determinati dalla tecnologia Confidential Computing che hai scelto, ovvero AMD SEV o Intel TDX. Consulta Tipi di macchine, CPU e zone.MAINTENANCE_POLICY
: per i tipi di macchine N2D che utilizzano SEV, imposta questo valore suMIGRATE
per il supporto della migrazione live. Per tutti gli altri tipi di macchine, imposta questo valore suTERMINATE
, in quanto non supportano la migrazione live.IMAGE_FAMILY_NAME
: la famiglia per le immagini di Confidential Space. Scegli una delle opzioni seguenti:confidential-space
per i workload di produzioneconfidential-space-debug
per i carichi di lavoro di debug
WORKLOAD_AUTHOR_PROJECT
: l'ID del progetto che ospita il repository Artifact Registry in cui è archiviato il container del workload.REPOSITORY_NAME
: il nome del repository Artifact Registry in cui è archiviato il container del workload.WORKLOAD_CONTAINER_NAME
: il nome del container del workload.WORKLOAD_SERVICE_ACCOUNT_NAME
: il nome del account di servizio che esegue il workload.WORKLOAD_OPERATOR_PROJECT_ID
: l'ID del progetto che esegue il workload.ZONE_NAME
: la zona in cui viene eseguita l'istanza VM, ad esempious-west1-b
. Confidential Space richiede i seguenti servizi, disponibili in località specifiche:Confidential VM, basata sulla tecnologia Confidential Computing in uso
PROJECT_ID
: (Facoltativo) L'ID del progetto in cui creare l'istanza VM.
Carichi di lavoro basati su GPU
Prima di iniziare
Confidential Space supporta solo NVIDIA Confidential Computing (anteprima) sulle GPU H100.
Per assicurarti di disporre di una quota GPU sufficiente per le risorse che stai richiedendo, controlla la quota GPU. Per le istanze VM confidenziali con GPU, richiedi una quota di GPU prerilasciabile per utilizzare le risorse. Quando richiedi una quota GPU, devi richiederne una per i modelli di GPU che vuoi creare in ciascuna regione e una globale aggiuntiva (
GPUs (all regions)
) per il numero totale di GPU di tutti i tipi in tutte le regioni.Per comprendere il consumo di quota, leggi VM GPU e quote di allocazione preemptible.
Leggi le limitazioni per la creazione di una richiesta di ridimensionamento in un gruppo di istanze gestite.
Per installare i driver richiesti per NVIDIA Confidential Computing (anteprima), devi trasmettere la variabile di metadati
tee-install-gpu-driver
con un valore ditrue
.Per i driver NVIDIA e il toolkit CUDA, è consigliato un disco di avvio della VM con almeno 30 GB di spazio.
Esegui il deployment di un carico di lavoro basato su GPU
Per eseguire il deployment di un carico di lavoro basato su GPU, devi creare un'istanza Confidential VM utilizzando il modello di provisioning spot o flex-start (anteprima).
Spot
Per utilizzare il modello di provisioning spot, crea un'istanza VM ottimizzata per l'acceleratore.
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
Fornisci i seguenti valori:
INSTANCE_NAME
: il nome della nuova istanza VM.IMAGE_FAMILY_NAME
: la famiglia per le immagini di Confidential Space. Scegli una delle opzioni seguenti:confidential-space-preview-cgpu
per i workload di produzioneconfidential-space-debug-preview-cgpu
per i carichi di lavoro di debug
WORKLOAD_AUTHOR_PROJECT
: l'ID progetto in cui viene eseguito il workload.REPOSITORY_NAME
: il nome del repository Artifact Registry.WORKLOAD_CONTAINER_NAME
: il nome del container del workload.WORKLOAD_SERVICE_ACCOUNT_NAME
: il nome del account di servizio che esegue il workload.WORKLOAD_OPERATOR_PROJECT_ID
: l'ID del progetto che esegue il workload.ZONE_NAME
: una delle zone che supportano NVIDIA Confidential Computing (anteprima).PROJECT_ID
: (Facoltativo) L'ID del progetto in cui creare l'istanza VM.
Avvio flessibile
Per utilizzare il modello di provisioning con avvio flessibile (anteprima), crea un modello di istanza, seguito da un gruppo di istanze gestite (MIG).
Crea un modello di istanza:
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
Fornisci i seguenti valori:
INSTANCE_TEMPLATE_NAME
: il nome del nuovo template di istanza VM.IMAGE_FAMILY_NAME
: la famiglia per le immagini di Confidential Space. Scegli una delle opzioni seguenti:confidential-space-preview-cgpu
per i workload di produzioneconfidential-space-debug-preview-cgpu
per i carichi di lavoro di debug
WORKLOAD_AUTHOR_PROJECT
: l'ID progetto in cui viene eseguito il workload.REPOSITORY_NAME
: il nome del repository Artifact Registry.WORKLOAD_CONTAINER_NAME
: il nome del container del workload.WORKLOAD_SERVICE_ACCOUNT_NAME
: il nome del account di servizio che esegue il workload.WORKLOAD_OPERATOR_PROJECT_ID
: l'ID del progetto che esegue il carico di lavoro.RUN_DURATION
: la durata per cui vuoi eseguire le istanze VM richieste. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguito rispettivamente dad
,h
,m
os
. Ad esempio, specifica30m
per 30 minuti o1d2h3m4s
per un giorno, due ore, tre minuti e quattro secondi. Il valore deve essere compreso tra 10 minuti e sette giorni.PROJECT_ID
: (Facoltativo) L'ID del progetto in cui creare le istanze VM.
Crea un gruppo di istanze gestite a livello di zona utilizzando il comando
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
Fornisci i seguenti valori:
INSTANCE_GROUP_NAME
: il nome del MIG.INSTANCE_TEMPLATE_NAME
: il nome del template di istanza per le VM con GPU.ZONE_NAME
: una delle zone che supportano NVIDIA Confidential Computing (anteprima).
Nel gruppo di istanze gestite, crea una richiesta di ridimensionamento. Specifica il numero di istanze VM GPU che vuoi e la durata di esecuzione di queste istanze VM.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
Fornisci i seguenti valori:
INSTANCE_GROUP_NAME
: il nome del MIG.INSTANCE_TEMPLATE_NAME
: il nome del template di istanza per le istanze VM con GPU.ZONE_NAME
: una delle zone che supportano NVIDIA Confidential Computing (anteprima).RESIZE_REQUEST_NAME
: il nome della richiesta di ridimensionamento.COUNT
: il numero di istanze VM da aggiungere contemporaneamente al gruppo.
La richiesta di ridimensionamento che crei rimane nello stato
ACCEPTED
finché il MIG non crea tutte le istanze di VM GPU richieste. Dopo aver creato tutte le istanze VM con GPU nel gruppo, lo stato della richiesta cambia inSUCCEEDED
.Quando sono disponibili risorse sufficienti per la richiesta di ridimensionamento, le istanze VM vengono aggiunte al MIG e avviate per eseguire il workload. Per elencare le istanze presenti nel MIG, esegui questo comando:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
Fornisci i seguenti valori:
INSTANCE_GROUP_NAME
: il nome del MIG.ZONE_NAME
: la zona supportata da cui recuperare un elenco di istanze VM.PROJECT_ID
: (Facoltativo) L'ID del progetto da cui ottenere un elenco di istanze VM.
Account di servizio collegato
Per eseguire il workload, è necessario collegare un account di servizio alla VM Confidential del workload. Il account di servizio deve essere configurato nel seguente modo:
Con i seguenti ruoli:
roles/confidentialcomputing.workloadUser
per generare un token di attestazione.roles/artifactregistry.reader
per recuperare un'immagine container del workload archiviata in Artifact Registry.roles/logging.logWriter
se vuoi reindirizzareSTDOUT
eSTDERR
a Cloud Logging.
Con accesso in lettura alla posizione in cui i collaboratori dei dati archiviano i dati riservati, ad esempio un bucket Cloud Storage o una tabella BigQuery.
Con accesso in scrittura alla posizione in cui il workload deve restituire i dati, ad esempio un bucket Cloud Storage. I collaboratori dei dati devono avere accesso in lettura a questa posizione.
Inoltre, i collaboratori dei dati e gli operatori dei workload devono configurare quanto segue:
Se i collaboratori dei dati utilizzano l'imitazione dell'account di servizio anziché l'accesso diretto alle risorse, devono aggiungere l'account di servizio al provider del pool di identità del carico di lavoro come condizione dell'attributo:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
L'operatore del workload richiede il ruolo
roles/iam.serviceAccountUser
per impersonare ilaccount di serviziot. In questo modo, possono collegarlo a un'istanza VM del carico di lavoro in modo che possa eseguire il carico di lavoro.
Variabili dei metadati
Puoi modificare il comportamento della VM del workload Confidential Space passando le variabili
all'opzione --metadata
quando crei la VM.
Per inserire più variabili, imposta prima il delimitatore aggiungendo il prefisso
--metadata
al valore ^~^
. Il delimitatore viene impostato su ~
, poiché ,
viene utilizzato nei
valori delle variabili.
Ad esempio:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
La tabella seguente descrive in dettaglio le variabili di metadati che puoi impostare per la VM del carico di lavoro.
Chiave dei metadati | Tipo | Descrizione e valori |
---|---|---|
Interazione con:
|
Stringa |
Obbligatorio. Indica la posizione del container del workload. Esempio
|
Interazione con:
|
Array di stringhe JSON |
Aggiunge funzionalità Linux aggiuntive al container del workload. Esempio
|
Interazione con:
|
Booleano |
Il valore predefinito è Esempio
|
Interazione con:
|
Array di stringhe JSON |
Esegue l'override delle istruzioni
CMD
specificate nel
Esempio
|
Interazione con:
|
Stringa definita |
Output I valori validi sono:
Un volume elevato di log nella console seriale potrebbe influire sulle prestazioni del workload. Esempio
|
|
Numero intero |
Imposta le dimensioni in kB del punto di montaggio della memoria condivisa Esempio
|
Interazione con:
|
Stringa |
Imposta le variabili di ambiente nel container del workload. L'autore del workload deve anche aggiungere i nomi variabile di ambiente alle norme di avvio
Esempio
|
Interazione con:
|
Stringa |
Un elenco di service account che possono essere rappresentati dall'operatore del workload. L'operatore del carico di lavoro deve avere l'autorizzazione per impersonare i service account. È possibile elencare più service account separati da virgole. Esempio
|
Interazione con:
|
Booleano |
Se installare il driver GPU Confidential Computing di NVIDIA. Richiede un tipo di macchina che supporti NVIDIA Confidential Computing (anteprima). Esempio
|
Interazione con:
|
Booleano |
Il valore predefinito è Esempio
|
Interazione con:
|
Stringa |
Un elenco di definizioni di montaggio separate da punto e virgola. Una definizione
di montaggio è costituita da un elenco separato da virgole di coppie chiave-valore,
che richiedono Esempio
|
Interazione con:
|
Stringa definita |
La policy di riavvio del launcher del container quando il workload si arresta I valori validi sono:
Questa variabile è supportata solo dall'immagine Confidential Space di produzione. Esempio
|
Interazione con:
|
Stringa |
Un elenco di repository di container separati da virgole che archiviano le firme generate da Sigstore Cosign. Esempio
|
Scalabilità
Per lo scaling e l'alta affidabilità dei workload Confidential Space di produzione, consulta Gruppi di istanze gestite.