Personaliza tu entorno de desarrollo

En esta página, se describen los parámetros de configuración de la estación de trabajo que te permiten personalizar el entorno de Cloud Workstations, incluido el tipo de VM, el tamaño del disco principal, la imagen base del contenedor y mucho más. En la API, estos parámetros de configuración de la estación de trabajo se denominan en conjunto WorkstationConfig.

Antes de usar estos parámetros de configuración de la estación de trabajo, familiarízate con lo siguiente:


Recurso de REST: projects.locations.workstationClusters.workstationConfigs

Recurso: WorkstationConfig

Un recurso de configuración de estación de trabajo en la API de Cloud Workstations.

Los parámetros de configuración de las estaciones de trabajo actúan como plantillas para ellas. La configuración de la estación de trabajo define detalles como el tipo de instancia de máquina virtual (VM) de la estación de trabajo, el almacenamiento persistente, el entorno de definición de la imagen del contenedor, qué IDE o editor de código usar y mucho más. Los administradores y los equipos de plataforma también pueden usar las reglas de Identity and Access Management (IAM) para otorgar acceso a equipos o desarrolladores individuales.

Representación 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. Es el nombre completo de la configuración de esta estación de trabajo.

displayName

string

Opcional. Es el nombre legible de la configuración de esta estación de trabajo.

uid

string

Solo salida. Un identificador único asignado por el sistema para la configuración de esta estación de trabajo.

reconciling

boolean

Solo salida. Indica si la configuración de esta estación de trabajo se está actualizando para que coincida con el estado deseado.

annotations

map (key: string, value: string)

Opcional. Anotaciones especificadas por el cliente

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

labels

map (key: string, value: string)

Opcional. Etiquetas que se aplican a la configuración de la estación de trabajo y que, además, se propagan a los recursos subyacentes de Compute Engine

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

createTime

string (Timestamp format)

Solo salida. Hora en la que se creó la configuración de esta estación de trabajo.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Solo salida. Hora en la que se actualizó la configuración de esta estación de trabajo por última vez.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

deleteTime

string (Timestamp format)

Solo salida. Hora en la que se borró de forma no definitiva la configuración de esta estación de trabajo.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

etag

string

Opcional. Suma de comprobación calculada por el servidor. Se puede enviar en las solicitudes de actualización y eliminación para garantizar que el cliente tenga un valor actualizado antes de continuar.

idleTimeout

string (Duration format)

Opcional. Cantidad de segundos que se debe esperar antes de detener automáticamente una estación de trabajo después de que haya recibido el tráfico del usuario por última vez.

Un valor de "0s" indica que las VMs de Cloud Workstations creadas con esta configuración nunca deberían agotar el tiempo de espera debido a la inactividad. Proporciona la duración que termina s para los segundos, por ejemplo, "7200s" (2 horas). El valor predeterminado es "1200s" (20 minutos).

Una duración en segundos con hasta nueve dígitos decimales que terminen en "s". Ejemplo: "3.5s".

runningTimeout

string (Duration format)

Opcional. Cantidad de segundos en los que se puede ejecutar una estación de trabajo hasta que se cierra automáticamente. Recomendamos que las estaciones de trabajo se cierren a diario para reducir los costos y que las actualizaciones de seguridad se puedan aplicar después del reinicio. Los campos idleTimeout y runningTimeout son independientes entre sí. Ten en cuenta que el campo runningTimeout cierra las VMs después del tiempo especificado, independientemente de si las VMs están inactivas o no.

Proporciona la duración que s finaliza en segundos, por ejemplo, "54000s" (15 horas). La configuración predeterminada es "43200s" (12 horas). Un valor de "0s" indica que las estaciones de trabajo que usan esta configuración nunca deben agotar el tiempo de espera. Si se configura encryptionKey, debe ser mayor que "0s" y menor que "86400s" (24 horas).

Advertencia: Un valor de "0s" indica que las VMs de Cloud Workstations creadas con esta configuración no tienen un tiempo máximo de ejecución. No se recomienda hacerlo, ya que se generarán costos y no recibirás actualizaciones de seguridad.

Una duración en segundos con hasta nueve dígitos decimales que terminen en "s". Ejemplo: "3.5s".

