Personalizar seu ambiente de desenvolvimento

Nesta página, descrevemos os parâmetros de configuração da estação de trabalho que permitem personalizar o ambiente do Cloud Workstations, incluindo o tipo de VM, o tamanho do disco inicial, a imagem do contêiner base e muito mais. Na API, esses parâmetros de configuração da estação de trabalho são chamados coletivamente de WorkstationConfig.

Antes de usar esses parâmetros de configuração da estação de trabalho, familiarize-se com o seguinte:


Recurso REST: projects.locations.workstationClusters.workstationConfigs

Recurso: WorkstationConfig

Um recurso de configuração da estação de trabalho na API Cloud Workstations.

As configurações da estação de trabalho atuam como modelos para ela. A configuração da estação de trabalho define detalhes como o tipo de instância da máquina virtual (VM) da estação de trabalho, o armazenamento permanente, o ambiente que define a imagem do contêiner, o ambiente de desenvolvimento integrado ou o editor de código a ser usado e muito mais. Os administradores e as equipes de plataforma também podem usar as regras do Identity and Access Management (IAM) para conceder acesso a equipes ou desenvolvedores individuais.

Representação JSON

{
  "name": string,
  "displayName": string,
  "uid": string,
  "reconciling": boolean,
  "annotations": {
    string: string,
    ...
  },
  "labels": {
    string: string,
    ...
  },
  "createTime": string,
  "updateTime": string,
  "deleteTime": string,
  "etag": string,
  "idleTimeout": string,
  "runningTimeout": string,
  "host": {
    object (Host)
  },
  "persistentDirectories": [
    {
      object (PersistentDirectory)
    }
  ],
  "ephemeralDirectories": [
    {
      object (EphemeralDirectory)
    }
  ],
  "container": {
    object (Container)
  },
  "encryptionKey": {
    object (CustomerEncryptionKey)
  },
  "readinessChecks": [
    {
      object (ReadinessCheck)
    }
  ],
  "replicaZones": [
    string
  ],
  "degraded": boolean,
  "conditions": [
    {
      object (Status)
    }
  ],
  "enableAuditAgent": boolean,
  "disableTcpConnections": boolean
}
Campos
name

string

Identificador. Nome completo da configuração da estação de trabalho.

displayName

string

Opcional. Nome legível por humanos para a configuração desta estação de trabalho.

uid

string

Apenas saída. Um identificador exclusivo atribuído pelo sistema para a configuração da estação de trabalho.

reconciling

boolean

Apenas saída. Indica se a configuração da estação de trabalho está sendo atualizada para corresponder ao estado pretendido.

annotations

map (key: string, value: string)

Opcional. Anotações especificadas pelo cliente.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

labels

map (key: string, value: string)

Opcional. Rótulos que são aplicados à configuração da estação de trabalho e que também são propagados para os recursos subjacentes do Compute Engine.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

createTime

string (Timestamp format)

Apenas saída. Hora em que a configuração da estação de trabalho foi criada.

Um carimbo de data/hora no formato UTC "Zulu" RFC3339, com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Apenas saída. Hora em que a configuração da estação de trabalho foi atualizada pela última vez.

Um carimbo de data/hora no formato UTC "Zulu" RFC3339, com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

deleteTime

string (Timestamp format)

Apenas saída. Hora em que a configuração da estação de trabalho foi excluída de forma reversível.

Um carimbo de data/hora no formato UTC "Zulu" RFC3339, com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

etag

string

Opcional. Soma de verificação calculada pelo servidor. Pode ser enviado em solicitações de atualização e exclusão para garantir que o cliente tenha um valor atualizado antes de continuar.

idleTimeout

string (Duration format)

Opcional. Número de segundos de espera antes de interromper automaticamente uma estação de trabalho depois que ela recebeu o último tráfego do usuário.

