Arquitetura do Cloud Workstations

O Cloud Workstations gere Google Cloud recursos, como VMs do Compute Engine e discos persistentes (DPs), para lhe dar mais visibilidade e controlo sobre os recursos dos seus projetos. Por exemplo, pode configurar políticas de instantâneos de disco agendados que aplicam políticas de cópia de segurança a todos os PDs das estações de trabalho. Da mesma forma, ter VMs no seu projeto permite-lhe aceder e gerir facilmente os recursos na sua rede VPC.

O diagrama seguinte ilustra a arquitetura das 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 gere uma coleção de estações de trabalho numa única região da nuvem e rede VPC no seu projeto. Cada cluster de estações de trabalho inclui dois componentes geridos pela Google Cloud: um controlador e um gateway.

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

    Os controladores usam a API Compute Engine para gerir o ciclo de vida dos recursos e usam o Private Service Connect para encaminhar 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 adequada. Cada cluster de estações de trabalho tem um nome de domínio único e cada estação de trabalho pode ser acedida num subdomínio do domínio do cluster de estações de trabalho, por exemplo, $WORKSTATION_ID.$CLUSTER_ID.cloudworkstations.dev.

Seguem-se outras funcionalidades dos clusters de estações de trabalho:

  • Os administradores e as equipas de plataforma criam clusters de estações de trabalho, que definem um grupo de estações de trabalho numa região específica e a rede VPC à qual estão associadas.

  • Os clusters de estações de trabalho não estão relacionados com os clusters do Google Kubernetes Engine (GKE).

  • Cada cluster de estações de trabalho tem um controlador dedicado que está ligado a uma VPC na qual as estações de trabalho residem com o Private Service Connect (e isto não tem impacto nos limites de interligação de VPCs). Este controlador gere os recursos das estações de trabalho ao longo do respetivo ciclo de vida e fornece saída e entrada de rede às estações de trabalho através de um gateway de cluster público.

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

  • Se necessário, também é possível ativar um gateway privado completo, para que apenas os pontos finais na sua rede privada tenham acesso às estações de trabalho do Google Cloud.

Rede da VPC

Quando cria um cluster de estações de trabalho, especifica um projeto e uma rede VPC para alojar os recursos. O Cloud Workstations aprovisiona os seguintes recursos no seu projeto:

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

  • Instância de VM: uma VM do Compute Engine é criada dinamicamente no seu projeto e VPC depois de iniciar uma estação de trabalho. Esta VM é eliminada automaticamente no final de uma sessão do utilizador ou após um limite de tempo da sessão configurável.

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

    • Recipiente: define as ferramentas pré-instaladas numa estação de trabalho, como o IDE ou o editor de código, e quaisquer outros programas ou definições, conforme especificado pela configuração da estação de trabalho.

      As estações de trabalho na nuvem oferecem várias imagens base pré-configuradas com IDEs populares e ferramentas de linguagem. Além disso, os administradores e as equipas de plataforma podem personalizar os respetivos ambientes através da criação e especificação de imagens de contentores personalizadas que contenham as ferramentas necessárias para satisfazer as necessidades dos respetivos programadores. Estas imagens de contentor podem expandir a imagem base das Cloud Workstations ou podem ser imagens de contentor Linux personalizadas e novas criadas pela equipa da plataforma.

  • Disco persistente: um disco persistente associado à VM da estação de trabalho montado na pasta /home, que permite o armazenamento de dados e ficheiros após o fim da sessão.

Ciclo de vida dos recursos

O Cloud Workstations gere VMs, imagens de contentores e discos persistentes para utilização como o ambiente de tempo de execução de cada estação de trabalho. Configure as especificações destes 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. Transfere a imagem do contentor da estação de trabalho para a VM.
  3. A primeira vez que a estação de trabalho é iniciada, cria um disco persistente para funcionar como o diretório /home da estação de trabalho.
  4. Anexa o disco persistente à VM.
  5. Inicia o contentor na VM e monta o disco persistente no diretório /home no contentor.

Quando a sessão termina, o Cloud Workstations elimina a VM, mas desanexa e mantém o disco persistente para que possa ser usado em sessões futuras de estações de trabalho. O serviço de estações de trabalho retém o disco até que a estação de trabalho seja eliminada, momento em que o disco persistente também é eliminado, a menos que esteja configurado opcionalmente para ser retido.

Partilha de recursos

