Esegui il deployment dei carichi di lavoro


Un operatore del workload può passare opzioni a una VM del 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:

Ecco un esempio che crea una Confidential VM nella zona us-west1-b in base all'ultima immagine di produzione di Confidential Space ed esegue un container 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.

Flag Descrizione
--confidential-compute-type

Obbligatorio. Indica a Compute Engine quale tecnologia Confidential Computing utilizzare durante la creazione di un'istanza Confidential VM.

Sostituisci CONFIDENTIAL_COMPUTING_TECHNOLOGY con uno dei seguenti valori:

  • SEV
  • TDX

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

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

--image-family

Obbligatorio. Indica a Compute Engine di utilizzare l'ultima immagine Confidential Space, 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 confidential-space.

Per utilizzare l'immagine di debug per il monitoraggio e il debug, sostituisci IMAGE_FAMILY con confidential-space-debug.

La famiglia di immagini che utilizzi deve corrispondere alla tecnologia di confidential computing che selezioni.

--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 sopra l'immagine Confidential Space specificata.

Per le coppie chiave/valore disponibili, vedi Variabili dei metadati.

--service-account Facoltativo. Il service account collegato all'istanza VM che esegue il workload e simula i service account collegati ai pool di identità dei carichi di lavoro in altri progetti. Se non specificato, viene utilizzato il 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 Google Cloud dei servizi 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 collegato alla VM confidenziale di un workload. Il 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 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:

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

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • L'operatore del workload necessita del ruolo roles/iam.serviceAccountUser per impersonare ilaccount di serviziot. In questo modo, possono collegarlo a una 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 workload.

Chiave dei metadati Tipo Descrizione e valori

tee-image-reference

Interazione con:

Stringa

Obbligatorio. Indica la posizione del container del workload.

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

tee-added-capabilities

Interazione con:

Array di stringhe JSON

Aggiunge funzionalità Linux aggiuntive al container del workload.

Esempio
tee-added-capabilities="[\"CAP_SYS_ADMIN\", \"CAP_SYS_CHROOT\"]"

tee-cgroup-ns

Interazione con:

Booleano

Il valore predefinito è false. Se impostato su true, consente il montaggio di un cgroup con spazio dei nomi in /sys/fs/cgroup.

Esempio
tee-cgroup-ns=true

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 container del workload a Cloud Logging o alla console seriale, nel campo confidential-space-launcher.

I valori validi sono:

  • false: (predefinito) non viene eseguito alcun logging.
  • true: output nella console seriale e Cloud Logging.
  • cloud_logging: output solo in Cloud Logging.
  • serial: output solo sulla 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 punto di 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 container del workload. L'autore del workload deve anche aggiungere i nomi variabile di ambiente alle norme di avvio allow_env_override , altrimenti non verranno impostate.

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 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
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 Confidential VM 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 virgole, 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

La policy di riavvio del launcher del container quando il workload si arresta

I valori validi sono:

  • Never (valore predefinito)
  • Always
  • OnFailure

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

Esempio
tee-restart-policy=OnFailure

tee-signed-image-repos

Interazione con:

Stringa

Un elenco di repository di container separati da virgole che archiviano 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 lo scaling e l'alta disponibilità dei workload di produzione di Confidential Space, consulta Gruppi di istanze gestite.