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 projetos. Por exemplo, é possível configurar políticas programadas de snapshots do disco que aplicam políticas de backup a todos os DPs de estações de trabalho. Da mesma forma, ter VMs dentro do seu projeto permite acessar e gerenciar recursos na sua rede VPC sem problemas.

O diagrama a seguir ilustra a arquitetura do 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 dentro do 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 outros recursos da estação de trabalho dentro do projeto.

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

  • Gateway: recebe tráfego de clientes vinculados 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 são os seguintes:

  • 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 anexadas.

  • Os clusters de 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 dentro da qual as estações de trabalho residem com o Private Service Connect (e isso não afeta os limites de peering da VPC). Ele 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 meio de um gateway de cluster público.

  • Cada região do Cloud requer pelo menos um cluster de estação de trabalho.

  • Se necessário, também é possível ativar um gateway totalmente particular, para que apenas os endpoints dentro da rede particular tenham acesso ao 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. 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 dentro do projeto.

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

    • Gateway de VM: extrai o tráfego de cliente do gateway do cluster de estação de trabalho, o autentica e autoriza 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 todos os outros programas ou configurações, conforme especificado pela configuração da estação de trabalho.

      O Cloud Workstations oferece várias imagens de base pré-configuradas com ambientes de desenvolvimento integrado conhecidos e ferramentas de linguagem. Além disso, administradores e equipes de plataforma podem personalizar os próprios 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 base do Cloud Workstations ou podem ser novas imagens de contêiner personalizadas do Linux 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. Defina as especificações desses recursos na configuração da estação de trabalho.

Quando uma estação de trabalho é iniciada, o Cloud Workstations faz 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, cria um disco permanente 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 monta o disco permanente no diretório /home do contêiner.

Quando a sessão termina, o Cloud Workstations exclui a VM, mas remove 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. Nesse momento, o disco permanente também será excluído, a menos que seja configurado para armazenamento opcional.

Pool de recursos

Os administradores e as equipes de plataforma podem agrupar VMs e discos permanentes para acelerar a inicialização da estação de trabalho usando a opção de configuração da estação de trabalho tamanho do pool. Quando especificado, o serviço agrupa o número especificado de discos permanentes e VMs e extrai previamente 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 extraindo a imagem do contêiner para a VM.

Quando o pool está 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é-extraída.
  2. Na primeira vez que a estação de trabalho é iniciada, seleciona um disco permanente do pool.
  3. Anexa 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. 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 remove 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. Nesse momento, o disco permanente também será excluído, a menos que seja configurado para armazenamento opcional.

Atualizações de imagens de contêiner

Como a imagem do contêiner da estação de trabalho é pré-extraída para as VMs em pool, as atualizações da imagem do contêiner feitas no repositório de imagens remotas com a mesma tag de imagem não serão capturadas até que todas as VMs em pool tenham sido atribuídas ou excluídas após 12 horas. Nesse ponto, 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 para coletar as atualizações de imagem do contêiner imediatamente, os administradores podem definir pool_size como 0 e, em seguida, configurá-lo 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 de volta para o número preferencial e salve novamente.

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

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

O Cloud Workstations oferece suporte para streaming de imagens, que proporciona tempo de inicialização mais rápido da estação de trabalho ao reduzir o tempo de pull da imagem do contêiner da estação de trabalho.

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 das estações 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:

  • Você precisa ativar a API Container File System no projeto host das estações de trabalho.

    Ativar a API Container File System

    Se preferir, execute o seguinte comando gcloud da CLI 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.

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

  • Especifique 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 permitindo que sua conta de serviço acesse a API Container File System no projeto que hospeda a imagem de contêiner. Se você estiver usando um ambiente de desenvolvimento integrado pré-configurado, precisará adicionar 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 a armazena em cache, as futuras pulls de imagens em uma estação de trabalho se beneficiam do streaming de imagens.

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