Arquitetura do Cloud Workstations

O Cloud Workstations gerencia recursos do Google Cloud , como VMs do Compute Engine e discos permanentes (DPs), para oferecer mais visibilidade e controle sobre os recursos dos seus projetos. Por exemplo, é possível configurar políticas de instantâneo de disco programado que aplicam políticas de backup para todas as estações de trabalho PDs. Da mesma forma, ter VMs no seu projeto permite acessar e gerenciar recursos na rede VPC sem problemas.

O diagrama a seguir ilustra a arquitetura das Estações de trabalho em nuvem.

Diagrama de arquitetura

Figura 1. Arquitetura do Cloud Workstations

Cluster de estações de trabalho

Um cluster de estação de trabalho contém e gerencia uma coleção de estações de trabalho em uma única região da nuvem e rede VPC dentro do seu projeto. Cada cluster de estação de trabalho inclui dois componentes gerenciados pelo Google Cloud: um controlador e um gateway.

  • Controlador:gerencia o ciclo de vida das instâncias de VM e de outros recursos de estação de trabalho no projeto.

    Os controladores usam a API Compute Engine para gerenciar o ciclo de vida dos recursos e utilizam o Private Service Connect para rotear o tráfego para as VMs das estações de trabalho.

  • Gateway:recebe tráfego de clientes destinados a estações de trabalho específicas e encaminha o tráfego para a instância de VM apropriada. Cada cluster de estação de trabalho tem um nome de domínio exclusivo, e cada estação de trabalho pode ser acessada em um subdomínio do domínio do cluster de estação de trabalho, por exemplo, $WORKSTATION_ID.$CLUSTER_ID.cloudworkstations.dev.

Outros recursos dos clusters de estação de trabalho:

  • Os administradores e as equipes de plataforma criam clusters de estações de trabalho, que definem um grupo de estações de trabalho em uma determinada região e a rede VPC a que estão conectadas.

  • Os clusters da estação de trabalho não estão relacionados aos clusters do Google Kubernetes Engine (GKE).

  • Cada cluster de estação de trabalho tem um controlador dedicado conectado a uma VPC em que as estações de trabalho residem com o Private Service Connect (e isso não afeta os limites de peering de VPC). Esse controlador gerencia os recursos das estações de trabalho durante todo o ciclo de vida delas e fornece saída e entrada de rede para as estações de trabalho por um gateway de cluster público.

  • Cada região da nuvem exige pelo menos um cluster de estação de trabalho.

  • Se necessário, também é possível ativar um gateway particular completo para que apenas endpoints dentro da sua rede particular tenham acesso ao Cloud Workstations.

Rede VPC

Ao criar um cluster de estações de trabalho, você especifica um projeto e uma rede VPC para hospedar os recursos. O Cloud Workstations provisiona os seguintes recursos no seu projeto:

  • Private Service Connect: estabelece uma conexão entre o controlador do Cloud Workstations e sua VPC, permitindo a criação de recursos no seu projeto.

  • Instância de VM: uma VM do Compute Engine é criada dinamicamente no seu projeto e na VPC depois que uma estação de trabalho é iniciada. Essa VM é excluída automaticamente ao final de uma sessão do usuário ou após um tempo limite de sessão configurável.

    • Gateway de VM: extrai o tráfego do cliente do gateway do cluster de estação de trabalho, autentica e autoriza esse tráfego e o encaminha para o contêiner.

    • Contêiner: define as ferramentas pré-instaladas em uma estação de trabalho, como o ambiente de desenvolvimento integrado ou o editor de código, e outros programas ou configurações conforme especificado pela configuração da estação de trabalho.

      As estações de trabalho do Cloud oferecem várias imagens de base pré-configuradas com IDEs e ferramentas de linguagem conhecidas. Além disso, os administradores e as equipes de plataforma podem personalizar os ambientes criando e especificando imagens de contêiner personalizadas que contêm as ferramentas necessárias para atender às necessidades dos desenvolvedores. Essas imagens de contêiner podem estender a imagem de base do Cloud Workstations ou ser novas imagens de contêiner Linux personalizadas criadas pela equipe da plataforma.

  • Disco permanente: um disco permanente anexado à VM da estação de trabalho montado na pasta /home, permitindo que dados e arquivos sejam armazenados após o término da sessão.

Ciclo de vida dos recursos

O Cloud Workstations gerencia VMs, imagens de contêiner e discos permanentes para uso como ambiente de execução de cada estação de trabalho. Configure as especificações desses recursos na configuração da estação de trabalho.

Quando uma estação de trabalho é iniciada, as estações de trabalho do Cloud fazem o seguinte:

  1. Cria uma VM.
  2. Extrai a imagem do contêiner da estação de trabalho para a VM.
  3. Na primeira vez que a estação de trabalho é iniciada, um disco permanente é criado para atuar como o diretório /home da estação de trabalho.
  4. Anexa o disco permanente à VM.
  5. Inicia o contêiner na VM e ativa o disco permanente no diretório /home do contêiner.

Quando a sessão termina, o Cloud Workstations exclui a VM, mas desconecta e mantém o disco permanente para que ele possa ser usado em sessões futuras de estação de trabalho. O serviço de estações de trabalho retém o disco até que a estação seja excluída. Nesse momento, o disco permanente também é excluído, a menos que seja opcionalmente configurado para ser retido.

Pool de recursos