Um valor de "0s" indica que as VMs do Cloud Workstations criadas com essa configuração nunca podem expirar devido à inatividade. Informe a duração encerrada por s em segundos. Por exemplo, "7200s" (2 horas). O padrão é "1200s" (20 minutos).

Uma duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

runningTimeout

string (Duration format)

Opcional. Número de segundos que uma estação de trabalho pode ficar em execução até ser desligada automaticamente. Recomendamos que as estações de trabalho sejam desligadas diariamente para reduzir os custos e para que as atualizações de segurança possam ser aplicadas após a reinicialização. Os campos idleTimeout e runningTimeout são independentes um do outro. O campo runningTimeout encerra as VMs após o tempo especificado, mesmo que elas não estejam inativas.

Forneça uma duração encerrada por s para segundos. Por exemplo, "54000s" (15 horas). O padrão é "43200s" (12 horas). O valor "0s" indica que as estações de trabalho que usam essa configuração nunca podem expirar. Se encryptionKey estiver definido, ele precisará ser maior que "0s" e menor que "86400s" (24 horas).

Aviso: um valor "0s" indica que as VMs do Cloud Workstations criadas com essa configuração não têm tempo máximo de execução. Isso não é recomendado porque você incorre em custos e não receberá atualizações de segurança.

Uma duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

host

object (Host)

Opcional. Host do ambiente de execução para a estação de trabalho.

persistentDirectories[]

object (PersistentDirectory)

Opcional. Diretórios para persistir entre sessões de estação de trabalho.

ephemeralDirectories[]

object (EphemeralDirectory)

Opcional. Diretórios temporários que não persistem entre sessões de estação de trabalho.

container

object (Container)

Opcional. Contêiner executado na inicialização para cada estação de trabalho usando essa configuração de estação de trabalho.

encryptionKey

object (CustomerEncryptionKey)

Imutável. Criptografa recursos desta configuração de estação de trabalho usando uma chave de criptografia gerenciada pelo cliente (CMEK).

Se especificado, o disco de inicialização da instância do Compute Engine e o disco permanente são criptografados com essa chave de criptografia. Se este campo não for definido, os discos serão criptografados usando uma chave gerada. As chaves de criptografia gerenciadas pelo cliente não protegem os metadados do disco.

Se a chave de criptografia gerenciada pelo cliente for rotacionada, quando a instância da estação de trabalho for interrompida, o sistema tentará recriar o disco permanente com a nova versão da chave. Mantenha versões mais antigas da chave até que o disco permanente seja recriado. Caso contrário, os dados no disco permanente podem ser perdidos.

Se a chave de criptografia for revogada, a sessão da estação de trabalho será interrompida automaticamente em até sete horas.

Imutável após a criação da configuração da estação de trabalho.

readinessChecks[]

object (ReadinessCheck)

Opcional. Verificações de prontidão a serem executadas ao iniciar uma estação de trabalho usando esta configuração de estação de trabalho. Marque uma estação de trabalho como em execução somente depois que todas as verificações de prontidão especificadas retornarem códigos de status 200.

replicaZones[]

string

Opcional. Imutável. Especifica as zonas usadas para replicar os recursos da VM e do disco na região. Se definido, é necessário especificar exatamente duas zonas na região do cluster de estações de trabalho, por exemplo, ['us-central1-a', 'us-central1-f']. Se este campo estiver vazio, duas zonas padrão na região serão usadas.

Imutável após a criação da configuração da estação de trabalho.

degraded

boolean

Apenas saída. Indica se esse recurso está degradado. Nesse caso, pode ser necessária uma ação do usuário para restaurar a funcionalidade completa. Consulte também o campo conditions.

conditions[]

object (Status)

Apenas saída. Condições de status que descrevem o estado atual do recurso.

enableAuditAgent

boolean

Opcional. Define se a geração de registros auditd do Linux será ativada na estação de trabalho. Quando ativada, também precisa ser especificada uma conta de serviço com a permissão logging.buckets.write no projeto. Os registros de auditoria do sistema operacional são diferentes dos Registros de auditoria do Cloud.

