Arquitectura de Cloud Workstations

Cloud Workstations administra recursos de Google Cloud, como las VMs de Compute Engine y los discos persistentes (PD), para brindarte más visibilidad y control sobre los recursos de tus proyectos. Por ejemplo, puedes configurar políticas de instantáneas de disco programadas que apliquen políticas de copia de seguridad para todos los PD de las estaciones de trabajo. De manera similar, tener VMs dentro de tu proyecto te permite acceder a los recursos de tu red de VPC y administrarlos sin problemas.

En el siguiente diagrama, se ilustra la arquitectura de Cloud Workstations.

Diagrama de arquitectura

Figura 1: Arquitectura de Cloud Workstations

Clúster de la estación de trabajo

Un clúster de estaciones de trabajo contiene y administra una colección de estaciones de trabajo en una sola región de nube y una red de VPC dentro de tu proyecto. Cada clúster de estaciones de trabajo incluye dos componentes que administra Google Cloud: un controlador y una puerta de enlace.

  • Controlador: Administra el ciclo de vida de las instancias de VM y otros recursos de la estación de trabajo dentro de tu proyecto.

    Los controladores usan la API de Compute Engine para administrar el ciclo de vida de los recursos y Private Service Connect para enrutar el tráfico a las VMs de las estaciones de trabajo.

  • Puerta de enlace: Recibe tráfico de clientes destinados a estaciones de trabajo específicas y lo reenvía a la instancia de VM adecuada. Cada clúster de estaciones de trabajo tiene un nombre de dominio único, y se puede acceder a cada estación de trabajo en un subdominio del dominio del clúster de estaciones de trabajo, por ejemplo, $WORKSTATION_ID.$CLUSTER_ID.cloudworkstations.dev.

Estas son otras características de los clústeres de estaciones de trabajo:

  • Los administradores y los equipos de la plataforma crean clústeres de estaciones de trabajo, que definen un grupo de estaciones de trabajo en una región en particular y la red de VPC a la que están conectadas.

  • Los clústeres de las estaciones de trabajo no están relacionados con los clústeres de Google Kubernetes Engine (GKE).

  • Cada clúster de estaciones de trabajo tiene un controlador dedicado que está conectado a una VPC en la que residen las estaciones de trabajo con Private Service Connect (y esto no tiene ningún impacto en los límites de intercambio de tráfico entre VPC). Este controlador administra los recursos de las estaciones de trabajo durante su ciclo de vida y proporciona la salida y entrada de red a las estaciones de trabajo a través de una puerta de enlace de clúster pública.

  • Cada región de nube requiere al menos un clúster de estaciones de trabajo.

  • Si es necesario, también es posible habilitar una puerta de enlace privada por completo, de modo que solo los extremos dentro de tu red privada tengan acceso a Cloud Workstations.

Red de VPC

Cuando creas un clúster de estaciones de trabajo, debes especificar un proyecto y una red de VPC para alojar los recursos. Luego, Cloud Workstations aprovisiona los siguientes recursos en tu proyecto:

  • Private Service Connect: Establece una conexión entre el controlador de Cloud Workstations y tu VPC, lo que permite la creación de recursos dentro de tu proyecto.

  • Instancia de VM: Una VM de Compute Engine se crea de forma dinámica dentro de tu proyecto y VPC después de que se inicia una estación de trabajo. Esta VM se borra automáticamente al final de una sesión del usuario o después de un tiempo de espera de la sesión configurable.

    • Puerta de enlace de VM: Extrae el tráfico del cliente de la puerta de enlace del clúster de la estación de trabajo, lo autentica y autoriza, y lo reenvía al contenedor.

    • Contenedor: Define las herramientas preinstaladas en una estación de trabajo, como el IDE o el editor de código, y cualquier otro programa o parámetro de configuración que especifique la configuración de la estación de trabajo.

      Cloud Workstations proporciona varias imágenes base preconfiguradas con IDEs y herramientas de lenguaje populares. Además, los administradores y los equipos de la plataforma pueden personalizar sus entornos creando y especificando imágenes de contenedor personalizadas que contengan las herramientas necesarias para satisfacer las necesidades de sus desarrolladores. Estas imágenes de contenedor pueden extender la imagen base de Cloud Workstations o ser imágenes de contenedor de Linux nuevas y personalizadas que creó el equipo de la plataforma.

  • Disco persistente: Es un disco persistente conectado a la VM de la estación de trabajo montado en la carpeta /home, lo que permite almacenar datos y archivos después de que finaliza la sesión.

Ciclo de vida de los recursos

Cloud Workstations administra VMs, imágenes de contenedores y discos persistentes para usarlos como entorno de ejecución de cada estación de trabajo. Configura las especificaciones de estos recursos en la configuración de tu estación de trabajo.

Cuando se inicia una estación de trabajo, Cloud Workstations hace lo siguiente:

  1. Crea una VM.
  2. Extrae la imagen del contenedor de la estación de trabajo a la VM.
  3. La primera vez que se inicia la estación de trabajo, se crea un disco persistente para que actúe como el directorio /home de la estación de trabajo.
  4. Conecta el disco persistente a la VM.
  5. Inicia el contenedor en la VM y activa el disco persistente en el directorio /home del contenedor.