Os administradores e as equipes de plataforma podem agrupar VMs e discos permanentes para uma inicialização mais rápida da estação de trabalho usando a opção de configuração tamanho do pool da estação de trabalho. Quando especificado, o serviço agrupa o número especificado de discos permanentes e VMs e pré-extrai a imagem do contêiner para a VM antes da atribuição da estação de trabalho. As VMs e os discos não atribuídos no pool são excluídos e recriados automaticamente a cada 12 horas. Isso permite tempos de inicialização mais rápidos da estação de trabalho ao remover o tempo de espera para criar VMs e extrair a imagem do contêiner para a VM.

Quando o pool está ativado, as estações de trabalho do Cloud fazem o seguinte ao iniciar uma estação de trabalho:

  1. Seleciona uma VM do pool que tem a imagem de contêiner pré-extraída.
  2. Na primeira vez que a estação de trabalho é iniciada, ela seleciona um disco permanente do pool.
  3. Anexa o disco permanente à VM.
  4. Inicia a imagem de contêiner na VM e monta o disco permanente no diretório /home na imagem de contêiner.
  5. Recarrega o pool criando uma nova VM e um disco permanente para substituir os que foram atribuídos.

Quando a sessão termina, o Cloud Workstations exclui a VM, mas desconecta e mantém o disco permanente para que ele possa ser usado em sessões futuras de estação de trabalho. O serviço de estações de trabalho retém o disco até que a estação seja excluída. Nesse momento, o disco permanente também é excluído, a menos que seja opcionalmente configurado para ser retido.

Atualizações de imagens de contêiner

Como a imagem do contêiner da estação de trabalho é pré-extraída para as VMs agrupadas, as atualizações feitas no repositório de imagens remoto com a mesma tag de imagem não são capturadas até que todas as VMs agrupadas sejam atribuídas ou excluídas após 12 horas. Nesse momento, novas VMs são criadas para reabastecer o pool e extrair a imagem do contêiner atualizada.

Para forçar uma atualização do pool e capturar as atualizações da imagem de contêiner imediatamente, os administradores podem definir pool_size como 0 e, em seguida, voltar para o pool_size preferido. No console Google Cloud , desative o recurso Estações de trabalho de início rápido na configuração da estação de trabalho, salve a configuração, defina-a de volta para o número preferido e salve novamente.

Como alternativa, os administradores e as equipes de plataforma podem atualizar a tag da imagem no campo container.image na configuração da estação de trabalho, o que força uma atualização do pool para capturar a nova tag de imagem do contêiner.

Reduzir o tempo de inicialização da estação de trabalho com o streaming de imagens

O Cloud Workstations é compatível com o streaming de imagens, que oferece um tempo de inicialização mais rápido da estação de trabalho ao reduzir o tempo de extração da imagem do contêiner da estação de trabalho.

O streaming de imagens no Cloud Workstations geralmente reduz o tempo de extração de imagens de contêiner de minutos para segundos, e os contêineres de estação de trabalho geralmente começam a ser executados sem esperar o download completo da imagem.

Requisitos

Você precisa atender aos seguintes requisitos para usar o streaming de imagens no Cloud Workstations:

  • Ative a API Container File System no projeto host das estações de trabalho.

    Ativar a API Container File System

    Como alternativa, execute o seguinte comando da CLI gcloud para ativar a API Container File System no projeto host das estações de trabalho:

    gcloud services enable containerfilesystem.googleapis.com
    

  • As imagens de contêiner precisam ser armazenadas no Artifact Registry.

  • Você precisa especificar uma conta de serviço para usar na configuração da estação de trabalho.

  • Se o cluster estiver dentro de um perímetro do VPC Service Controls, adicione uma regra de saída permitindo que sua conta de serviço acesse a API Container File System no projeto que hospeda a imagem do contêiner. Se você estiver usando um IDE pré-configurado, adicione o projeto cloud-workstations-images (número do projeto 662288601415) à lista de permissões.

Limitações

  • Talvez você não perceba os benefícios do streaming de imagens durante o primeiro pull de uma imagem qualificada. No entanto, depois que o streaming de imagens armazenar a imagem em cache, a imagem futura extrairá todos os benefícios do streaming de imagens em uma estação de trabalho.

  • Outras limitações do streaming de imagens do GKE se aplicam.

Tempos limite de inatividade

É possível configurar as estações de trabalho para serem desligadas automaticamente após um período de inatividade. O tempo limite de inatividade é redefinido em cada solicitação de rede recebida e sempre que a chamada de API workstations.Start é emitida. Além disso, os IDEs pré-configurados instalados nas imagens de estação de trabalho de base vêm pré-instalados com um plug-in para detectar a interação com o IDE (clique do mouse, pressionamento de tecla etc.) e redefinir o tempo limite de inatividade.

Se você iniciar um processo em segundo plano de longa duração e parar de interagir com a estação de trabalho, poderá atingir o limite de tempo limite de inatividade. Isso faz com que a estação de trabalho seja desligada. Se a estação de trabalho precisar ser mantida ativa, use o script /google/scripts/keep_alive.sh presente nas imagens de base para evitar tempos limite de inatividade. Como alternativa, acione a chamada de API workstation.Start no processo em segundo plano para evitar o desligamento por inatividade. Por exemplo, se você estiver usando a Google Cloud CLI, execute o comando gcloud workstations start.