Esegui il deployment dei carichi di lavoro


Un operatore di workload può passare opzioni a una VM di workload Confidential Space per determinarne il comportamento prima dell'esecuzione. Sebbene alcuni flag abbiano valori obbligatori che non cambiano, devi comunque effettuare le seguenti scelte:

Di seguito è riportato un esempio che crea una VM Confidential nella zona us-west1-b in base all'immagine Confidential Space di produzione più recente ed esegue un contenitore Docker denominato WORKLOAD_CONTAINER_NAME:

gcloud compute instances create workload-vm-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=us-west1-b

Le opzioni utilizzate in questo esempio sono descritte in dettaglio nella tabella seguente.

Bandiera Descrizione
--confidential-compute-type

Obbligatorio. Indica a Compute Engine quale tecnologia Confidential Computing utilizzare при создании Confidential VM instance.

Sostituisci CONFIDENTIAL_COMPUTING_TECHNOLOGY con uno dei seguenti valori:

La tecnologia Confidential Computing deve corrispondere alla famiglia di immagini selezionata.

--machine-type Facoltativo. Specifica il nome di un tipo di macchina Confidential VM. Consulta Configurazioni supportate per i tipi di macchine che supportano AMD SEV e Intel TDX (anteprima).
--maintenance-policy Per i tipi di macchine N2D che utilizzano SEV, imposta questo valore su MIGRATE per il supporto migrazione live. Per tutti gli altri tipi di macchine, imposta questo valore su TERMINATE, poiché non supportano la migrazione in tempo reale.
--shielded-secure-boot Obbligatorio. Indica a Compute Engine di utilizzare il Secure Boot per l'istanza.
--image-project=confidential-space-images Obbligatorio. Indica a Compute Engine di cercare nel progetto confidential-space-images l' immagine di Confidential Space.

--image-family

Obbligatorio. Indica a Compute Engine di utilizzare l'immagine Confidential Space più recente, che fa parte del progetto confidential-space-images.

Per utilizzare un'immagine di produzione con il carico di lavoro finale che elabora dati riservati, sostituisci IMAGE_FAMILY con uno dei seguenti valori:

  • confidential-space - Per AMD SEV
  • confidential-space-preview-tdx - Per Intel TDX (anteprima)

Per utilizzare l'immagine di debug per il monitoraggio e il debug, sostituisci IMAGE_FAMILY con uno dei seguenti valori:

  • confidential-space-debug - Per AMD SEV
  • confidential-space-debug-preview-tdx - Per Intel TDX (anteprima)

La famiglia di immagini che utilizzi deve corrispondere alla tecnologia Confidential Computing selezionata.

--metadata

Obbligatorio. Modifica il comportamento della VM Confidential Space passando le variabili. La chiave e il valore tee-image-reference sono obbligatori e indicano all'istanza VM di eseguire il container Docker specificato sull'immagine Confidential Space specificata.

Per le coppie chiave/valore disponibili, consulta Voci di metadati.

--service-account Facoltativo. L'account di servizio associato all'istanza VM che esegue il carico di lavoro e simula gli account di servizio associati ai pool di identità dei carichi di lavoro in altri progetti. Se non specificato, viene utilizzato l'account di servizio Compute Engine predefinito.
--scopes=cloud-platform Obbligatorio. Imposta l' ambito di accesso. L'ambito cloud-platform è un ambito OAuth per la maggior parte dei servizi Google Cloud , e consente alla VM di comunicare con il verificatore dell'attestazione.
--zone

Obbligatorio. La zona in cui viene eseguita l'istanza VM. Confidential Space richiede i seguenti servizi, disponibili in località specifiche:

Account di servizio collegato

Per eseguire il workload, un account di servizio deve essere associato alla VM Confidential del workload. L'account di servizio deve essere configurato nel seguente modo:

  • Con i seguenti ruoli:

  • Con accesso in lettura alla posizione in cui i collaboratori dei dati archiviano i propri dati riservati, ad esempio un bucket Cloud Storage o una tabella BigQuery.

  • Con accesso in scrittura alla posizione in cui il carico di lavoro deve produrre i dati, ad esempio un bucket Cloud Storage. I collaboratori dei dati devono disporre dell'accesso in lettura a questa posizione.