disableTcpConnections

boolean

Opcional. Desativa o suporte a conexões TCP simples na estação de trabalho. Por padrão, o serviço oferece suporte a conexões TCP por meio de um redirecionamento de websocket. A configuração dessa opção como verdadeira desativa esse redirecionamento, o que impede o uso de serviços que exigem conexões TCP simples, como SSH. Quando ativada, toda a comunicação precisa ocorrer por HTTPS ou WSS.

Host

Host do ambiente de execução para uma estação de trabalho.

Representação JSON

{

  // Union field config can be only one of the following:
  "gceInstance": {
    object (GceInstance)
  }
  // End of list of possible types for union field config.
}
Campos
Campo de união config. Tipo de host a ser usado no ambiente de execução da estação de trabalho. config pode ser apenas de um dos tipos a seguir:
gceInstance

object (GceInstance)

Especifica uma instância do Compute Engine como host.

GceInstance

Um ambiente de execução que usa uma instância do Compute Engine.

Representação JSON

{
  "machineType": string,
  "serviceAccount": string,
  "serviceAccountScopes": [
    string
  ],
  "tags": [
    string
  ],
  "poolSize": integer,
  "pooledInstances": integer,
  "disablePublicIpAddresses": boolean,
  "enableNestedVirtualization": boolean,
  "shieldedInstanceConfig": {
    object (GceShieldedInstanceConfig)
  },
  "confidentialInstanceConfig": {
    object (GceConfidentialInstanceConfig)
  },
  "bootDiskSizeGb": integer,
  "accelerators": [
    {
      object (Accelerator)
    }
  ],
  "disableSsh": boolean
}
Campos
machineType

string

Opcional. O tipo de máquina a ser usado para instâncias de VM, por exemplo, "e2-standard-4". Para mais informações sobre os tipos de máquinas compatíveis com o Cloud Workstations, consulte a lista de tipos de máquinas disponíveis.

serviceAccount

string

Opcional. O endereço de e-mail da conta de serviço das VMs do Cloud Workstations criadas com essa configuração. Quando especificado, verifique se a conta de serviço tem a permissão logginglogEntries.create no projeto para poder gravar os registros no Cloud Logging. Se você estiver usando uma imagem de contêiner personalizada, a conta de serviço precisará ter a permissão de leitor do Artifact Registry para extrair a imagem especificada.

Se você, como administrador, quiser usar ssh na VM, defina esse valor como uma conta de serviço em que você tenha a permissão iam.serviceAccounts.actAs. Por outro lado, se você não quiser que ninguém possa ssh na VM subjacente, use uma conta de serviço em que ninguém tenha essa permissão.

Se ela não for definida, as VMs serão executadas com uma conta de serviço fornecida pelo serviço Cloud Workstations e a imagem precisará estar acessível publicamente.

serviceAccountScopes[]

string

Opcional. Escopos a serem concedidos ao serviceAccount. Vários escopos são adicionados automaticamente com base no uso dos recursos. Quando especificada, os usuários de estações de trabalho sob essa configuração precisam ter iam.serviceAccounts.actAs na conta de serviço.

tags[]

string

Opcional. Tags de rede a serem adicionadas às VMs do Compute Engine que dão suporte às estações de trabalho. Essa opção aplica tags de rede às VMs criadas com essa configuração. Essas tags de rede permitem a criação de regras de firewall.

poolSize

integer

Opcional. O número de VMs que o sistema deve manter inativas para que novas estações de trabalho possam ser iniciadas rapidamente para novos usuários. O padrão na API é 0.

pooledInstances

integer

Apenas saída. Número de instâncias disponíveis atualmente no pool para uma inicialização mais rápida da estação de trabalho.

disablePublicIpAddresses

boolean

