Un opérateur de charge de travail peut transmettre des options à une instance de VM de charge de travail Confidential Space pour déterminer son comportement avant son exécution. Bien que certaines options aient des valeurs requises qui ne changent pas, vous devez toujours faire les choix suivants :
Indique si l'instance de VM doit être basée sur une image Confidential Space de production ou de débogage.
Indiquez si vous souhaitez utiliser AMD SEV, Intel TDX ou Intel TDX avec NVIDIA Confidential Computing (version preview) pour protéger la confidentialité des données de vos charges de travail.
Les variables de métadonnées de VM à transmettre, qui incluent des détails tels que l'image de conteneur de charge de travail à exécuter, si la journalisation doit être effectuée dans Cloud Logging et les variables d'environnement à définir.
Le compte de service à associer à la VM pour exécuter la charge de travail, ainsi que les autorisations dont il a besoin pour accéder aux données confidentielles dans d'autres projets et écrire les résultats quelque part.
Zone dans laquelle l'instance de VM doit s'exécuter.
Voici un exemple qui crée une Confidential VM et exécute un conteneur Docker appelé WORKLOAD_CONTAINER_NAME :
Charges de travail basées sur le processeur
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
Indiquez les valeurs suivantes :
INSTANCE_NAME
: nom de la nouvelle instance de VM.CONFIDENTIAL_COMPUTING_TECHNOLOGY
: type de technologie d'informatique confidentielle à utiliser. Choisissez l'une des valeurs suivantes :SEV
TDX
MACHINE_TYPE_NAME
: type de machine de la VM, par exemplen2d-standard-2
. Les types de machines valides pour les instances de Confidential VM sont déterminés par la technologie d'informatique confidentielle que vous avez choisie : AMD SEV ou Intel TDX. Consultez Types de machines, processeurs et zones.MAINTENANCE_POLICY
: pour les types de machines N2D qui utilisent SEV, définissez cette valeur surMIGRATE
pour la prise en charge de la migration à chaud. Pour tous les autres types de machines, définissez cette valeur surTERMINATE
, car elles ne sont pas compatibles avec la migration à chaud.IMAGE_FAMILY_NAME
: famille des images Confidential Space. Choisissez l'une des options suivantes :confidential-space
pour les charges de travail de productionconfidential-space-debug
pour les charges de travail de débogage
WORKLOAD_AUTHOR_PROJECT
: ID du projet qui héberge le dépôt Artifact Registry dans lequel le conteneur de charge de travail est stocké.REPOSITORY_NAME
: nom du dépôt Artifact Registry dans lequel le conteneur de charge de travail est stocké.WORKLOAD_CONTAINER_NAME
: nom du conteneur de charge de travail.WORKLOAD_SERVICE_ACCOUNT_NAME
: nom du compte de service qui exécute la charge de travail.WORKLOAD_OPERATOR_PROJECT_ID
: ID du projet qui exécute la charge de travail.ZONE_NAME
: zone dans laquelle l'instance de VM s'exécute, par exemple,us-west1-b
. Confidential Space nécessite les services suivants, qui sont disponibles dans des emplacements spécifiques :Confidential VM, en fonction de la technologie d'informatique confidentielle utilisée
PROJECT_ID
: facultatif. ID du projet dans lequel créer l'instance de VM.
Charges de travail basées sur GPU
Avant de commencer
Confidential Space n'est compatible qu'avec NVIDIA Confidential Computing (Preview) sur les GPU H100.
Pour vous assurer que vous disposez d'un quota de GPU suffisant pour les ressources que vous demandez, vérifiez votre quota de GPU. Pour les instances de VM confidentielles avec GPU, demandez un quota de GPU préemptifs pour utiliser les ressources. Lorsque vous demandez un quota de GPU, vous devez inclure les modèles de GPU que vous souhaitez créer dans chaque région, mais également demander un quota mondial supplémentaire (
GPUs (all regions)
) pour le nombre total de GPU de tous types, dans toutes les régions.Pour comprendre la consommation de quotas, consultez VM GPU et quotas d'allocation préemptive.
Consultez les limites pour créer une demande de redimensionnement dans un MIG.
Pour installer les pilotes requis pour le Confidential Computing NVIDIA (Preview), vous devez transmettre la variable de métadonnées
tee-install-gpu-driver
avec la valeurtrue
.Pour les pilotes NVIDIA et CUDA Toolkit, un disque de démarrage de VM avec 30 Go d'espace ou plus est recommandé.
Déployer une charge de travail basée sur GPU
Pour déployer une charge de travail basée sur un GPU, vous devez créer une instance Confidential VM à l'aide du modèle de provisionnement spot ou flex-start (aperçu).
Spot
Pour utiliser le modèle de provisionnement Spot, créez une instance de VM optimisée pour les accélérateurs.
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
Indiquez les valeurs suivantes :
INSTANCE_NAME
: nom de la nouvelle instance de VM.IMAGE_FAMILY_NAME
: famille des images Confidential Space. Choisissez l'une des options suivantes :confidential-space-preview-cgpu
pour les charges de travail de productionconfidential-space-debug-preview-cgpu
pour les charges de travail de débogage
WORKLOAD_AUTHOR_PROJECT
: ID du projet dans lequel la charge de travail est exécutée.REPOSITORY_NAME
: nom du dépôt Artifact Registry.WORKLOAD_CONTAINER_NAME
: nom du conteneur de charge de travail.WORKLOAD_SERVICE_ACCOUNT_NAME
: nom du compte de service qui exécute la charge de travail.WORKLOAD_OPERATOR_PROJECT_ID
: ID du projet qui exécute la charge de travail.ZONE_NAME
: l'une des zones compatibles avec le Confidential Computing NVIDIA (version bêta).PROJECT_ID
: facultatif. ID du projet dans lequel créer l'instance de VM.
Démarrage Flex
Pour utiliser le modèle de provisionnement Démarrage flexible (aperçu), créez un modèle d'instance, puis un groupe d'instances géré (MIG).
Créez un modèle d'instance :
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
Indiquez les valeurs suivantes :
INSTANCE_TEMPLATE_NAME
: nom du nouveau modèle d'instance de VM.IMAGE_FAMILY_NAME
: famille des images Confidential Space. Choisissez l'une des options suivantes :confidential-space-preview-cgpu
pour les charges de travail de productionconfidential-space-debug-preview-cgpu
pour les charges de travail de débogage
WORKLOAD_AUTHOR_PROJECT
: ID du projet dans lequel la charge de travail est exécutée.REPOSITORY_NAME
: nom du dépôt Artifact Registry.WORKLOAD_CONTAINER_NAME
: nom du conteneur de charge de travail.WORKLOAD_SERVICE_ACCOUNT_NAME
: nom du compte de service qui exécute la charge de travail.WORKLOAD_OPERATOR_PROJECT_ID
: ID du projet qui exécute la charge de travail.RUN_DURATION
: durée d'exécution des instances de VM demandées. Vous devez formater la valeur en nombre de jours, d'heures, de minutes ou de secondes, suivis respectivement ded
,h
,m
ous
. Par exemple, spécifiez30m
pour 30 minutes ou1d2h3m4s
pour un jour, deux heures, trois minutes et quatre secondes. Cette valeur doit être comprise entre 10 minutes et sept jours.PROJECT_ID
: facultatif. ID du projet dans lequel créer les instances de VM.
Créez un MIG zonal à l'aide de la commande
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
Indiquez les valeurs suivantes :
INSTANCE_GROUP_NAME
: nom du MIG.INSTANCE_TEMPLATE_NAME
: nom du modèle d'instance pour les VM avec GPU.ZONE_NAME
: l'une des zones compatibles avec le Confidential Computing NVIDIA (version bêta).
Dans le MIG, créez une demande de redimensionnement. Spécifiez le nombre d'instances de VM avec GPU souhaité et la durée d'exécution de ces instances.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
Indiquez les valeurs suivantes :
INSTANCE_GROUP_NAME
: nom du MIG.INSTANCE_TEMPLATE_NAME
: nom du modèle d'instance pour les instances de VM avec GPU.ZONE_NAME
: l'une des zones compatibles avec le Confidential Computing NVIDIA (version bêta).RESIZE_REQUEST_NAME
: nom de la requête de redimensionnement.COUNT
: nombre d'instances de VM à ajouter simultanément dans le groupe.
La requête de redimensionnement que vous créez reste à l'état
ACCEPTED
jusqu'à ce que le MIG crée toutes les instances de VM avec GPU demandées. Une fois toutes les instances de VM avec GPU créées dans le groupe, l'état de la requête passe àSUCCEEDED
.Lorsque suffisamment de ressources sont disponibles pour la demande de redimensionnement, des instances de VM sont ajoutées au MIG et lancées pour exécuter votre charge de travail. Pour lister les instances présentes dans le MIG, exécutez la commande suivante :
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
Indiquez les valeurs suivantes :
INSTANCE_GROUP_NAME
: nom du MIG.ZONE_NAME
: zone compatible à partir de laquelle obtenir la liste des instances de VM.PROJECT_ID
: facultatif. ID du projet à partir duquel obtenir la liste des instances de VM.
Compte de service associé
Un compte de service doit être associé à une VM confidentielle de charge de travail pour exécuter la charge de travail. Le compte de service doit être configuré comme suit :
Avec les rôles suivants :
roles/confidentialcomputing.workloadUser
pour générer un jeton d'attestation.roles/artifactregistry.reader
pour récupérer une image de conteneur de charge de travail stockée dans Artifact Registry.roles/logging.logWriter
si vous souhaitez redirigerSTDOUT
etSTDERR
vers Cloud Logging.
Avec un accès en lecture à l'emplacement où les collaborateurs de données stockent leurs données confidentielles (par exemple, un bucket Cloud Storage ou une table BigQuery).
Un accès en écriture à l'emplacement où la charge de travail doit générer les données (par exemple, un bucket Cloud Storage). Les collaborateurs de données doivent disposer d'un accès en lecture à cet emplacement.
De plus, les collaborateurs de données et les opérateurs de charge de travail doivent configurer les éléments suivants :
Si les collaborateurs de données utilisent l'emprunt d'identité de compte de service au lieu de l'accès direct aux ressources, ils doivent ajouter le compte de service à leur fournisseur de pool d'identités de charge de travail en tant que condition d'attribut :
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
L'opérateur de charge de travail a besoin du rôle
roles/iam.serviceAccountUser
pour emprunter l'identité du compte de service. Cela leur permet de l'associer à une instance de VM de charge de travail afin qu'elle puisse exécuter la charge de travail.
Variables de métadonnées
Vous pouvez modifier le comportement de la VM de charge de travail Confidential Space en transmettant des variables à l'option --metadata
lorsque vous créez la VM.
Pour transmettre plusieurs variables, commencez par définir le délimiteur en préfixant la valeur --metadata
avec ^~^
. Cela définit le délimiteur sur ~
, car ,
est utilisé dans les valeurs de variables.
Exemple :
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
Le tableau suivant détaille les variables de métadonnées que vous pouvez définir pour la VM de votre charge de travail.
Clé de métadonnée | Type | Description et valeurs |
---|---|---|
Interagit avec :
|
Chaîne |
Obligatoire. Cette valeur pointe vers l'emplacement du conteneur de la charge de travail. Exemple
|
Interagit avec :
|
Tableau de chaînes JSON |
Ajoute des capacités Linux supplémentaires au conteneur de charge de travail. Exemple
|
Interagit avec :
|
Booléen |
La valeur par défaut est Exemple
|
Interagit avec :
|
Tableau de chaînes JSON |
Remplace les instructions CMD spécifiées dans le Exemple
|
Interagit avec :
|
Chaîne définie |
affiche Les valeurs valides sont les suivantes :
Un volume de journaux élevé dans la console série peut avoir un impact sur les performances de la charge de travail. Exemple
|
|
Integer |
Définit la taille en Ko du point de montage de la mémoire partagée Exemple
|
Interagit avec :
|
Chaîne |
Définit les variables d'environnement dans le conteneur de charge de travail. L'auteur de la charge de travail doit également ajouter les noms des variables d'environnement aux règles de lancement
Exemple
|
Interagit avec :
|
Chaîne |
Liste des comptes de service dont l'identité peut être empruntée par l'opérateur de charge de travail. L'opérateur de charge de travail doit être autorisé à emprunter l'identité des comptes de service. Plusieurs comptes de service peuvent être répertoriés, séparés par une virgule. Exemple
|
Interagit avec :
|
Booléen |
Indique si le pilote de GPU NVIDIA pour le Confidential Computing doit être installé. Nécessite un type de machine compatible avec l'informatique confidentielle NVIDIA (aperçu). Exemple
|
Interagit avec :
|
Booléen |
La valeur par défaut est Exemple
|
Interagit avec :
|
Chaîne |
Liste des définitions de montage séparées par un point-virgule. Une définition de montage se compose d'une liste de paires clé/valeur séparées par une virgule, nécessitant Exemple
|
Interagit avec :
|
Chaîne définie |
Règle de redémarrage du lanceur de conteneurs lorsque la charge de travail s'arrête Les valeurs valides sont les suivantes :
Cette variable n'est compatible qu'avec l'image de production Confidential Space. Exemple
|
Interagit avec :
|
Chaîne |
Liste de dépôts de conteneurs séparés par une virgule qui stockent les signatures générées par Sigstore Cosign. Exemple
|
Scaling
Pour le scaling et la haute disponibilité des charges de travail Confidential Space de production, consultez Groupes d'instances gérés.