Arquitetura do Cloud Workstations

O Cloud Workstations gerencia recursos do Google Cloud, como o Compute Engine VMs e discos permanentes (DPs), para dar a você mais visibilidade e controle sobre os do Google Cloud. Por exemplo, é possível configurar snapshots de discos programados políticas que aplicam políticas de backup para todos os DPs de estações de trabalho. Da mesma forma, ter VMs no seu projeto permite acessar e gerenciar recursos na rede VPC de forma simples.

O diagrama a seguir ilustra a arquitetura das estações de trabalho do Cloud.

Arquitetura
diagrama

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 única região da nuvem e VPC rede dentro da sua 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 alcançado em um subdomínio do domínio do cluster da estação de trabalho, 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 de estações de trabalho não estão relacionados Google Kubernetes Engine (GKE) clusters.

  • 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. Isso não afeta os limites de peering da 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 de nuvem requer pelo menos um cluster de estação de trabalho.

  • Se necessário, também é possível ativar uma configuração particular gateway, de modo que somente endpoints em sua rede privada têm acesso a o Cloud Workstations.

Rede VPC

Ao criar um cluster de estações de trabalho, você especifica um projeto e um rede VPC para hospedar os recursos. Cloud Workstations provisiona os seguintes recursos no 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.

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

    • 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 fornece 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 esses recursos em sua estação de trabalho do Terraform.

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, ela 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 /home no contêiner.

Quando a sessão termina, o Cloud Workstations exclui a VM, mas remove e retém o disco permanente para que ele possa ser usado em uma estação de trabalho futura de conteúdo. O serviço de estações de trabalho retém o disco até que a estação 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 automaticamente excluídos e recriados a cada 12 horas. Isso permite uma inicialização mais rápida da estação de trabalho vezes, 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 for iniciada, seleciona um disco permanente 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. Preenche o pool novamente criando uma nova VM e um disco permanente para substituí-los que foram atribuídas.

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 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 de volta 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 normalmente reduz a extração de imagens do contêiner de minutos para segundos, e os contêineres de estações de trabalho geralmente começam a ser exibidos sem esperar o download da imagem inteira.

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

    Como alternativa, execute o seguinte comando da CLI gcloud para ative 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 das estações de trabalho do Cloud ou em uma multirregião que corresponde à região em que as estações de trabalho estão em execução.

  • Especifique uma conta de serviço para uso na estação de trabalho configuração do Terraform.

  • 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 imagens, 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.