Opcional. Quando definida como verdadeira, desativa os endereços IP públicos das VMs. Se você desativar endereços IP públicos, precisará configurar o Acesso privado do Google ou o Cloud NAT na sua rede. Se você usa o Acesso privado do Google e private.googleapis.com ou restricted.googleapis.com para o Container Registry e o Artifact Registry, configure registros DNS para os domínios *.gcr.io e *.pkg.dev. O padrão é falso (as VMs têm endereços IP públicos).

enableNestedVirtualization

boolean

Opcional. Define se a virtualização aninhada será ativada nas VMs do Cloud Workstations criadas usando essa configuração de estação de trabalho.

A virtualização aninhada permite executar instâncias de máquina virtual (VM) na sua estação de trabalho. Antes de ativar a virtualização aninhada, considere as seguintes considerações importantes. As instâncias do Cloud Workstations estão sujeitas às mesmas restrições que as instâncias do Compute Engine:

  • Política da organização: se a restrição Desativar virtualização aninhada da VM for aplicada na política da organização, os projetos, pastas ou organizações poderão ser impedidos de criar VMs aninhadas. Para mais informações, consulte a seção do Compute Engine Como verificar se a virtualização aninhada é permitida.
  • Desempenho: VMs aninhadas podem ter uma redução de 10% ou mais no desempenho para cargas de trabalho vinculadas à CPU e possivelmente maior que uma redução de 10% para cargas de trabalho vinculadas de entrada/saída.
  • Tipo de máquina: a virtualização aninhada só pode ser ativada em configurações da estação de trabalho que especificam um machineType na série de máquinas N1 ou N2.
  • GPUs: a virtualização aninhada pode não estar ativada nas configurações da estação de trabalho com aceleradores.
  • Sistema operacional: como o Container-Optimized OS não oferece suporte à virtualização aninhada, quando ela está ativada, as instâncias de VM do Compute Engine são inicializadas a partir de uma imagem do LTS do Ubuntu (em inglês).
shieldedInstanceConfig

object (GceShieldedInstanceConfig)

Opcional. Um conjunto de opções de instância protegida do Compute Engine.

confidentialInstanceConfig

object (GceConfidentialInstanceConfig)

Opcional. Um conjunto de opções de instâncias de VMs confidenciais do Compute Engine.

bootDiskSizeGb

integer

Opcional. O tamanho do disco de inicialização da VM em gigabytes (GB). O tamanho mínimo do disco de inicialização é de 30 GB. O padrão é 50 GB.

accelerators[]

object (Accelerator)

Opcional. Uma lista do tipo e do número de cartões aceleradores anexados à instância.

disableSsh

boolean

Opcional. Define se o acesso SSH à VM será desativado.

GceShieldedInstanceConfig

Um conjunto de opções de instância protegida do Compute Engine.

Representação JSON

{
  "enableSecureBoot": boolean,
  "enableVtpm": boolean,
  "enableIntegrityMonitoring": boolean
}
Campos
enableSecureBoot

boolean

Opcional. Indica se a Inicialização segura está ativada na instância.

enableVtpm

boolean

Opcional. Se a instância tem o vTPM ativado.

enableIntegrityMonitoring

boolean

Opcional. Indica se a instância tem monitoramento de integridade ativado.

GceConfidentialInstanceConfig

Um conjunto de opções de instâncias de VMs confidenciais do Compute Engine.

Representação JSON

{
  "enableConfidentialCompute": boolean
}
Campos
enableConfidentialCompute

boolean

Opcional. Indica se a instância tem a computação confidencial ativada.

Accelerator

Uma placa aceleradora conectada à instância.

Representação JSON

{
  "type": string,
  "count": integer
}
Campos
type

string

Opcional. Tipo de recurso do acelerador a ser anexado à instância, por exemplo, "nvidia-tesla-p100".

count

integer

Opcional. Número de cartões aceleradores expostos à instância.

PersistentDirectory

Um diretório para persistir entre sessões de estação de trabalho.

Representação JSON

{
  "mountPath": string,

  // Union field directory_type can be only one of the following:
  "gcePd": {
    object (GceRegionalPersistentDisk)
  }
  // End of list of possible types for union field directory_type.
}
Campos
mountPath