Inoltre, i collaboratori dei dati e gli operatori dei carichi di lavoro devono configurare quanto segue:

  • I collaboratori dei dati devono aggiungere l'account di servizio al provider del pool di identità di Workload come condizione dell'attributo:

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • L'operatore del carico di lavoro deve disporre del ruolo roles/iam.serviceAccountUser per usurpare l'identità dell'account di servizio. In questo modo può collegarlo a una VM del carico di lavoro per eseguirlo.

Variabili dei metadati

Puoi modificare il comportamento della VM del workload Confidential Space passando variabili all'opzione --metadata quando crei la VM.

Per passare più variabili, imposta prima il delimitatore anteponendo il valore --metadata a ^~^. 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 illustra le variabili di metadati che puoi impostare per la VM del carico di lavoro.

Chiave dei metadati Tipo Descrizione e valori

tee-image-reference

Interazione con:

Stringa

Obbligatorio. Indica la posizione del contenitore del carico di lavoro.

Esempio
tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

tee-cmd

Interazione con:

Array di stringhe JSON

Esegue l'override delle istruzioni CMD specificate nel Dockerfile del container del carico di lavoro.

Esempio
tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

Interazione con:

Stringa definita

Output STDOUT e STDERR dal contenitore del carico di lavoro a Cloud Logging o alla console seriale, nel campo confidential-space-launcher.

I valori validi sono:

  • false: (valore predefinito) non viene eseguito alcun logging.
  • true: viene visualizzato nella console seriale e in Cloud Logging.
  • cloud_logging: le uscite sono solo in Cloud Logging.
  • serial: viene visualizzato solo nella console seriale.

Un volume elevato di log nella console seriale potrebbe influire sulle prestazioni del workload.

Esempio
tee-container-log-redirect=true

tee-dev-shm-size-kb

Numero intero

Imposta le dimensioni in kB del montaggio della memoria condivisa /dev/shm.

Esempio
tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

Interazione con:

Stringa

Imposta le variabili di ambiente nel contenitore del carico di lavoro. L'autore del workload deve anche aggiungere i nomi variabile di ambiente al criterio di lancio allow_env_override , altrimenti non verranno impostati.

Esempio
tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

Interazione con:

Stringa

Un elenco di account di servizio che possono essere rappresentati dall'operatore del workload. L'operatore del carico di lavoro deve essere autorizzato a simulare l'identità degli account di servizio.

È possibile elencare più account di servizio, separati da virgole.

Esempio
tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com

tee-monitoring-memory-enable

Interazione con:

Booleano

Il valore predefinito è false. Se impostato su true, attiva il monitoraggio dell'utilizzo della memoria. Le metriche raccolte dalla VM con accesso riservato sono di tipo guest/memory/bytes_used e possono essere visualizzate in Cloud Logging o Metrics Explorer.

Esempio
tee-monitoring-memory-enable=true

tee-mount

Interazione con:

Stringa

Un elenco di definizioni di montaggio separate da punto e virgola. Una definizione di montaggio è costituita da un elenco di coppie chiave/valore separate da virgola, che richiedono type, source e destination. destination deve essere un percorso assoluto e type/source deve essere tmpfs.

Esempio
type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-restart-policy

Interazione con:

Stringa definita

Il criterio di riavvio del programma di avvio del container quando il workload si interrompe

I valori validi sono:

  • Never (valore predefinito)
  • Always
  • OnFailure

Questa variabile è supportata solo dall'immagine di produzione di Confidential Space.

Esempio
tee-restart-policy=OnFailure

tee-signed-image-repos

Interazione con:

Stringa

Un elenco di repository di contenitori separati da virgole che memorizzano le firme generate da Sigstore Cosign.

Esempio
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

Scalabilità

Per la scalabilità e l'alta disponibilità dei workload di produzione di Confidential Space, consulta Gruppi di istanze gestite.