host

object (Host)

Opcional. Host del entorno de ejecución para la estación de trabajo.

persistentDirectories[]

object (PersistentDirectory)

Opcional. Directorios que se conservan en las sesiones de las estaciones de trabajo

ephemeralDirectories[]

object (EphemeralDirectory)

Opcional. Directorios efímeros que no se conservan entre las sesiones de las estaciones de trabajo.

container

object (Container)

Opcional. Contenedor que se ejecuta durante el inicio de cada estación de trabajo que usa esta configuración.

encryptionKey

object (CustomerEncryptionKey)

Inmutable. Encripta los recursos de la configuración de esta estación de trabajo con una clave de encriptación administrada por el cliente (CMEK).

Si se especifica, el disco de arranque de la instancia de Compute Engine y el disco persistente se encriptan con esta clave de encriptación. Si no estableces este campo, los discos se encriptarán con una clave generada. Las claves de encriptación administradas por el cliente no protegen los metadatos del disco.

Si se rota la clave de encriptación administrada por el cliente, cuando se detiene la instancia de estación de trabajo, el sistema intenta volver a crear el disco persistente con la versión nueva de la clave. Asegúrate de conservar las versiones anteriores de la clave hasta que se vuelva a crear el disco persistente. De lo contrario, los datos en el disco persistente podrían perderse.

Si se revoca la clave de encriptación, la sesión de la estación de trabajo se detiene automáticamente en un plazo de 7 horas.

Inmutable después de crear la configuración de la estación de trabajo

readinessChecks[]

object (ReadinessCheck)

Opcional. Verificaciones de preparación que se deben realizar cuando se inicia una estación de trabajo con esta configuración. Marca una estación de trabajo como en ejecución solo después de que todas las verificaciones de preparación especificadas devuelvan códigos de estado 200.

replicaZones[]

string

Opcional. Inmutable. Especifica las zonas que se usan para replicar los recursos de VM y de disco dentro de la región. Si se configura, se deben especificar exactamente dos zonas dentro de la región del clúster de la estación de trabajo, por ejemplo, ['us-central1-a', 'us-central1-f']. Si este campo está vacío, se usan dos zonas predeterminadas dentro de la región.

Inmutable después de crear la configuración de la estación de trabajo

degraded

boolean

Solo salida. Establece si este recurso está degradado. En ese caso, es posible que se requiera una acción del usuario para restablecer la funcionalidad completa. Consulta también el campo conditions.

conditions[]

object (Status)

Solo salida. Condiciones de estado que describen el estado actual del recurso.

enableAuditAgent

boolean

Opcional. Establece si se debe habilitar el registro de auditd de Linux en la estación de trabajo. Cuando se habilita, también se debe especificar una cuenta de servicio que tenga el permiso logging.buckets.write en el proyecto. El registro de auditoría del sistema operativo es distinto de los Registros de auditoría de Cloud.

disableTcpConnections

boolean

Opcional. Inhabilita la compatibilidad con conexiones TCP simples en la estación de trabajo. De forma predeterminada, el servicio admite conexiones TCP a través de una retransmisión de websockets. Configurar esta opción como verdadera inhabilita la retransmisión, lo que impide el uso de servicios que requieren conexiones TCP sin formato, como SSH. Si habilitas esta opción, todas las comunicaciones deberán realizarse a través de HTTPS o WSS.

Host

Host del entorno de ejecución para una estación de trabajo.

Representación 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ón config. El tipo de host que se usará para el entorno de ejecución de la estación de trabajo. config puede ser solo uno de los siguientes:
gceInstance

object (GceInstance)

Especifica una instancia de Compute Engine como host.

GceInstance

Un entorno de ejecución que usa una instancia de Compute Engine

Representación 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. El tipo de máquina que se usará para las instancias de VM, por ejemplo, "e2-standard-4". Para obtener más información sobre los tipos de máquinas compatibles con Cloud Workstations, consulta la lista de tipos de máquina disponibles.

serviceAccount

string

