Um operador de carga de trabalho pode transmitir opções a uma instância de VM de carga de trabalho do espaço confidencial para determinar o respetivo comportamento antes da execução. Embora algumas flags tenham valores obrigatórios que não se alteram, continua a ter de fazer as seguintes escolhas:
Se a instância de VM deve basear-se numa imagem de espaço confidencial de produção ou depuração.
Se deve usar AMD SEV, Intel TDX ou Intel TDX com NVIDIA Confidential Computing (Pré-visualização) para ajudar a manter os dados da sua carga de trabalho privados.
Que variáveis de metadados da VM têm de ser transmitidas, que incluem detalhes como a imagem do contentor da carga de trabalho a executar, se deve registar no Cloud Logging e que variáveis de ambiente definir.
Que conta de serviço anexar à VM para executar a carga de trabalho e que autorizações precisa para aceder a dados confidenciais noutros projetos e escrever os resultados nalgum local.
Em que zona a instância de VM deve ser executada.
Segue-se um exemplo que cria uma Confidential VM e executa um contentor Docker denominado WORKLOAD_CONTAINER_NAME:
Cargas de trabalho baseadas na 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
Indique os seguintes valores:
INSTANCE_NAME
: o nome da nova instância de VM.CONFIDENTIAL_COMPUTING_TECHNOLOGY
: O tipo de tecnologia de computação confidencial a usar. Escolha um dos seguintes valores:SEV
TDX
MACHINE_TYPE_NAME
: o tipo de máquina virtual, por exemplo,n2d-standard-2
. Os tipos de máquinas válidos para instâncias de VMs confidenciais são determinados pela tecnologia de computação confidencial que escolheu, ou seja, AMD SEV ou Intel TDX. Consulte o artigo Tipos de máquinas, CPUs e zonas.MAINTENANCE_POLICY
: para tipos de máquinas N2D que usam SEV, defina esta opção comoMIGRATE
para suporte de migração em direto. Para todos os outros tipos de máquinas, defina este valor comoTERMINATE
, uma vez que não suportam a migração em direto.IMAGE_FAMILY_NAME
: a família das imagens do espaço confidencial. Selecione uma das seguintes opções:confidential-space
para cargas de trabalho de produçãoconfidential-space-debug
para cargas de trabalho de depuração
WORKLOAD_AUTHOR_PROJECT
: O ID do projeto que aloja o repositório do Artifact Registry no qual o contentor de carga de trabalho está armazenado.REPOSITORY_NAME
: o nome do repositório do Artifact Registry no qual o contentor de carga de trabalho está armazenado.WORKLOAD_CONTAINER_NAME
: o nome do contentor da carga de trabalho.WORKLOAD_SERVICE_ACCOUNT_NAME
: o nome da conta de serviço que executa a carga de trabalho.WORKLOAD_OPERATOR_PROJECT_ID
: o ID do projeto que executa a carga de trabalho.ZONE_NAME
: a zona em que a instância de VM é executada, por exemplo,us-west1-b
. O espaço confidencial requer os seguintes serviços, que estão disponíveis em localizações específicas:VM confidencial, com base na tecnologia de computação confidencial em utilização
PROJECT_ID
: opcional. O ID do projeto no qual criar a instância de VM.
Cargas de trabalho baseadas na GPU
Antes de começar
O espaço confidencial só suporta a computação confidencial da NVIDIA (pré-visualização) em GPUs H100.
Para se certificar de que tem quota de GPU suficiente para os recursos que está a pedir, verifique a sua quota de GPU. Para instâncias de VMs confidenciais com GPUs, peça uma quota de GPU preemptível para usar os recursos. Quando pede quota de GPU, tem de pedir quota para os modelos de GPU que quer criar em cada região e quota global adicional (
GPUs (all regions)
) para o número total de GPUs de todos os tipos em todas as regiões.Para compreender o consumo de quotas, leia o artigo VMs de GPU e quotas de alocação preemptivas.
Leia as limitações para criar um pedido de redimensionamento num MIG.
Para instalar os controladores necessários para a computação confidencial da NVIDIA (pré-visualização), tem de transmitir a variável de metadados
tee-install-gpu-driver
com um valor detrue
.Para os controladores da NVIDIA e o kit de ferramentas CUDA, recomenda-se um disco de arranque da VM com 30 GB ou mais de espaço.
Implemente uma carga de trabalho baseada em GPU
Para implementar uma carga de trabalho baseada em GPU, tem de criar uma instância de VM confidencial com o modelo de aprovisionamento spot ou flex-start (pré-visualização).
Espaço
Para usar o modelo de aprovisionamento de instâncias temporárias, crie uma instância de VM otimizada 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
Indique os seguintes valores:
INSTANCE_NAME
: o nome da nova instância de VM.IMAGE_FAMILY_NAME
: a família das imagens do espaço confidencial. Selecione uma das seguintes opções:confidential-space-preview-cgpu
para cargas de trabalho de produçãoconfidential-space-debug-preview-cgpu
para cargas de trabalho de depuração
WORKLOAD_AUTHOR_PROJECT
: o ID do projeto no qual a carga de trabalho está a ser executada.REPOSITORY_NAME
: o nome do repositório do Artifact Registry.WORKLOAD_CONTAINER_NAME
: o nome do contentor da carga de trabalho.WORKLOAD_SERVICE_ACCOUNT_NAME
: o nome da conta de serviço que executa a carga de trabalho.WORKLOAD_OPERATOR_PROJECT_ID
: o ID do projeto que executa a carga de trabalho.ZONE_NAME
: Uma das zonas que suportam a computação confidencial da NVIDIA (pré-visualização).PROJECT_ID
: opcional. O ID do projeto no qual criar a instância de VM.
Flex-start
Para usar o modelo de aprovisionamento de início flexível (Pré-visualização), crie um modelo de instância e, de seguida, um grupo de instâncias gerido (GIG).
Crie um modelo de instância:
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
Indique os seguintes valores:
INSTANCE_TEMPLATE_NAME
: o nome do novo modelo de instância de VM.IMAGE_FAMILY_NAME
: a família das imagens do espaço confidencial. Selecione uma das seguintes opções:confidential-space-preview-cgpu
para cargas de trabalho de produçãoconfidential-space-debug-preview-cgpu
para cargas de trabalho de depuração
WORKLOAD_AUTHOR_PROJECT
: o ID do projeto no qual a carga de trabalho está a ser executada.REPOSITORY_NAME
: o nome do repositório do Artifact Registry.WORKLOAD_CONTAINER_NAME
: o nome do contentor de carga de trabalho.WORKLOAD_SERVICE_ACCOUNT_NAME
: o nome da conta de serviço que executa a carga de trabalho.WORKLOAD_OPERATOR_PROJECT_ID
: o ID do projeto que executa a carga de trabalho.RUN_DURATION
: a duração durante a qual quer que as instâncias de VM pedidas sejam executadas. Tem de formatar o valor como o número de dias, horas, minutos ou segundos, seguido ded
,h
,m
ous
, respetivamente. Por exemplo, especifique30m
para 30 minutos ou1d2h3m4s
para um dia, duas horas, três minutos e quatro segundos. O valor tem de estar compreendido entre 10 minutos e sete dias.PROJECT_ID
: opcional. O ID do projeto no qual criar as instâncias de VM.
Crie um MIG zonal com o 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
Indique os seguintes valores:
INSTANCE_GROUP_NAME
: o nome do MIG.INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância para VMs com GPU.ZONE_NAME
: Uma das zonas que suportam a computação confidencial da NVIDIA (pré-visualização).
No MIG, crie um pedido de redimensionamento. Especifique o número de instâncias de VM com GPU que quer e a duração de execução dessas instâncias de VM.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
Indique os seguintes valores:
INSTANCE_GROUP_NAME
: o nome do MIG.INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância para instâncias de VM de GPU.ZONE_NAME
: Uma das zonas que suportam a computação confidencial da NVIDIA (pré-visualização).RESIZE_REQUEST_NAME
: o nome do pedido de redimensionamento.COUNT
: o número de instâncias de VM a adicionar todas de uma vez no grupo.
O pedido de redimensionamento que criar permanece no estado
ACCEPTED
até o MIG criar todas as instâncias de VM de GPU pedidas. Depois de todas as instâncias de VM com GPU serem criadas no grupo, o estado do pedido muda paraSUCCEEDED
.Quando existem recursos suficientes para o pedido de redimensionamento, são adicionadas instâncias de VM ao MIG e iniciadas para executar a sua carga de trabalho. Para apresentar uma lista de instâncias presentes no MIG, execute o seguinte comando:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
Indique os seguintes valores:
INSTANCE_GROUP_NAME
: o nome do MIG.ZONE_NAME
: a zona suportada para obter uma lista de instâncias de VM.PROJECT_ID
: opcional. O ID do projeto a partir do qual quer obter uma lista de instâncias de VM.
Conta de serviço anexada
Tem de anexar uma conta de serviço a uma VM confidencial de uma carga de trabalho para executar a carga de trabalho. A conta de serviço tem de ser configurada da seguinte forma:
Com as seguintes funções:
roles/confidentialcomputing.workloadUser
para gerar um token de atestação.roles/artifactregistry.reader
para obter uma imagem de contentor de carga de trabalho armazenada no Artifact Registry.roles/logging.logWriter
se quiser redirecionarSTDOUT
eSTDERR
para o Cloud Logging.
Com acesso de leitura ao local onde os colaboradores de dados armazenam os respetivos dados confidenciais, por exemplo, um contentor do Cloud Storage ou uma tabela do BigQuery.
Com acesso de escrita ao local onde a carga de trabalho deve gerar os dados, por exemplo, um contentor do Cloud Storage. Os colaboradores de dados devem ter acesso de leitura a esta localização.
Além disso, os colaboradores de dados e os operadores de cargas de trabalho têm de configurar o seguinte:
Se os colaboradores de dados estiverem a usar a representação da conta de serviço em vez do acesso direto aos recursos, têm de adicionar a conta de serviço ao respetivo fornecedor do conjunto de identidades da carga de trabalho como uma condição de atributo:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
O operador da carga de trabalho precisa da função
roles/iam.serviceAccountUser
para se fazer passar pela conta de serviço. Isto permite-lhes anexá-lo a uma instância de VM de carga de trabalho para que possa executar a carga de trabalho.
Variáveis de metadados
Pode alterar o comportamento da VM da carga de trabalho do Confidential Space transmitindo variáveis para a opção --metadata
quando cria a VM.
Para transmitir várias variáveis, defina primeiro o delimitador prefixando o valor --metadata
com ^~^
. Isto define o delimitador como ~
, uma vez que ,
é usado em valores variáveis.
Por exemplo:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
A tabela seguinte detalha as variáveis de metadados que pode definir para a VM de carga de trabalho.
Chave de metadados | Tipo | Descrição e valores |
---|---|---|
Interage com:
|
String |
Obrigatório. Isto aponta para a localização do contentor da carga de trabalho. Exemplo
|
Interage com:
|
Matriz de strings JSON |
Adiciona capacidades do Linux adicionais ao contentor de carga de trabalho. Exemplo
|
Interage com:
|
Booleano |
A predefinição é Exemplo
|
Interage com:
|
Matriz de strings JSON |
Substitui as instruções CMD especificadas no Exemplo
|
Interage com:
|
String definida |
Envia Os valores válidos são:
Um volume de registos elevado na consola série pode afetar o desempenho da carga de trabalho. Exemplo
|
|
Número inteiro |
Define o tamanho em kB da montagem de Exemplo
|
Interage com:
|
String |
Define variáveis de ambiente no contentor de carga de trabalho.
O autor da carga de trabalho também tem de adicionar os nomes das variáveis de ambiente à política de lançamento, caso contrário, não são definidos.
Exemplo
|
Interage com:
|
String |
Uma lista de contas de serviço que podem ser representadas pelo operador da carga de trabalho. O operador da carga de trabalho tem de ter autorização para se fazer passar pelas contas de serviço. Podem ser indicadas várias contas de serviço, separadas por vírgulas. Exemplo
|
Interage com:
|
Booleano |
Se deve instalar o controlador de GPU de computação confidencial da NVIDIA. Requer um tipo de máquina que suporte a computação confidencial da NVIDIA (pré-visualização). Exemplo
|
Interage com:
|
Booleano |
A predefinição é Exemplo
|
Interage com:
|
String |
Uma lista de definições de montagem separadas por pontos e vírgulas. Uma definição de montagem
consiste numa lista separada por vírgulas de pares de chave-valor,
que requer Exemplo
|
Interage com:
|
String definida |
A política de reinício do iniciador de contentores quando a carga de trabalho para Os valores válidos são:
Esta variável só é suportada pela imagem do espaço confidencial de produção. Exemplo
|
Interage com:
|
String |
Uma lista de repositórios de contentores separados por vírgulas que armazenam as assinaturas geradas por Sigstore Cosign. Exemplo
|
Dimensionar
Para a escalabilidade e a elevada disponibilidade das cargas de trabalho de produção do Confidential Space, consulte os grupos de instâncias geridos.