Cuando finaliza la sesión, Cloud Workstations borran la VM, pero desconectan y retienen el disco persistente para que se pueda usar en sesiones futuras de la estación de trabajo. El servicio de estaciones de trabajo retiene el disco hasta que se borra la estación de trabajo, momento en el que también se borra el disco persistente, a menos que se configure de forma opcional para que se retenga.

Agrupación de recursos

De manera opcional, los administradores y los equipos de la plataforma pueden agrupar VMs y discos persistentes para iniciar estaciones de trabajo más rápido con la opción de configuración de la estación de trabajo tamaño del grupo. Cuando se especifica, el servicio agrupa la cantidad especificada de discos y VMs persistentes, y extrae previamente la imagen del contenedor en la VM antes de la asignación de la estación de trabajo. Las VMs y los discos no asignados en el grupo se borran y se vuelven a crear automáticamente cada 12 horas. Esto permite tiempos de inicio de la estación de trabajo más rápidos, ya que quita el tiempo de espera para crear VMs y extrae la imagen del contenedor a la VM.

Cuando el grupo está habilitado, Cloud Workstations hace lo siguiente cuando inicia una estación de trabajo:

  1. Selecciona una VM del grupo que tenga la imagen del contenedor extraída previamente.
  2. La primera vez que se inicia la estación de trabajo, se selecciona un disco persistente del grupo.
  3. Conecta el disco persistente a la VM.
  4. Inicia la imagen de contenedor en la VM y activa el disco persistente en el directorio /home de la imagen de contenedor.
  5. Para volver a llenar el grupo, crea una VM y un disco persistente nuevos para reemplazar los que se asignaron.

Cuando finaliza la sesión, Cloud Workstations borran la VM, pero desconectan y retienen el disco persistente para que se pueda usar en sesiones futuras de la estación de trabajo. El servicio de estaciones de trabajo retiene el disco hasta que se borra la estación de trabajo, momento en el que también se borra el disco persistente, a menos que se configure de forma opcional para que se retenga.

Actualizaciones de imágenes de contenedores

Debido a que la imagen del contenedor de la estación de trabajo se extrae previamente en las VMs agrupadas, las actualizaciones de la imagen del contenedor realizadas en el repositorio de imágenes remoto con la misma etiqueta de imagen no se detectan hasta que se asignan o borran todas las VMs agrupadas después de 12 horas. En ese momento, se crean VMs nuevas para reabastecer el grupo y extraer la imagen del contenedor actualizada.

Para forzar una actualización del grupo para que detecte las actualizaciones de la imagen del contenedor de inmediato, los administradores pueden establecer pool_size en 0 y, luego, volver a establecerlo en el pool_size preferido. En la consola de Google Cloud, inhabilita la función Estaciones de trabajo de inicio rápido en la configuración de la estación de trabajo, guárdala, vuelve a establecerla en el número preferido y, luego, vuelve a guardarla.

Como alternativa, los administradores y los equipos de la plataforma pueden actualizar la etiqueta de imagen en el campo container.image de la configuración de la estación de trabajo, lo que fuerza una actualización del grupo para que tome la nueva etiqueta de imagen del contenedor.

Reduce el tiempo de inicio de la estación de trabajo con la transmisión de imágenes

Cloud Workstations admite la transmisión de imágenes, que proporciona un tiempo de inicio más rápido de la estación de trabajo, ya que reduce el tiempo de extracción de imágenes de contenedor de la estación de trabajo.

Por lo general, la transmisión de imágenes en Cloud Workstations reduce el tiempo de extracción de imágenes de contenedor de minutos a segundos, y los contenedores de estaciones de trabajo suelen comenzar a ejecutarse sin esperar a que se descargue toda la imagen.

Requisitos

Para usar la transmisión de imágenes en Cloud Workstations, debes cumplir con los siguientes requisitos:

  • Debes habilitar la API de Container File System en el proyecto host de las estaciones de trabajo.

    Habilita la API del sistema de archivos de contenedor

    Como alternativa, puedes ejecutar el siguiente comando de la CLI de gcloud para habilitar la API del sistema de archivos de contenedores en el proyecto host de las estaciones de trabajo:

    gcloud services enable containerfilesystem.googleapis.com
    

  • Tus imágenes de contenedor se deben almacenar en Artifact Registry.

  • El repositorio de Artifact Registry debe estar en la misma región que la región de Cloud Workstations o en una multirregión que corresponda a la región en la que se ejecutan las estaciones de trabajo.

  • Debes especificar una cuenta de servicio para usarla en la configuración de tu estación de trabajo.

  • Si tu clúster se encuentra dentro de un perímetro de Controles del servicio de VPC, debes agregar una regla de salida que permita que tu cuenta de servicio acceda a la API de Container File System en el proyecto que aloja tu imagen de contenedor. Si usas un IDE preconfigurado, debes agregar el proyecto cloud-workstations-images (número de proyecto 662288601415) a la lista de entidades permitidas.

Limitaciones

  • Es posible que no notes los beneficios de la transmisión de imágenes durante la primera extracción de una imagen apta. Sin embargo, después de que la transmisión de imágenes almacena en caché la imagen, las futuras imágenes extraen cualquier beneficio del clúster de la transmisión de imágenes.

  • Se aplican otras limitaciones de la transmisión de imágenes de GKE.