Opcional. La dirección de correo electrónico de la cuenta de servicio de las VMs de Cloud Workstations que se crearon con esta configuración. Cuando se especifique, asegúrate de que la cuenta de servicio tenga el permiso logginglogEntries.create en el proyecto para que pueda escribir registros de salida en Cloud Logging. Si usas una imagen de contenedor personalizada, la cuenta de servicio debe tener permiso de lector de Artifact Registry para extraer la imagen especificada.

Si como administrador deseas poder ssh en la VM subyacente, debes establecer este valor en una cuenta de servicio para la que tengas el permiso iam.serviceAccounts.actAs. Por el contrario, si no deseas que nadie pueda ssh en la VM subyacente, usa una cuenta de servicio en la que nadie tenga ese permiso.

Si no se configura, las VMs se ejecutan con una cuenta de servicio proporcionada por el servicio de Cloud Workstations y la imagen debe ser de acceso público.

serviceAccountScopes[]

string

Opcional. Permisos que se otorgarán a serviceAccount. Se agregan automáticamente varios permisos según el uso de las funciones. Cuando se especifica, los usuarios de las estaciones de trabajo en esta configuración deben tener iam.serviceAccounts.actAs en la cuenta de servicio.

tags[]

string

Opcional. Etiquetas de red para agregar a las VMs de Compute Engine que respaldan las estaciones de trabajo. Esta opción aplica etiquetas de red a las VMs creadas con esta configuración. Estas etiquetas de red permiten la creación de reglas de firewall.

poolSize

integer

Opcional. La cantidad de VMs que el sistema debe mantener inactivo a fin de que las estaciones de trabajo nuevas puedan iniciarse con rapidez para los usuarios nuevos. La configuración predeterminada es 0 en la API.

pooledInstances

integer

Solo salida. Cantidad de instancias disponibles actualmente en el grupo para un inicio más rápido de la estación de trabajo.

disablePublicIpAddresses

boolean

Opcional. Cuando se configura como verdadero, inhabilita las direcciones IP públicas de las VMs. Si inhabilitas las direcciones IP públicas, debes configurar el Acceso privado a Google o Cloud NAT en tu red. Si usas el Acceso privado a Google y usas private.googleapis.com o restricted.googleapis.com para Container Registry y Artifact Registry, asegúrate de configurar registros DNS para los dominios *.gcr.io y *.pkg.dev. La configuración predeterminada es “false” (las VMs tienen direcciones IP públicas).

enableNestedVirtualization

boolean

Opcional. Indica si se debe habilitar la virtualización anidada en las VMs de Cloud Workstations creadas con esta configuración de estación de trabajo.

La virtualización anidada te permite ejecutar instancias de máquina virtual (VM) dentro de tu estación de trabajo. Antes de habilitar la virtualización anidada, ten en cuenta las siguientes consideraciones importantes. Las instancias de Cloud Workstations están sujetas a las mismas restricciones que las instancias de Compute Engine:

  • Política de la organización: Es posible que las organizaciones, los proyectos o las carpetas tengan restricciones para crear VMs anidadas si se aplica la restricción Inhabilitar la virtualización anidada de VM en la política de la organización. Para obtener más información, consulta la sección Verifica si se permite la virtualización anidada de Compute Engine.
  • Rendimiento: Las VMs anidadas pueden experimentar una disminución del 10% o más en el rendimiento de las cargas de trabajo vinculadas a la CPU y posiblemente más del 10% para las que dependen de la entrada y la salida.
  • Tipo de máquina: La virtualización anidada solo se puede habilitar en la configuración de estaciones de trabajo que especifiquen una machineType en la serie de máquinas N1 o N2.
  • GPU: Es posible que la virtualización anidada no se habilite en la configuración de las estaciones de trabajo con aceleradores.
  • Sistema operativo: Como Container-Optimized OS no admite la virtualización anidada, cuando esta se habilita, las instancias de VM de Compute Engine subyacentes se inician desde una imagen de LTS de Ubuntu.
shieldedInstanceConfig

object (GceShieldedInstanceConfig)

Opcional. Un conjunto de opciones de instancias protegidas de Compute Engine.

confidentialInstanceConfig

object (GceConfidentialInstanceConfig)

Opcional. Un conjunto de opciones de instancia de Confidential VM de Compute Engine.

bootDiskSizeGb

integer

