Ein Arbeitslastoperator kann Optionen an eine Confidential Space-Arbeitslast-VM-Instanz übergeben, um ihr Verhalten vor der Ausführung zu bestimmen. Einige Flags haben erforderliche Werte, die sich nicht ändern. Sie müssen jedoch die folgenden Entscheidungen treffen:
Ob die VM-Instanz auf einem Confidential Space-Produktions- oder ‑Debugging-Image basieren soll.
Ob Sie AMD SEV, Intel TDX oder Intel TDX mit NVIDIA Confidential Computing (Vorabversion) verwenden möchten, um die Daten Ihrer Arbeitslast vertraulich zu halten.
Welche VM-Metadatavariablen übergeben werden müssen, einschließlich Details wie das auszuführende Container-Image für die Arbeitslast, ob in Cloud Logging protokolliert werden soll und welche Umgebungsvariablen festgelegt werden sollen.
Welches Dienstkonto an die VM angehängt werden soll, um die Arbeitslast auszuführen, und welche Berechtigungen es benötigt, um auf vertrauliche Daten in anderen Projekten zuzugreifen und die Ergebnisse zu schreiben.
Die Zone, in der die VM-Instanz ausgeführt werden soll.
Im folgenden Beispiel wird eine Confidential VM erstellt und ein Docker-Container mit dem Namen WORKLOAD_CONTAINER_NAME ausgeführt:
CPU-basierte Arbeitslasten
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
Geben Sie folgende Werte an:
INSTANCE_NAME
: Der Name der neuen VM-Instanz.CONFIDENTIAL_COMPUTING_TECHNOLOGY
: Der Typ der zu verwendenden Confidential Computing-Technologie. Wählen Sie einen der folgenden Werte aus:SEV
TDX
MACHINE_TYPE_NAME
: Der Maschinentyp der VM, z. B.n2d-standard-2
. Gültige Maschinentypen für Confidential VM-Instanzen werden durch die von Ihnen ausgewählte Confidential Computing-Technologie bestimmt, entweder AMD SEV oder Intel TDX. Weitere Informationen finden Sie unter Maschinentypen, CPUs und Zonen.MAINTENANCE_POLICY
: Legen Sie für N2D-Maschinentypen, die SEV verwenden, diesen Wert aufMIGRATE
fest, um die Live-Migration zu unterstützen. Legen Sie für alle anderen Maschinentypen diesen Wert aufTERMINATE
fest, da sie keine Live-Migration unterstützen.IMAGE_FAMILY_NAME
: Die Familie für die Confidential Space-Images. Wählen Sie eine der folgenden Optionen aus:confidential-space
für Produktionsarbeitslastenconfidential-space-debug
für Debugging-Arbeitslasten
WORKLOAD_AUTHOR_PROJECT
: Die ID des Projekts, in dem sich das Artifact Registry-Repository befindet, in dem der Workload-Container gespeichert ist.REPOSITORY_NAME
: Der Name des Artifact Registry-Repositorys, in dem der Arbeitslastcontainer gespeichert ist.WORKLOAD_CONTAINER_NAME
: Der Name des Arbeitslastcontainers.WORKLOAD_SERVICE_ACCOUNT_NAME
: Der Name des Dienstkontos, mit dem die Arbeitslast ausgeführt wird.WORKLOAD_OPERATOR_PROJECT_ID
: Die ID des Projekts, in dem der Workload ausgeführt wird.ZONE_NAME
: Die Zone, in der die VM-Instanz ausgeführt wird, z. B.us-west1-b
. Für Confidential Space sind die folgenden Dienste erforderlich, die an bestimmten Standorten verfügbar sind:Confidential VM, basierend auf der verwendeten Confidential Computing-Technologie
PROJECT_ID
: Optional. Die ID des Projekts, in dem die VM-Instanz erstellt werden soll.
GPU-basierte Arbeitslasten
Hinweise
Confidential Space unterstützt NVIDIA Confidential Computing (Vorschau) nur auf H100-GPUs.
Prüfen Sie Ihr GPU-Kontingent, damit Ihr Kontingent für die angeforderten Ressourcen ausreicht. Für Confidential VM-Instanzen mit GPUs müssen Sie ein GPU-Kontingent auf Abruf anfordern, um die Ressourcen verwenden zu können. Wenn Sie ein GPU-Kontingent anfordern, müssen Sie ein Kontingent für die GPU-Modelle, die Sie in den einzelnen Regionen erstellen möchten, sowie ein zusätzliches globales Kontingent (
GPUs (all regions)
) für die Gesamtzahl der GPUs aller Typen in allen Regionen anfordern.Informationen zum Kontingentverbrauch finden Sie unter GPU-VMs und Zuteilungskontingente auf Abruf.
Beschränkungen beim Erstellen einer Anfrage zur Größenänderung in einer MIG
Wenn Sie die für NVIDIA Confidential Computing (Vorabversion) erforderlichen Treiber installieren möchten, müssen Sie die Metadatavariable
tee-install-gpu-driver
mit dem Werttrue
übergeben.Für NVIDIA-Treiber und das CUDA-Toolkit wird ein VM-Bootlaufwerk mit mindestens 30 GB Speicherplatz empfohlen.
GPU-basierte Arbeitslast bereitstellen
Wenn Sie eine GPU-basierte Arbeitslast bereitstellen möchten, müssen Sie eine Confidential VM-Instanz mit dem Bereitstellungsmodell Spot oder Flex-Start (Vorschau) erstellen.
Spot
Wenn Sie das Spot-Bereitstellungsmodell verwenden möchten, erstellen Sie eine beschleunigungsoptimierte VM-Instanz.
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
Geben Sie folgende Werte an:
INSTANCE_NAME
: Der Name der neuen VM-Instanz.IMAGE_FAMILY_NAME
: Die Familie für die Confidential Space-Images. Wählen Sie eine der folgenden Optionen aus:confidential-space-preview-cgpu
für Produktionsarbeitslastenconfidential-space-debug-preview-cgpu
für Debugging-Arbeitslasten
WORKLOAD_AUTHOR_PROJECT
: Die Projekt-ID, in der der Arbeitslast ausgeführt wird.REPOSITORY_NAME
: Der Name des Artifact Registry-Repositorys.WORKLOAD_CONTAINER_NAME
: Der Name des Arbeitslastcontainers.WORKLOAD_SERVICE_ACCOUNT_NAME
: Der Name des Dienstkontos, mit dem die Arbeitslast ausgeführt wird.WORKLOAD_OPERATOR_PROJECT_ID
: Die ID des Projekts, in dem der Workload ausgeführt wird.ZONE_NAME
: Eine der Zonen, die NVIDIA Confidential Computing unterstützen (Vorschau).PROJECT_ID
: Optional. Die ID des Projekts, in dem die VM-Instanz erstellt werden soll.
Flex-Start
Wenn Sie das Bereitstellungsmodell „Flex-Start“ (Vorabversion) verwenden möchten, erstellen Sie zuerst eine Instanzvorlage und dann eine verwaltete Instanzgruppe (MIG).
Instanzvorlage erstellen:
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
Geben Sie folgende Werte an:
INSTANCE_TEMPLATE_NAME
: Der Name der neuen VM-Instanzvorlage.IMAGE_FAMILY_NAME
: Die Familie für die Confidential Space-Images. Wählen Sie eine der folgenden Optionen aus:confidential-space-preview-cgpu
für Produktionsarbeitslastenconfidential-space-debug-preview-cgpu
für Debugging-Arbeitslasten
WORKLOAD_AUTHOR_PROJECT
: Die Projekt-ID, in der die Arbeitslast ausgeführt wird.REPOSITORY_NAME
: Der Name des Artifact Registry-Repositorys.WORKLOAD_CONTAINER_NAME
: Der Name des Arbeitslastcontainers.WORKLOAD_SERVICE_ACCOUNT_NAME
: Der Name des Dienstkontos, mit dem die Arbeitslast ausgeführt wird.WORKLOAD_OPERATOR_PROJECT_ID
: Die ID des Projekts, in dem die Arbeitslast ausgeführt wird.RUN_DURATION
: die Dauer, für die die angeforderten VM-Instanzen ausgeführt werden sollen. Sie müssen den Wert als Anzahl von Tagen, Stunden, Minuten oder Sekunden gefolgt vond
,h
,m
bzw.s
formatieren. Geben Sie beispielsweise30m
für 30 Minuten oder1d2h3m4s
für einen Tag, zwei Stunden, drei Minuten und vier Sekunden an. Der Wert muss zwischen 10 Minuten und 7 Tagen liegen.PROJECT_ID
: Optional. Die ID des Projekts, in dem die VM-Instanzen erstellt werden sollen.
Erstellen Sie mit dem Befehl
instance-groups managed create
eine zonale MIG: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
Geben Sie folgende Werte an:
INSTANCE_GROUP_NAME
: Name der MIG.INSTANCE_TEMPLATE_NAME
: Der Name der Instanzvorlage für GPU-VMs.ZONE_NAME
: Eine der Zonen, die NVIDIA Confidential Computing unterstützen (Vorschau).
Erstellen Sie in der MIG eine Anfrage zur Größenanpassung. Geben Sie die Anzahl der gewünschten GPU-VM-Instanzen und die Dauer an, für die diese VM-Instanzen ausgeführt werden sollen.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
Geben Sie folgende Werte an:
INSTANCE_GROUP_NAME
: Name der MIG.INSTANCE_TEMPLATE_NAME
: Der Name der Instanzvorlage für GPU-VM-Instanzen.ZONE_NAME
: Eine der Zonen, die NVIDIA Confidential Computing unterstützen (Vorschau).RESIZE_REQUEST_NAME
: Der Name der Anfrage zur Größenänderung.COUNT
: Die Anzahl der VM-Instanzen, die alle gleichzeitig in der Gruppe hinzugefügt werden sollen.
Die von Ihnen erstellte Anfrage zur Größenanpassung bleibt im Status
ACCEPTED
, bis die MIG alle angeforderten GPU-VM-Instanzen erstellt hat. Nachdem alle GPU-VM-Instanzen in der Gruppe erstellt wurden, ändert sich der Status der Anfrage zuSUCCEEDED
.Wenn genügend Ressourcen für die Anfrage zur Größenänderung verfügbar sind, werden der MIG VM-Instanzen hinzugefügt und gestartet, um Ihre Arbeitslast auszuführen. Führen Sie den folgenden Befehl aus, um die Instanzen in der MIG aufzulisten:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
Geben Sie folgende Werte an:
INSTANCE_GROUP_NAME
: Name der MIG.ZONE_NAME
: Die unterstützte Zone, aus der eine Liste von VM-Instanzen abgerufen werden soll.PROJECT_ID
: Optional. Die ID des Projekts, aus dem eine Liste von VM-Instanzen abgerufen werden soll.
Angehängtes Dienstkonto
Ein Dienstkonto muss an die Confidential VM einer Arbeitslast angehängt werden, damit die Arbeitslast ausgeführt werden kann. Das Dienstkonto muss so eingerichtet sein:
Mit den folgenden Rollen:
roles/confidentialcomputing.workloadUser
, um ein Attestierungstoken zu generieren.roles/artifactregistry.reader
, um ein in Artifact Registry gespeichertes Container-Image für eine Arbeitslast abzurufen.roles/logging.logWriter
, wenn SieSTDOUT
undSTDERR
an Cloud Logging weiterleiten möchten.
Mit Lesezugriff auf den Speicherort, an dem die Datenmitwirkenden ihre vertraulichen Daten speichern, z. B. ein Cloud Storage-Bucket oder eine BigQuery-Tabelle.
Schreibzugriff auf den Ort, an dem die Arbeitslast die Daten ausgeben soll, z. B. ein Cloud Storage-Bucket. Mitbearbeiter von Daten sollten Lesezugriff auf diesen Speicherort haben.
Außerdem müssen Datenmitbearbeiter und Arbeitslastbetreiber Folgendes einrichten:
Wenn Datenmitarbeiter die Identität des Dienstkontos anstelle des direkten Ressourcenzugriffs übernehmen, müssen sie das Dienstkonto ihrem Anbieter für den Workload Identity-Pool als Attributbedingung hinzufügen:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
Der Arbeitslastoperator benötigt die Rolle
roles/iam.serviceAccountUser
, um die Identität des Dienstkontos übernehmen zu können. So können sie sie an eine Arbeitslast-VM-Instanz anhängen, damit die Arbeitslast ausgeführt werden kann.
Metadatavariablen
Sie können das Verhalten der Confidential Space-Arbeitslast-VM ändern, indem Sie beim Erstellen der VM Variablen an die Option --metadata
übergeben.
Wenn Sie mehrere Variablen übergeben möchten, legen Sie zuerst das Trennzeichen fest, indem Sie dem --metadata
-Wert ^~^
voranstellen. Dadurch wird das Trennzeichen auf ~
festgelegt, da ,
in Variablenwerten verwendet wird.
Beispiel:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
In der folgenden Tabelle sind die Metadatavariablen aufgeführt, die Sie für Ihre Arbeitslast-VM festlegen können.
Metadatenschlüssel | Typ | Beschreibung und Werte |
---|---|---|
Interagiert mit:
|
String |
Pflichtangabe. Dies verweist auf den Speicherort des Arbeitslast-Containers. Beispiel
|
Interagiert mit:
|
JSON-String-Array |
Fügt dem Arbeitslastcontainer zusätzliche Linux-Berechtigungen hinzu. Beispiel
|
Interagiert mit:
|
Boolesch |
Die Standardeinstellung ist Beispiel
|
Interagiert mit:
|
JSON-String-Array |
Überschreibt die CMD-Anweisungen, die im Beispiel
|
Interagiert mit:
|
Definierter String |
Gibt Die gültigen Werte sind:
Ein hohes Logvolumen in der seriellen Konsole kann sich auf die Leistung der Arbeitslast auswirken. Beispiel
|
|
Ganzzahl |
Legt die Größe der Bereitstellung des gemeinsamen Arbeitsspeichers Beispiel
|
Interagiert mit:
|
String |
Legt Umgebungsvariablen im Arbeitslastcontainer fest. Der Autor der Arbeitslast muss die Namen der Umgebungsvariablen auch der
Beispiel
|
Interagiert mit:
|
String |
Eine Liste der Dienstkonten, deren Identität vom Arbeitslastoperator übernommen werden kann. Der Arbeitslastoperator muss die Identität der Dienstkonten übernehmen dürfen. Es können mehrere Dienstkonten durch Kommas getrennt aufgeführt werden. Beispiel
|
Interagiert mit:
|
Boolesch |
Gibt an, ob der GPU-Treiber für Confidential Computing von NVIDIA installiert werden soll. Erfordert einen Maschinentyp, der NVIDIA Confidential Computing unterstützt (Vorschau). Beispiel
|
Interagiert mit:
|
Boolesch |
Die Standardeinstellung ist Beispiel
|
Interagiert mit:
|
String |
Eine Liste von durch Semikolons getrennten Mount-Definitionen. Eine Mount-Definition besteht aus einer durch Kommas getrennten Liste von Schlüssel/Wert-Paaren, für die Beispiel
|
Interagiert mit:
|
Definierter String |
Die Neustart-Richtlinie des Container-Launchers, wenn die Arbeitslast beendet wird. Die gültigen Werte sind:
Diese Variable wird nur vom Confidential Space-Produktions-Image unterstützt. Beispiel
|
Interagiert mit:
|
String |
Eine Liste durch Kommas getrennter Container-Repositories, in denen die von Sigstore Cosign generierten Signaturen gespeichert werden. Beispiel
|
Skalierung
Informationen zur Skalierung und Hochverfügbarkeit von Confidential Space-Arbeitslasten in der Produktion finden Sie unter Verwaltete Instanzgruppen.