Os administradores e as equipas de plataforma podem agrupar opcionalmente VMs e discos persistentes para um arranque mais rápido da estação de trabalho através da opção de configuração da estação de trabalho tamanho do conjunto. Quando especificado, o serviço agrupa o número especificado de discos persistentes e VMs, e pré-extrai a imagem do contentor para a VM antes da atribuição da estação de trabalho. As VMs e os discos não atribuídos no conjunto são eliminados e recriados automaticamente a cada 12 horas. Isto permite tempos de arranque mais rápidos da estação de trabalho, removendo o tempo de espera para criar VMs e extrair a imagem do contentor para a VM.

Quando a partilha está ativada, o Cloud Workstations faz o seguinte ao iniciar uma estação de trabalho:

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

Quando a sessão termina, o Cloud Workstations elimina a VM, mas desanexa e mantém o disco persistente para que possa ser usado em sessões futuras de estações de trabalho. O serviço de estações de trabalho retém o disco até que a estação de trabalho seja eliminada, momento em que o disco persistente também é eliminado, a menos que esteja configurado opcionalmente para ser retido.

Atualizações de imagens de contentores

Uma vez que a imagem do contentor da estação de trabalho é pré-extraída para as VMs agrupadas, as atualizações à imagem do contentor feitas no repositório de imagens remoto com a mesma etiqueta de imagem não são selecionadas até que todas as VMs agrupadas tenham sido atribuídas ou eliminadas após 12 horas. Nesse momento, são criadas novas VMs para repor o conjunto e extrair a imagem do contentor atualizada.

Para forçar uma atualização do conjunto de recursos de forma a receber imediatamente as atualizações da imagem do contentor, os administradores podem definir pool_size como 0 e, em seguida, voltar a definir o pool_size preferencial. Na Google Cloud consola, desative a funcionalidade Estações de trabalho de início rápido na configuração da estação de trabalho, guarde a configuração, volte a definir o número preferido e, em seguida, guarde novamente.

Em alternativa, os administradores e as equipas de plataformas podem atualizar a etiqueta de imagem no campo container.image na configuração da estação de trabalho, o que força uma atualização do conjunto para obter a nova etiqueta de imagem do contentor.

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

As estações de trabalho na nuvem suportam o streaming de imagens, o que proporciona um tempo de arranque da estação de trabalho mais rápido, reduzindo o tempo de obtenção da imagem do contentor da estação de trabalho.

Normalmente, o streaming de imagens no Cloud Workstations reduz o tempo de obtenção de imagens de contentores de minutos para segundos, e os contentores de estações de trabalho começam a ser executados sem esperar que a imagem completa seja transferida.

Requisitos

Tem de cumprir os seguintes requisitos para usar o streaming de imagens no Cloud Workstations:

  • Tem de ativar a API Container File System no projeto de anfitrião das estações de trabalho.

    Ative a API Container File System

    Em alternativa, pode executar o seguinte comando da CLI gcloud para ativar a API Container File System no projeto anfitrião das estações de trabalho:

    gcloud services enable containerfilesystem.googleapis.com
    

  • As imagens de contentores têm de ser armazenadas no Artifact Registry.

  • Tem de especificar uma conta de serviço para utilização na configuração da estação de trabalho.

  • Se o cluster estiver dentro de um perímetro dos VPC Service Controls, tem de adicionar uma regra de saída que permita à sua conta de serviço aceder à API Container File System no projeto que aloja a imagem do contentor. Se estiver a usar um IDE pré-configurado, tem de adicionar o projeto cloud-workstations-images (número do projeto 662288601415) à lista de autorizações.

Limitações

  • Pode não notar as vantagens do streaming de imagens durante a primeira obtenção de uma imagem elegível. No entanto, depois de o streaming de imagens colocar a imagem em cache, as obtenções de imagens futuras numa estação de trabalho beneficiam do streaming de imagens.

  • Aplicam-se outras limitações de streaming de imagens do GKE.

Limites de tempo de inatividade

Pode configurar as estações de trabalho para serem encerradas automaticamente após um período de inatividade. O limite de tempo de inatividade é reposto em cada pedido de rede recebido e sempre que é emitido o comando da API workstations.Start. Além disso, os IDEs pré-configurados instalados nas imagens da estação de trabalho base são pré-instalados com um plug-in para detetar a interação com o IDE (clique do rato, premir uma tecla, etc.) e repor o limite de tempo de inatividade.

Se iniciar um processo em segundo plano de longa duração e parar de interagir com a estação de trabalho, pode atingir o limite de tempo limite de inatividade. Isto faz com que a estação de trabalho seja encerrada. Se a estação de trabalho tiver de permanecer ativa, acione a chamada da API workstation.Start no processo em segundo plano para evitar o encerramento por inatividade. Por exemplo, se estiver a usar a CLI gcloud, pode fazê-lo executando o comando gcloud workstations start.