Como usar os ambientes de execução do Google Cloud Deploy

Um ambiente de execução do Google Cloud Deploy é o ambiente em que o Google Cloud Deploy executa as operações de renderização e implantação. O ambiente de execução consiste no seguinte:

  • O pool de workers do Cloud Build (padrão ou privado) em que o Google Cloud Deploy executa operações de renderização e implantação.

  • A conta de serviço (padrão ou alternativa) que chama o Google Cloud Deploy para executar essas ações.

  • O local de armazenamento (padrão ou alternativo) para manifestos renderizados no Cloud Storage.

Este artigo descreve o ambiente de execução padrão, as contas de serviço e o armazenamento do Google Cloud Deploy, além de por que e como você pode alterar esses padrões.

Padrões

Veja a seguir os padrões que o Google Cloud Deploy usa para executar, para renderizar e implantar, e para armazenar recursos, como manifestos renderizados:

  • Pool de workers padrão

    Por padrão, o Google Cloud Deploy é executado no pool de workers padrão do Cloud Build. No entanto, é possível configurar o Google Cloud Deploy para usar um pool de workers particulares do Cloud Build.

    Para mais detalhes sobre pools de workers, consulte a Visão geral dos pools padrão e particulares do Cloud Build.

  • Conta de serviço de execução padrão

    Por padrão, o Google Cloud Deploy usa a conta de serviço padrão do Compute Engine.

  • Local padrão de armazenamento do Google Cloud Deploy

    Esse valor é o bucket do Cloud Storage em que o Google Cloud Deploy armazena os manifestos renderizados. Por padrão, o Google Cloud Deploy cria um bucket do Cloud Storage na mesma região dos recursos do Google Cloud Deploy, da seguinte forma:

    <location>.deploy-artifacts.<project ID>.appspot.com

As seções a seguir descrevem as circunstâncias em que você alteraria qualquer um desses valores, além de links para instruções sobre como fazer isso.

Sobre os pools de workers padrão e particulares

O ambiente de execução padrão é o pool padrão do Cloud Build. Esse pool de workers padrão é um ambiente seguro e hospedado com acesso à Internet pública. As operações de renderização e implantação são executadas nesse pool, isoladas de outras cargas de trabalho.

Os pools de workers particulares são pools particulares e dedicados que podem ser personalizados além do pool de workers padrão. Essa personalização pode permitir o acesso a recursos em uma rede privada.

Assim como o pool de workers padrão, os pools de workers particulares são hospedados e totalmente gerenciados pelo Cloud Build. Esses pools podem ser escalonados verticalmente ou reduzidos a zero, sem infraestrutura para configurar, fazer upgrade ou escalonamento.

A visão geral dos pools de workers particulares do Cloud Build descreve com mais detalhes os pools de workers padrão e os particulares, incluindo uma tabela de comparação dos respectivos recursos.

Como alterar o ambiente de execução do Google Cloud Deploy

É possível alterar o ambiente de execução do Google Cloud Deploy nas seguintes circunstâncias:

  • Você quer implantar em um cluster privado do Google Kubernetes Engine.

  • Você quer que as operações de renderização ou implantação, ou ambas, sejam realizadas em um ambiente isolado de outras organizações.

  • Você quer executar essas operações em um ambiente que não esteja conectado à Internet pública.

  • Você quer ambientes separados para renderizar e implantar.

  • Você quer usar uma conta de serviço dedicada com permissões mais específicas do que as permissões disponíveis na conta de serviço padrão.

  • Você quer armazenar manifestos renderizados em um local diferente do bucket padrão do Cloud Storage.

A configuração das três partes do ambiente de execução (pool de workers, conta de serviço e armazenamento) é feita por destino na configuração YAML de cada destino.

Como mudar do pool padrão para um pool particular

Você configura pools de workers por destino. Dessa maneira, o pool é usado para RENDER ou DEPLOY (ou ambos) apenas para esse destino.

Para usar o pool de workers padrão para operações de renderização e implantação, não é necessário fazer nada.