string

Opcional. Local deste diretório na estação de trabalho em execução.

Campo de união directory_type. Como um diretório permanente deve ser implementado. directory_type pode ser apenas de um dos tipos a seguir:
gcePd

object (GceRegionalPersistentDisk)

Um PersistentDirectory com o suporte de um disco permanente do Compute Engine.

GceRegionalPersistentDisk

Um diretório permanente respaldado por um disco permanente regional do Compute Engine. O campo persistentDirectories é repetido, mas pode conter apenas uma entrada. Ele cria um disco permanente que é ativado na VM da estação de trabalho em /home quando a sessão é iniciada e é desconectado quando a sessão termina. Se este campo estiver vazio, as estações de trabalho criadas com essa configuração não terão um diretório principal persistente.

Representação JSON

{
  "sizeGb": integer,
  "fsType": string,
  "diskType": string,
  "sourceSnapshot": string,
  "reclaimPolicy": enum (ReclaimPolicy)
}
Campos
sizeGb

integer

Opcional. A capacidade de GB de um diretório principal persistente para cada estação de trabalho criada com essa configuração. Precisa ficar vazio se sourceSnapshot for definido.

Os valores válidos são 10, 50, 100, 200, 500 ou 1000. O padrão é 200. Se for menor que 200 GB, o valor de diskType vai precisar ser "pd-balanced" ou "pd-ssd".

fsType

string

Opcional. Tipo de sistema de arquivos com o qual o disco precisa ser formatado. A imagem da estação de trabalho precisa ser compatível com esse tipo de sistema de arquivos. Precisa ficar vazio se sourceSnapshot for definido. O padrão é "ext4".

diskType

string

Opcional. O tipo de disco permanente para o diretório inicial. O padrão é "pd-standard".

sourceSnapshot

string

Opcional. Nome do snapshot a ser usado como a origem do disco. Se definido, sizeGb e fsType precisam estar vazios.

reclaimPolicy

enum (ReclaimPolicy)

Opcional. Define se o disco permanente precisa ser excluído quando a estação de trabalho for excluída. Os valores válidos são: DELETE e RETAIN. O padrão é DELETE.

ReclaimPolicy

Valor que representa o que deve acontecer com o disco depois que a estação de trabalho for excluída.

Enums
RECLAIM_POLICY_UNSPECIFIED Não use.
DELETE Exclua o disco permanente ao excluir a estação de trabalho.
RETAIN Mantenha o disco permanente ao excluir a estação de trabalho. Um administrador precisa excluir o disco manualmente.

EphemeralDirectory

Um diretório temporário que não persiste entre sessões de estação de trabalho. Ele é criado recentemente em cada operação de inicialização da estação de trabalho.

Representação JSON

{
  "mountPath": string,

  // Union field directory_type can be only one of the following:
  "gcePd": {
    object (GcePersistentDisk)
  }
  // End of list of possible types for union field directory_type.
}
Campos
mountPath

string

Obrigatório. Local deste diretório na estação de trabalho em execução.

Campo de união directory_type. Como um diretório temporário deve ser implementado. directory_type pode ser apenas de um dos tipos a seguir:
gcePd

object (GcePersistentDisk)

Um EphemeralDirectory com suporte de um disco permanente do Compute Engine.

GcePersistentDisk

O EphemeralDirectory é apoiado por um disco permanente do Compute Engine.

Representação JSON

{
  "diskType": string,
  "sourceSnapshot": string,
  "sourceImage": string,
  "readOnly": boolean
}
Campos
diskType

string

Opcional. Tipo de disco a ser usado. O valor padrão é "pd-standard".

sourceSnapshot

string

Opcional. Nome do snapshot a ser usado como a origem do disco. Precisa ficar vazio se sourceImage for definido. Precisa ficar em branco se readOnly for falso. A atualização do sourceSnapshot também atualiza o conteúdo no diretório temporário após a estação de trabalho ser reiniciada. Este campo pode ser modificado.