Opcional. Es el tamaño del disco de arranque de la VM en gigabytes (GB). El tamaño mínimo del disco de arranque es de 30 GB. La configuración predeterminada es 50 GB.

accelerators[]

object (Accelerator)

Opcional. Una lista del tipo y la cantidad de tarjetas de acelerador conectadas a la instancia.

disableSsh

boolean

Opcional. Indica si se debe inhabilitar el acceso SSH a la VM.

GceShieldedInstanceConfig

Un conjunto de opciones de instancias protegidas de Compute Engine.

Representación JSON

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

boolean

Opcional. Indica si la instancia tiene habilitado el inicio seguro.

enableVtpm

boolean

Opcional. Si la instancia tiene habilitado el vTPM.

enableIntegrityMonitoring

boolean

Opcional. Si la instancia tiene habilitada la supervisión de integridad.

GceConfidentialInstanceConfig

Un conjunto de opciones de instancia de Confidential VM de Compute Engine.

Representación JSON

{
  "enableConfidentialCompute": boolean
}
Campos
enableConfidentialCompute

boolean

Opcional. Indica si la instancia tiene habilitado Confidential Computing.

Acelerador

Una tarjeta de acelerador conectada a la instancia.

Representación JSON

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

string

Opcional. Tipo de recurso de acelerador para conectar a la instancia, por ejemplo, "nvidia-tesla-p100".

count

integer

Opcional. Cantidad de tarjetas de acelerador expuestas a la instancia.

PersistentDirectory

Un directorio para conservar entre sesiones de estación de trabajo.

Representación 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. Es la ubicación de este directorio en la estación de trabajo en ejecución.

Campo de unión directory_type. Cómo se debe implementar un directorio persistente directory_type puede ser solo uno de los siguientes:
gcePd

object (GceRegionalPersistentDisk)

Un PersistentDirectory respaldado por un disco persistente de Compute Engine.

GceRegionalPersistentDisk

Un directorio persistente respaldado por un disco persistente regional de Compute Engine. El campo persistentDirectories está repetido, pero solo puede contener una entrada. Crea un disco persistente que se activa en la VM de la estación de trabajo en /home cuando se inicia la sesión y se desconecta cuando esta finaliza. Si este campo está vacío, las estaciones de trabajo creadas con esta configuración no tendrán un directorio principal persistente.

Representación JSON

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

integer

Opcional. La capacidad de GB de un directorio principal persistente para cada estación de trabajo creada con esta configuración. Debe estar vacío si se configura sourceSnapshot.

Los valores válidos son 10, 50, 100, 200, 500 o 1000. La configuración predeterminada es 200. Si tiene menos de 200 GB, el diskType debe ser "pd-balanced" o "pd-ssd".

fsType

string

Opcional. El tipo de sistema de archivos con el que se debe formatear el disco. La imagen de la estación de trabajo debe ser compatible con este tipo de sistema de archivos. Debe estar vacío si se configura sourceSnapshot. La configuración predeterminada es "ext4".

diskType

string

Opcional. El tipo de disco persistente para el directorio principal La configuración predeterminada es "pd-standard".

sourceSnapshot

string

Opcional. El nombre de la instantánea que se usará como fuente del disco. Si se configuran, sizeGb y fsType deben estar vacíos.

reclaimPolicy

enum (ReclaimPolicy)

Opcional. Establece si el disco persistente debe borrarse cuando se borra la estación de trabajo. Los valores válidos son DELETE y RETAIN. La configuración predeterminada es DELETE.

ReclaimPolicy

Valor que representa lo que debe suceder con el disco después de que se borra la estación de trabajo.

Enums
RECLAIM_POLICY_UNSPECIFIED No se debe usar.
DELETE Borra el disco persistente cuando borres la estación de trabajo.
RETAIN Conserva el disco persistente cuando borres la estación de trabajo. Un administrador debe borrar el disco de forma manual.

EphemeralDirectory

Un directorio efímero que no se conservará entre las sesiones de la estación de trabajo. Se crea en cada operación de inicio de estación de trabajo.

Representación 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

Obligatorio. Es la ubicación de este directorio en la estación de trabajo en ejecución.

Campo de unión directory_type. Cómo se debe implementar un directorio efímero directory_type puede ser solo uno de los siguientes:
gcePd

