Un operador de carga de trabajo puede transferir opciones a una instancia de VM de carga de trabajo de Confidential Space para determinar su comportamiento antes de que se ejecute. Aunque algunas marcas tienen valores obligatorios que no cambian, debes tomar las siguientes decisiones:
Indica si la instancia de VM se basa en una imagen de Confidential Space de producción o de depuración.
Si quieres usar AMD SEV, Intel TDX o Intel TDX con NVIDIA Confidential Computing (vista previa) para mantener la privacidad de los datos de tu carga de trabajo.
Qué variables de metadatos de VM se deben transferir, lo que incluye detalles como qué imagen de contenedor de carga de trabajo se debe ejecutar, si se deben registrar en Cloud Logging y qué variables de entorno se deben definir.
Qué cuenta de servicio se debe asociar a la VM para ejecutar la carga de trabajo y qué permisos necesita para acceder a datos confidenciales de otros proyectos y escribir los resultados en algún lugar.
La zona en la que debe ejecutarse la instancia de VM.
A continuación, se muestra un ejemplo que crea una VM confidencial y ejecuta un contenedor Docker llamado WORKLOAD_CONTAINER_NAME:
Cargas de trabajo basadas en 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
Proporciona los siguientes valores:
INSTANCE_NAME
: nombre de la nueva instancia de VM.CONFIDENTIAL_COMPUTING_TECHNOLOGY
: El tipo de tecnología de computación confidencial que se va a usar. Elige uno de los valores que se indican a continuación.SEV
TDX
MACHINE_TYPE_NAME
: el tipo de máquina virtual. Por ejemplo,n2d-standard-2
. Los tipos de máquina válidos para las instancias de máquinas virtuales confidenciales se determinan en función de la tecnología de computación confidencial que hayas elegido: AMD SEV o Intel TDX. Consulta Tipos de máquinas, CPUs y zonas.MAINTENANCE_POLICY
: en los tipos de máquinas N2D que usan SEV, defina este valor comoMIGRATE
para admitir la migración en directo. En el resto de los tipos de máquina, asigna el valorTERMINATE
, ya que no admiten la migración en directo.IMAGE_FAMILY_NAME
: la familia de las imágenes de Confidential Space. Elige una de estas opciones:confidential-space
para cargas de trabajo de producciónconfidential-space-debug
para cargas de trabajo de depuración
WORKLOAD_AUTHOR_PROJECT
: el ID del proyecto que aloja el repositorio de Artifact Registry en el que se almacena el contenedor de carga de trabajo.REPOSITORY_NAME
: el nombre del repositorio de Artifact Registry en el que se almacena el contenedor de carga de trabajo.WORKLOAD_CONTAINER_NAME
: nombre del contenedor de la carga de trabajo.WORKLOAD_SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio que ejecuta la carga de trabajo.WORKLOAD_OPERATOR_PROJECT_ID
: el ID del proyecto que ejecuta la carga de trabajo.ZONE_NAME
: la zona en la que se ejecuta la instancia de VM. Por ejemplo,us-west1-b
. Confidential Space requiere los siguientes servicios, que están disponibles en ubicaciones específicas:Máquina virtual confidencial, basada en la tecnología Confidential Computing en uso
PROJECT_ID
: opcional. El ID del proyecto en el que se va a crear la instancia de VM.
Cargas de trabajo basadas en GPU
Antes de empezar
Confidential Space solo admite Confidential Computing de NVIDIA (vista previa) en GPUs H100.
Para asegurarte de que tienes suficiente cuota de GPU para los recursos que solicitas, consulta tu cuota de GPU. En el caso de las instancias de VM confidenciales con GPUs, solicita cuota de GPU interrumpible para usar los recursos. Cuando solicites cuota de GPUs, debes pedir cuota para los modelos de GPU que quieras crear en cada región y una cuota global adicional (
GPUs (all regions)
) para el número total de GPUs de todos los tipos en todas las regiones.Para saber cómo se consume la cuota, consulta Cuotas de asignación de VMs con GPU y VMs interrumpibles.
Consulta las limitaciones para crear una solicitud de cambio de tamaño en un MIG.
Para instalar los controladores necesarios para NVIDIA Confidential Computing (vista previa), debes pasar la variable de metadatos
tee-install-gpu-driver
con el valortrue
.Para los controladores de NVIDIA y el kit de herramientas de CUDA, se recomienda un disco de arranque de VM con 30 GB o más de espacio.
Desplegar una carga de trabajo basada en GPU
Para desplegar una carga de trabajo basada en GPU, debes crear una instancia de VM confidencial con el modelo de aprovisionamiento spot o flex-start (vista previa).
Spot
Para usar el modelo de aprovisionamiento de instancias de Spot, crea una instancia de VM optimizada para aceleradores.
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
Proporciona los siguientes valores:
INSTANCE_NAME
: nombre de la nueva instancia de VM.IMAGE_FAMILY_NAME
: la familia de las imágenes de Confidential Space. Elige una de estas opciones:confidential-space-preview-cgpu
para cargas de trabajo de producciónconfidential-space-debug-preview-cgpu
para cargas de trabajo de depuración
WORKLOAD_AUTHOR_PROJECT
: el ID del proyecto en el que se ejecuta la carga de trabajo.REPOSITORY_NAME
: nombre del repositorio de Artifact Registry.WORKLOAD_CONTAINER_NAME
: nombre del contenedor de la carga de trabajo.WORKLOAD_SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio que ejecuta la carga de trabajo.WORKLOAD_OPERATOR_PROJECT_ID
: el ID del proyecto que ejecuta la carga de trabajo.ZONE_NAME
: una de las zonas que admiten Confidential Computing de NVIDIA (versión preliminar).PROJECT_ID
: opcional. El ID del proyecto en el que se va a crear la instancia de VM.
Inicio flexible
Para usar el modelo de aprovisionamiento de inicio flexible (Vista previa), crea una plantilla de instancia y, a continuación, un grupo de instancias gestionadas (MIG).
Crea una plantilla de instancia:
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
Proporciona los siguientes valores:
INSTANCE_TEMPLATE_NAME
: nombre de la nueva plantilla de instancia de VM.IMAGE_FAMILY_NAME
: la familia de las imágenes de Confidential Space. Elige una de estas opciones:confidential-space-preview-cgpu
para cargas de trabajo de producciónconfidential-space-debug-preview-cgpu
para cargas de trabajo de depuración
WORKLOAD_AUTHOR_PROJECT
: el ID del proyecto en el que se ejecuta la carga de trabajo.REPOSITORY_NAME
: nombre del repositorio de Artifact Registry.WORKLOAD_CONTAINER_NAME
: nombre del contenedor de la carga de trabajo.WORKLOAD_SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio que ejecuta la carga de trabajo.WORKLOAD_OPERATOR_PROJECT_ID
: ID del proyecto que ejecuta la carga de trabajo.RUN_DURATION
: la duración que quieres que se ejecuten las instancias de VM solicitadas. Debes dar formato al valor como el número de días, horas, minutos o segundos seguido ded
,h
,m
os
, respectivamente. Por ejemplo, especifica30m
para 30 minutos o1d2h3m4s
para un día, dos horas, tres minutos y cuatro segundos. El valor debe estar comprendido entre 10 minutos y 7 días.PROJECT_ID
: opcional. El ID del proyecto en el que se crearán las instancias de VM.
Crea un MIG zonal con el 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
Proporciona los siguientes valores:
INSTANCE_GROUP_NAME
: el nombre del MIG.INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancia de las VMs con GPU.ZONE_NAME
: una de las zonas que admiten Confidential Computing de NVIDIA (versión preliminar).
En el MIG, crea una solicitud de cambio de tamaño. Especifica el número de instancias de VM con GPU que quieres y la duración durante la que quieres que se ejecuten.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
Proporciona los siguientes valores:
INSTANCE_GROUP_NAME
: el nombre del MIG.INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancia de las instancias de VM con GPU.ZONE_NAME
: una de las zonas que admiten Confidential Computing de NVIDIA (versión preliminar).RESIZE_REQUEST_NAME
: el nombre de la solicitud de cambio de tamaño.COUNT
: número de instancias de VM que se van a añadir al grupo a la vez.
La solicitud de cambio de tamaño que crees permanecerá en el estado
ACCEPTED
hasta que el MIG cree todas las instancias de VM con GPU solicitadas. Una vez que se hayan creado todas las instancias de máquina virtual con GPU del grupo, el estado de la solicitud cambiará aSUCCEEDED
.Cuando haya suficientes recursos disponibles para la solicitud de cambio de tamaño, se añadirán instancias de VM al MIG y se iniciarán para ejecutar tu carga de trabajo. Para enumerar las instancias que están presentes en el MIG, ejecuta el siguiente comando:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
Proporciona los siguientes valores:
INSTANCE_GROUP_NAME
: el nombre del MIG.ZONE_NAME
: la zona admitida de la que se va a obtener una lista de instancias de VM.PROJECT_ID
: opcional. ID del proyecto del que se va a obtener una lista de instancias de VM.
Cuenta de servicio adjunta
Para ejecutar una carga de trabajo, se debe adjuntar una cuenta de servicio a la VM confidencial de la carga de trabajo. La cuenta de servicio debe configurarse de la siguiente manera:
Con los siguientes roles:
roles/confidentialcomputing.workloadUser
para generar un token de certificación.roles/artifactregistry.reader
para obtener una imagen de contenedor de carga de trabajo almacenada en Artifact Registry.roles/logging.logWriter
si quieres redirigirSTDOUT
ySTDERR
a Cloud Logging.
Con acceso de lectura a la ubicación donde los colaboradores de datos almacenan sus datos confidenciales, por ejemplo, un segmento de Cloud Storage o una tabla de BigQuery.
Con acceso de escritura a la ubicación en la que la carga de trabajo debe generar los datos. Por ejemplo, un segmento de Cloud Storage. Los colaboradores de datos deben tener acceso de lectura a esta ubicación.
Además, los colaboradores de datos y los operadores de cargas de trabajo deben configurar lo siguiente:
Si los colaboradores de datos usan la suplantación de identidad de la cuenta de servicio en lugar del acceso directo a los recursos, deben añadir la cuenta de servicio a su proveedor de grupo de identidades de carga de trabajo como condición de atributo:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
El operador de la carga de trabajo necesita el rol
roles/iam.serviceAccountUser
para suplantar la identidad de la cuenta de servicio. De esta forma, pueden asociarlo a una instancia de VM con carga de trabajo para que pueda ejecutar la carga de trabajo.
Variables de metadatos
Puedes cambiar el comportamiento de la VM de carga de trabajo de Confidential Space pasando variables a la opción --metadata
cuando crees la VM.
Para introducir varias variables, primero define el delimitador añadiendo el prefijo ^~^
al valor de --metadata
. De esta forma, el delimitador se establece en ~
, ya que ,
se usa en los valores de las variables.
Por ejemplo:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
En la siguiente tabla se detallan las variables de metadatos que puede definir para su VM de carga de trabajo.
Clave de metadatos | Tipo | Descripción y valores |
---|---|---|
Interactúa con:
|
Cadena |
Obligatorio. Apunta a la ubicación del contenedor de la carga de trabajo. Ejemplo
|
Interactúa con:
|
Matriz de cadenas JSON |
Añade funciones de Linux adicionales al contenedor de la carga de trabajo. Ejemplo
|
Interactúa con:
|
Booleano |
El valor predeterminado es Ejemplo
|
Interactúa con:
|
Matriz de cadenas JSON |
Anula las instrucciones de CMD especificadas en el Ejemplo
|
Interactúa con:
|
Cadena definida |
Genera las salidas Los valores válidos son:
Un volumen de registros elevado en la consola serie podría afectar al rendimiento de la carga de trabajo. Ejemplo
|
|
Entero |
Define el tamaño en kB del montaje de memoria compartida Ejemplo
|
Interactúa con:
|
Cadena |
Define variables de entorno en el contenedor de la carga de trabajo. El autor de la carga de trabajo también debe añadir los nombres de las variables de entorno a la política de lanzamiento
Ejemplo
|
Interactúa con:
|
Cadena |
Lista de cuentas de servicio a las que puede suplantar el operador de la carga de trabajo. El operador de la carga de trabajo debe tener permiso para representar las cuentas de servicio. Se pueden indicar varias cuentas de servicio separadas por comas. Ejemplo
|
Interactúa con:
|
Booleano |
Indica si se debe instalar el controlador de GPU de Confidential Computing de NVIDIA. Requiere un tipo de máquina que admita Confidential Computing de NVIDIA (vista previa). Ejemplo
|
Interactúa con:
|
Booleano |
El valor predeterminado es Ejemplo
|
Interactúa con:
|
Cadena |
Lista de definiciones de montaje separadas por punto y coma. Una definición de montaje
consta de una lista de pares clave-valor separados por comas
que requieren Ejemplo
|
Interactúa con:
|
Cadena definida |
La política de reinicio del lanzador de contenedores cuando la carga de trabajo se detiene Los valores válidos son:
Esta variable solo se admite en la imagen de espacio confidencial de producción. Ejemplo
|
Interactúa con:
|
Cadena |
Lista de repositorios de contenedores separados por comas que almacenan las firmas generadas por Sigstore Cosign. Ejemplo
|
Escalado
Para obtener información sobre el escalado y la alta disponibilidad de las cargas de trabajo de producción de Confidential Space, consulta Grupos de instancias administrados.