Este é um exemplo de configuração de destino que especifica um pool de workers particular para DEPLOY e o pool de workers padrão para RENDER:

executionConfigs:
- privatePool:
    workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
  usages:
  - DEPLOY
- defaultPool:
  usages:
  - RENDER

Para mais informações sobre como configurar pools particulares para destinos, consulte Documentação de configuração do pipeline de entrega.

Como usar o pool padrão para RENDER e DEPLOY

Se você estiver configurando defaultPool para definir os usos (RENDER | DEPLOY) sem uma conta de serviço ou um local de armazenamento alternativo, inclua chaves vazias: defaultPool: {}.

Como alterar do padrão para a conta de serviço de execução personalizada

Assim como no pool de workers, é possível especificar uma conta de serviço alternativa para renderização ou implantação (ou ambas) por destino. Para fazer isso, adicione a seguinte linha à configuração de destino, após o elemento workerPool:

serviceAccount: "[name]@[project_name].iam.googleapis.com"

A conta de serviço especificada precisa incluir o papel clouddeploy.jobRunner, conforme descrito no documento Contas de serviço do Google Cloud Deploy.

Consulte Definições de destino para mais detalhes sobre essa configuração.

Como alterar o local de armazenamento

Para alterar o bucket de armazenamento do padrão do Google Cloud Deploy, adicione a seguinte linha à definição de destino na estrofe privatePool ou defaultPool:

artifactStorage: "gs://[bucket_name]/[dir]"

Essa configuração muda onde os manifestos renderizados são armazenados, mas não afeta o local em que a origem da renderização é armazenada.

Como implantar em um cluster particular em uma rede de nuvem privada virtual

É possível configurar um destino para implantar em um cluster particular do GKE conectado a uma rede da nuvem privada virtual:

  1. Crie seu cluster particular

    Trata-se de um cluster nativo de VPC em que os nós e os pods são isolados por padrão da Internet pública.

  2. No Cloud Build, crie um pool de workers particulares que possa ser usado para implantar nesse cluster particular.

  3. Configure o ambiente de execução para usar esse pool privado.

    Use este pool para RENDER. Você também pode usá-lo para DEPLOY. Veja um exemplo que usa ambos:

    executionConfigs:
    - privatePool:
        workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
      usages:
      - RENDER
      - DEPLOY
    

Consulte Como acessar clusters particulares do GKE com pools particulares do Cloud Build para mais informações.

Considerações sobre projetos e permissões

É simples configurar um destino para usar um pool de workers particular que possa ser implantado em um cluster particular. No entanto, há alguns pontos a serem observados se os recursos estiverem em projetos diferentes.

Quando o Google Cloud Deploy e o pool de workers estão em projetos separados

Para se comunicar com um pool privado que tenha acesso a uma VPC e que esteja em um projeto diferente do destino, o agente de serviço do Google Cloud Deploy precisa de permissões suficientes para se comunicar. esse projeto.

A conta de serviço de execução também precisa de permissões para acessar o bucket do Cloud Storage.

Quando o pool de workers e o cluster estão em projetos separados

Se o cluster particular do GKE estiver em um projeto diferente do pool de workers particulares, a conta de serviço de execução exigirá permissões suficientes para se comunicar com o projeto em que o cluster está.

Como usar o Google Cloud Deploy em um perímetro do VPC Service Controls

O Google Cloud Deploy é compatível (Beta) com VPC Service Controls.

Siga o guia de início rápido do VPC Service Controls para configurar um perímetro de serviço.

Limitações

  • Use um pool de workers particular do Cloud Build para o ambiente de execução do destino, e não um pool híbrido e não o pool de workers padrão.

  • O projeto que contém o pool de workers e o projeto que contém os recursos do Google Cloud Deploy precisa permanecer no mesmo perímetro de segurança do VPC Service Controls.

  • Qualquer cluster do GKE implantado no perímetro do VPC Service Controls precisa ser um cluster particular.

    Para configurar um pool privado de um cluster particular, consulte este tutorial.

A seguir