Como usar o Container Registry com o Google Cloud

Para simplificar os fluxos de trabalho de criação e implantação, algumas contas de serviço e ambientes de execução do Google Cloud são pré-configurados com permissões para acessar contêineres armazenados no mesmo projeto.

Esta página resume as integrações comuns com os produtos do Google Cloud e os requisitos associados para acessar contêineres.

Requisitos gerais de acesso

Por padrão, as contas de serviço de algumas integrações comuns são configuradas com as permissões do Cloud Storage para acessar o Container Registry no mesmo projeto.

Para a conta de serviço usada pelas VMs do Compute Engine, incluindo VMs nos clusters do Google Kubernetes Engine, o acesso é baseado nas permissões do IAM e nos escopos de acesso do armazenamento.

Você mesmo precisa configurar ou modificar permissões se:

  • Você está usando uma conta de serviço em um projeto para acessar o Container Registry em um projeto diferente
  • Você está usando uma conta de serviço padrão com acesso somente leitura ao armazenamento, mas quer extrair e enviar imagens
  • Você está usando uma conta de serviço personalizada para interagir com o Container Registry

Consulte as seções específicas do produto para obter informações adicionais.

Cloud Build

Por padrão, a conta de serviço do Cloud Build tem permissões para enviar e extrair imagens quando o Container Registry está no mesmo projeto.

Você precisa configure as permissões apropriadas nos seguintes casos:

  • O Cloud Build está em um projeto diferente dos repositórios que você quer que as versões acessem.
  • Suas versões estão usando uma conta de serviço diferente da conta de serviço padrão do Cloud Build. Nesse caso, você precisa conceder à conta de serviço permissões para acessar o Container Registry.

Google Compute Engine

É possível criar instâncias de VM usando imagens armazenadas no Container Registry.

Permissões necessárias

Se a instância de VM e o Container Registry estiverem no mesmo projeto do Google Cloud, a conta de serviço padrão do Compute Engine será configurada com permissões para extrair imagens.

Se a instância de VM estiver em um projeto diferente ou se ela usar uma conta de serviço diferente, será necessário conceder as permissões apropriadas para acessar o intervalo de armazenamento usado pelo Container Registry.

Por padrão, uma VM do Compute Engine tem o escopo de acesso read-only configurado para os buckets de armazenamento. Para enviar imagens particulares do Docker, a instância de VM precisa ter o escopo de acesso de armazenamento read-write.

Para detalhes sobre permissões e escopos de acesso, consulte Como integrar com serviços do Google Cloud.

Como implantar imagens

Ao criar uma VM, é possível implantar uma imagem nela. Para saber mais, consulte a documentação do Compute Engine sobre como implantar contêineres e criar modelos de instâncias de VM.

Instâncias do Compute Engine otimizadas para contêineres

Para mais informações sobre como iniciar uma instância do Compute Engine otimizada para contêineres usando uma imagem no registro, consulte Como iniciar um contêiner do Docker via cloud-config.

Para mais informações, consulte Como criar e configurar instâncias.

Google Kubernetes Engine

O Google Kubernetes Engine usa a conta de serviço configurada nas instâncias de VM dos nós do cluster para enviar e extrair imagens por push e pull.

Permissões necessárias

Se o cluster do Google Kubernetes Engine e do Container Registry estiverem no mesmo projeto do Google Cloud, a conta de serviço padrão do Compute Engine será configurada com as permissões apropriadas para enviar ou extrair imagens.

Se o cluster estiver em um projeto diferente ou se as VMs no cluster usarem uma conta de serviço diferente, você precisará conceder as permissões apropriadas para acessar o intervalo de armazenamento usado pelo Container Registry.

Por padrão, uma VM do Compute Engine tem o escopo de acesso read-only configurado para os buckets de armazenamento. Para enviar imagens particulares do Docker, a instância de VM precisa ter o escopo de acesso de armazenamento read-write.

Para detalhes sobre permissões e escopos de acesso, consulte Como integrar com serviços do Google Cloud.

Como executar uma imagem

É possível executar uma imagem do Container Registry em um cluster do Google Kubernetes Engine usando o comando a seguir:

kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

em que:

  • [NAME] é o nome do recurso;
  • [HOSTNAME] está listado em Location no console. É uma das quatro opções: gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.
  • [PROJECT-ID] é o ID do projeto do console do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
  • [IMAGE] é o nome da imagem no Container Registry;
  • [TAG] é a tag que identifica a versão da imagem no Container Registry. Se você não especificar uma tag, o Container Registry procurará a tag padrão latest.

Para mais informações sobre os comandos do Kubernetes, consulte Visão geral do kubectl (em inglês).

Cloud Run

É possível implantar imagens armazenadas no Container Registry no Cloud Run.

Permissões necessárias

Para implantar no Cloud Run, você precisa ter o papel de Proprietário ou Editor, os papéis de Administrador e Usuário da conta de serviço do Cloud Run ou qualquer papel personalizado que inclua esta lista específica de permissões.

Como implantar imagens

Para saber como implantar uma imagem no Cloud Run, consulte a documentação do Cloud Run.

Ambiente flexível do App Engine

É possível usar o Ambiente flexível do App Engine para personalizar um ambiente de execução existente, como Java 8, ou fornecer o próprio ambiente de execução fornecendo uma imagem personalizada do Docker ou Dockerfile.

Com o Cloud Build, é possível automatizar a criação dos seus contêineres, enviá-los para o Container Registry e implantá-los no App Engine.

Permissões necessárias

Por padrão, a conta de serviço padrão do App Engine tem permissões para extrair e enviar para repositórios no mesmo projeto.

Se o App Engine estiver em um projeto diferente, será preciso conceder à conta de serviço do App Engine permissões para acessar o repositório do Container Registry.

Como implantar no App Engine

É possível implantar uma imagem hospedada pelo Container Registry no App Engine usando a Google Cloud CLI.

  1. Crie o arquivo de configuração do App Engine para seu aplicativo.
  2. Crie uma imagem do Docker e push para o repositório. Use o Cloud Build para criar e enviar seu contêiner para o repositório.
  3. Para implantar a imagem no App Engine, execute o seguinte comando:

    gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

onde:

  • [HOSTNAME] está listado em Location no console. É uma das quatro opções: gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.
  • [PROJECT-ID] é o ID do projeto do console do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
  • [IMAGE] é o nome da imagem no Container Registry;
  • [TAG] é a tag que identifica a versão da imagem no Container Registry. Se você não especificar uma tag, o Container Registry procurará a tag padrão latest.