sourceImage

string

Opcional. Nome da imagem do disco a ser usada como a origem do disco. Precisa ficar vazio se sourceSnapshot for definido. A atualização do sourceImage também atualiza o conteúdo no diretório temporário após a estação de trabalho ser reiniciada. Este campo pode ser modificado.

readOnly

boolean

Opcional. Indica se o disco é somente leitura. Se verdadeiro, o disco poderá ser compartilhado por várias VMs e será necessário definir sourceSnapshot.

Contêiner

Um contêiner do Docker.

Representação JSON

{
  "image": string,
  "command": [
    string
  ],
  "args": [
    string
  ],
  "env": {
    string: string,
    ...
  },
  "workingDir": string,
  "runAsUser": integer
}
Campos
image

string

Opcional. Uma imagem de contêiner do Docker que define um ambiente personalizado.

O Cloud Workstations oferece várias imagens pré-configuradas, mas é possível criar suas próprias imagens de contêiner personalizadas. Se você estiver usando uma imagem particular, o campo host.gceInstance.serviceAccount precisará ser especificado na configuração da estação de trabalho. Se você estiver usando uma imagem de contêiner personalizada, a conta de serviço precisará ter a permissão de leitor do Artifact Registry para extrair a imagem especificada. Caso contrário, a imagem precisa ser acessível publicamente.

command[]

string

Opcional. Se definido, substitui o ENTRYPOINT padrão especificado pela imagem.

args[]

string

Opcional. Argumentos transmitidos ao ponto de entrada.

env

map (key: string, value: string)

Opcional. Variáveis de ambiente transmitidas para o ponto de entrada do contêiner.

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

workingDir

string

Opcional. Se definido, substitui o DIR padrão especificado pela imagem.

runAsUser

integer

Opcional. Se definido, substitui o USER especificado na imagem pelo UID fornecido.

CustomerEncryptionKey

Uma chave de criptografia gerenciada pelo cliente (CMEK) para os recursos do Compute Engine da configuração da estação de trabalho associada. Especifique o nome da chave de criptografia do Cloud KMS e a conta de serviço padrão. Recomendamos que você use uma conta de serviço separada e siga as práticas recomendadas do Cloud KMS.

Representação JSON

{
  "kmsKey": string,
  "kmsKeyServiceAccount": string
}
Campos
kmsKey

string

Imutável. O nome da chave de criptografia do Google Cloud KMS. Por exemplo, "projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" A chave precisa estar na mesma região que a configuração da estação de trabalho.

kmsKeyServiceAccount

string

Imutável. A conta de serviço a ser usada com a chave KMS especificada. Recomendamos que você use uma conta de serviço separada e siga as práticas recomendadas do KMS. Para mais informações, consulte Separação de tarefas e gcloud kms keys add-iam-policy-binding --member.

ReadinessCheck

Uma verificação de prontidão a ser realizada em uma estação de trabalho.

Representação JSON

{
  "path": string,
  "port": integer
}
Campos
path

string

Opcional. O caminho para o qual a solicitação deve ser enviada.

port

integer

Opcional. Porta para onde a solicitação deve ser enviada.

Métodos

create

Cria uma nova configuração de estação de trabalho.

delete

Exclui a configuração de estação de trabalho especificada.

get

Retorna a configuração da estação de trabalho solicitada.

getIamPolicy

Busca a política de controle de acesso de um recurso.

list

Retorna todas as configurações de estações de trabalho no cluster especificado.

listUsable

Retorna todas as configurações de estações de trabalho no cluster especificado em que o autor da chamada tem a permissão "workstations.workstation.create".

patch

Atualiza uma configuração de estação de trabalho atual.

setIamPolicy

Define a política de controle de acesso no recurso especificado.

testIamPermissions

Retorna permissões do autor da chamada no recurso especificado.