object (GcePersistentDisk)

Un ephemeralDirectory respaldado por un disco persistente de Compute Engine.

GcePersistentDisk

Un EphemeralDirectory está respaldado por un disco persistente de Compute Engine.

Representación JSON

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

string

Opcional. El tipo de disco que se usará. La configuración predeterminada es "pd-standard".

sourceSnapshot

string

Opcional. El nombre de la instantánea que se usará como fuente del disco. Debe estar vacío si se configura sourceImage. Debe estar vacío si readOnly es falso. Si actualizas sourceSnapshot, se actualizará el contenido del directorio efímero después de que se reinicie la estación de trabajo. Este campo es mutable.

sourceImage

string

Opcional. Nombre de la imagen de disco que se usará como fuente del disco. Debe estar vacío si se configura sourceSnapshot. Si actualizas sourceImage, se actualizará el contenido del directorio efímero después de que se reinicie la estación de trabajo. Este campo es mutable.

readOnly

boolean

Opcional. Si el disco es de solo lectura. Si es verdadero, es posible que varias VM compartan el disco, por lo que se debe configurar sourceSnapshot.

Contenedor

Un contenedor de Docker

Representación JSON

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

string

Opcional. Una imagen de contenedor de Docker que define un entorno personalizado.

Cloud Workstations proporciona una serie de imágenes preconfiguradas, pero puedes crear tus propias imágenes de contenedor personalizadas. Si usas una imagen privada, el campo host.gceInstance.serviceAccount debe especificarse en la configuración de la estación de trabajo. Si usas una imagen de contenedor personalizada, la cuenta de servicio debe tener permiso de lector de Artifact Registry para extraer la imagen especificada. De lo contrario, la imagen debe ser de acceso público.

command[]

string

Opcional. Si está establecido, anula el valor de ENTRYPOINT predeterminado que especifica la imagen.

args[]

string

Opcional. Argumentos pasados al punto de entrada.

env

map (key: string, value: string)

Opcional. Variables de entorno pasadas al punto de entrada del contenedor.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

workingDir

string

Opcional. Si está establecido, anula el valor de DIR predeterminado que especifica la imagen.

runAsUser

integer

Opcional. Si está establecido, anula el parámetro USER especificado en la imagen con el UID dado.

CustomerEncryptionKey

Una clave de encriptación administrada por el cliente (CMEK) para los recursos de Compute Engine de la configuración de la estación de trabajo asociada. Especifica el nombre de tu clave de encriptación de Cloud KMS y la cuenta de servicio predeterminada. Te recomendamos que uses una cuenta de servicio independiente y sigas las prácticas recomendadas de Cloud KMS.

Representación JSON

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

string

Inmutable. El nombre de la clave de encriptación de Google Cloud KMS. Por ejemplo, "projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME". La clave debe estar en la misma región que la configuración de la estación de trabajo.

kmsKeyServiceAccount

string

Inmutable. La cuenta de servicio que se usará con la clave de KMS especificada. Te recomendamos que uses una cuenta de servicio independiente y sigas las prácticas recomendadas de KMS. Consulta Separación de obligaciones y gcloud kms keys add-iam-policy-binding --member para obtener más información.

ReadinessCheck

Una verificación de preparación que se realizará en una estación de trabajo.

Representación JSON

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

string

Opcional. Ruta de acceso a la que se debe enviar la solicitud.

port

integer

Opcional. Puerto al que se debe enviar la solicitud.

Métodos

create

Crea una configuración de estación de trabajo nueva.

delete

Borra la configuración de la estación de trabajo especificada.

get

Muestra la configuración de la estación de trabajo solicitada.

getIamPolicy

Permite obtener la política de control de acceso de un recurso.

list

Muestra todas las configuraciones de las estaciones de trabajo en el clúster especificado.

listUsable

Muestra todas las configuraciones de la estación de trabajo en el clúster especificado en el que el llamador tiene el permiso “workstations.workstation.create”.

patch

Actualiza la configuración de una estación de trabajo existente.

setIamPolicy

Permite configurar la política de control de acceso en el recurso especificado.

testIamPermissions

Permite mostrar los permisos que tiene un emisor para un recurso específico.