Arquitectura de Cloud Workstations

Cloud Workstations administra los recursos de Google Cloud, como las VM 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. Del mismo modo, tener VM dentro de tu proyecto te permite acceder y administrar recursos en tu red de VPC 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 estación de trabajo contiene y administra una colección de estaciones de trabajo en una sola región de la nube y una red de VPC dentro de tu proyecto. Cada clúster de estación 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 del proyecto.

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

  • Puerta de enlace: Recibe tráfico de clientes vinculados a estaciones de trabajo específicas y lo reenvía a la instancia de VM adecuada. Cada clúster de estación 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 la estación de trabajo, por ejemplo, $WORKSTATION_ID.$CLUSTER_ID.cloudworkstations.dev.

A continuación, se incluyen otras funciones de los clústeres de estaciones de trabajo:

  • Los administradores y los equipos de 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 estaciones de trabajo no están relacionados con los clústeres de Google Kubernetes Engine (GKE).

  • Cada clúster de estación 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 del intercambio de tráfico entre VPC). Este controlador administra los recursos de las estaciones de trabajo durante su ciclo de vida y proporciona la entrada y salida de red a las estaciones de trabajo a través de una puerta de enlace de clúster pública.

  • Cada región de la nube requiere al menos un clúster de estación 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 estación de trabajo, debes especificar un proyecto y una red de VPC para alojar los recursos. Luego, Cloud Workstations aprovisionará los siguientes recursos en tu proyecto:

  • Private Service Connect: Establece una conexión entre el controlador de Cloud Workstations y tu VPC, lo que habilita 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 de forma automática al final de una sesión de usuario o después de que se agota el 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 configuración según lo que especifique la configuración de la estación de trabajo.

      Cloud Workstations proporciona una serie de imágenes base preconfiguradas con IDE y herramientas de lenguaje populares. Además, los administradores y los equipos de plataforma pueden personalizar sus entornos mediante la creación y especificación de imágenes de contenedor personalizadas que contienen las herramientas necesarias para satisfacer las necesidades de los desarrolladores. Estas imágenes de contenedor pueden extender la imagen base de Cloud Workstations o pueden ser imágenes de contenedor de Linux nuevas y personalizadas creadas por el equipo de la plataforma.

  • Disco persistente: Un disco persistente conectado a la VM de la estación de trabajo activado en la carpeta /home, lo que permite que los datos y archivos se almacenen después de que finaliza la sesión

Ciclo de vida de los recursos

Cloud Workstations administra las VMs, las imágenes de contenedor y los discos persistentes para usarlos como el entorno de ejecución de cada estación de trabajo. Configura las especificaciones de estos recursos en la configuración de la 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, 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 borra la VM, pero desconecta y retiene el disco persistente para que pueda usarse 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. En ese momento, también se borra el disco persistente, a menos que se configure para retenerlo de forma opcional.

Agrupación de recursos

De manera opcional, los administradores y los equipos de plataforma pueden agrupar VM y discos persistentes para un inicio más rápido de la estación de trabajo mediante la opción de configuración de la estación de trabajo tamaño de grupo. Cuando se especifica, el servicio agrupa la cantidad especificada de discos persistentes y VM, y extrae previamente la imagen del contenedor en la VM antes de la asignación de la estación de trabajo. Las VM y los discos no asignados del grupo se borran de forma automática y se vuelven a crear 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 VM y extrae la imagen del contenedor en la VM.

Cuando la agrupación está habilitada, Cloud Workstations hace lo siguiente cuando se inicia una estación de trabajo:

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

Cuando finaliza la sesión, Cloud Workstations borra la VM, pero desconecta y retiene el disco persistente para que pueda usarse 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. En ese momento, también se borra el disco persistente, a menos que se configure para retenerlo de forma opcional.

Actualizaciones de imágenes de contenedor

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

Para forzar la actualización de un grupo a fin de recoger las actualizaciones de la imagen de 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, guarda la configuración, vuelve a establecerla en el número preferido y, luego, vuelve a guardarla.

Como alternativa, los administradores y los equipos de 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 la actualización del grupo para recoger la etiqueta de imagen de contenedor nueva.

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 la imagen del 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 la imagen del contenedor de minutos a segundos, y los contenedores de estaciones de trabajo, por lo general, comienzan a ejecutarse sin esperar a que se descargue toda la imagen.

Requisitos

Debes cumplir los siguientes requisitos para usar la transmisión de imágenes en Cloud Workstations:

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

    Habilita la API de Container File System

    Como alternativa, puedes ejecutar el siguiente comando de la CLI de gcloud para habilitar la API de Container File System 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 tus estaciones de trabajo.

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

  • Si tu clúster está 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 la imagen en caché, las futuras extracciones de imágenes en una estación de trabajo se benefician de la transmisión de imágenes.

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