Arquitetura do Cloud Workstations

O Cloud Workstations gerencia recursos do Google Cloud, como VMs do Compute Engine e discos permanentes (PDs, na sigla em inglês), para dar mais visibilidade e controle sobre os recursos dos seus projetos. Por exemplo, é possível configurar políticas de instantâneos de disco programados que apliquem políticas de backup para todos os PDs de estações de trabalho. 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 dos Cloud Workstations.

Diagrama
de arquitetura

Figura 1. Arquitetura do Cloud Workstations

Cluster de estações de trabalho

Um cluster de estações de trabalho contém e gerencia uma coleção de estações de trabalho em uma única região de nuvem e rede VPC no 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 da estação de trabalho no projeto.

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

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

Outros recursos dos clusters de estações de trabalho são:

  • 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 região específica e a rede VPC a que elas 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 um VPC em que as estações de trabalho residem com o Private Service Connect. Isso não afeta os limites de peering do VPC. Esse controlador gerencia os recursos das estações de trabalho ao longo do ciclo de vida e oferece saída e entrada de rede para as estações de trabalho por um gateway de cluster público.

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

  • Se necessário, também é possível ativar um gateway particular, para que somente os endpoints dentro da rede particular tenham acesso às Cloud Workstations.

Rede VPC

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

  • Private Service Connect: estabelece uma conexão entre o controlador do Cloud Workstations e a VPC, permitindo a criação de recursos no 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 no final de uma sessão de usuário ou após um tempo limite configurável.

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

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

      O Cloud Workstations oferece várias imagens de base preconceituadas com ambientes de desenvolvimento integrados e ferramentas de linguagem conhecidos. Além disso, administradores e 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 montada 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 o 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, os Cloud Workstations 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, ela cria um disco permanente para atuar como o diretório /home da estação de trabalho.
  4. Anexar o disco permanente à VM.
  5. Inicia o contêiner na VM e monta o disco permanente no diretório /home no 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 da estação de trabalho. O serviço de estações de trabalho retém o disco até que a estação de trabalho seja excluída, momento em que o disco permanente também é excluído, a menos que seja opcionalmente configurado para ser retido.

Pool de recursos

Administradores e equipes de plataforma podem agrupar VMs e discos persistentes para uma inicialização mais rápida da estação de trabalho usando a opção de configuração tamanho do pool. Quando especificado, o serviço agrupa o número especificado de discos e VMs persistentes 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, removendo o tempo de espera para criar VMs e extrair a imagem do contêiner para a VM.

Quando o agrupamento é ativado, o Cloud Workstations faz o seguinte ao iniciar uma estação de trabalho:

  1. Seleciona uma VM do pool que tem a imagem do contêiner pré-extraida.
  2. Na primeira vez que a estação de trabalho é iniciada, um disco permanente é selecionado do pool.
  3. Anexar o disco permanente à VM.
  4. Inicia a imagem do contêiner na VM e monta o disco permanente no diretório /home na imagem do contêiner.
  5. Reabastece o pool criando uma nova VM e um disco permanente para substituir os 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 da estação de trabalho. O serviço de estações de trabalho retém o disco até que a estação de trabalho seja excluída, momento em que o disco permanente também é excluído, a menos que seja opcionalmente configurado para ser retido.

Atualizações de imagem do contêiner

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

Para forçar uma atualização do pool a fim de receber as atualizações da imagem do contêiner imediatamente, os administradores podem definir o pool_size como 0 e, em seguida, definir de volta para o pool_size preferido. No console do 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 novamente para o número de preferência e salve novamente.

Como alternativa, administradores e equipes de plataforma podem atualizar a tag de 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 oferece suporte ao streaming de imagens, que acelera o tempo de inicialização da estação de trabalho reduzindo o tempo de extração da imagem do contêiner.

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

Requisitos

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

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

    Ativar a API Container File System

    Se preferir, execute o comando gcloud da CLI abaixo para ativar a API Container File System no projeto host de estações de trabalho:

    gcloud services enable containerfilesystem.googleapis.com
    

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

  • O repositório do Artifact Registry precisa estar na mesma região que a região Cloud Workstations ou em uma multirregião que corresponde à região em que as estações de trabalho estão em execução.

  • É necessário especificar uma conta de serviço para uso 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 que permita que a 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 armazena a imagem em cache, a imagem futura extrai todos os benefícios do cluster pelo streaming de imagens.

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