Transição para repositórios padrão

Se você usa o Container Registry para gerenciar as imagens de contêiner, esse explica como configurar um repositório padrão do Artifact Registry e como usar repositórios é diferente do Container Registry.

Estas instruções são principalmente para administradores de repositórios. Para saber como criar, enviar, extrair e implantar imagens mudou, consulte as seguintes informações:

Antes de começar

  1. Ative a API Artifact Registry no console do Google Cloud ou com o comando:

    gcloud services enable artifactregistry.googleapis.com
    
  2. Instale a gcloud CLI se ainda não tiver feito isso. instalado. Para uma instalação atual, execute o comando abaixo para atualizar os componentes para as versões mais recentes:

    gcloud components update
    
  3. Saiba mais sobre os preços do Artifact Registry até antes de iniciar a transição.

Funções exigidas

Para receber as permissões necessárias para configurar repositórios do gcr.io, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto do Google Cloud:

  • Para criar repositórios do Artifact Registry e conceder acesso a repositórios individuais: Administrador do Artifact Registry (roles/artifactregistry.admin)
  • Para visualizar e gerenciar a configuração do Container Registry aplicada aos buckets de armazenamento do Cloud Storage: Administrador do Storage (roles/storage.admin)
  • Para conceder acesso ao repositório no nível do projeto: Administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin) ou um papel que inclua permissões equivalentes, como administrador da pasta (roles/resourcemanager.folderAdmin) ou administrador da organização (roles/resourcemanager.organizationAdmin)

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Visão geral

Os repositórios padrão são repositórios regulares do Artifact Registry que dão suporte a todos os recursos.

Para simplificar, as instruções nesta página presumem que o Container Registry e o Artifact Registry estão no mesmo projeto do Google Cloud. É possível continuar usando os dois serviços durante a transição para o Artifact Registry, de modo que seja possível executar gradualmente as etapas de configuração e atualizar sua automação. Se necessário, configure o Artifact Registry em um projeto separado e execute as mesmas etapas gerais.

O Artifact Registry também oferece repositórios gcr.io. Esses repositórios podem redirecionar o tráfego de gcr.io dos registros atuais aos repositórios correspondentes do Artifact Registry. Eles oferecem algumas têm compatibilidade com versões anteriores do Container Registry, mas também limitações. No entanto, se você tiver muitas configurações de ferramentas, scripts ou códigos com referências gcr.io, talvez seja necessário usar uma abordagem mais tática para fazer a transição para o Artifact Registry. Consulte a documentação de transição para repositórios com suporte ao domínio gcr.io para ajudar você a tomar uma decisão adequada.

Etapas da transição

Neste guia, mostramos como concluir as seguintes etapas:

  1. Crie um repositório do Docker para seus contêineres. É preciso criar um repositório antes de enviar imagens para ele.
  2. Conceda permissões ao repositório.
  3. Configure a autenticação para se conectar ao novo repositório.
  4. Se necessário, copie imagens do Container Registry. que você quer usar no novo repositório.
  5. Tente enviar e extrair seus contêineres.
  6. Tente implantar as imagens em um ambiente de execução.
  7. Configure recursos adicionais.
  8. Limpar imagens no Container Registry quando a transição for feita concluído.

Criar repositórios

O Container Registry cria automaticamente um bucket de armazenamento em uma multirregião, se você já não tiver enviado uma imagem para a multirregião.

No Artifact Registry, é preciso criar um repositório antes de fazer upload de imagens. Ao criar um repositório, você precisa especificar:

  • O formato do repositório. O Artifact Registry armazena contêineres em repositórios do Docker.
  • Um local regional ou multirregional para o repositório.

    Ao escolher um local para os repositórios do Artifact Registry, considere a proximidade deles à outra infraestrutura e seus usuários. Se você pretende copiar imagens do Container Registry para o Artifact Registry, as diferenças no local podem afetar o custo da cópia.

  • Uma chave do Cloud Key Management Service, se você estiver usando chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para criptografia.

    No Container Registry, configure o bucket de armazenamento do Container Registry para usar CMEK. No Artifact Registry, você configura repositórios para usar CMEK ao criá-los. Para mais informações sobre o uso de CMEK com o Artifact Registry, consulte Como ativar chaves de criptografia gerenciadas pelo cliente.

O Container Registry hospeda contêineres no domínio gcr.io. O Artifact Registry hospeda contêineres no domínio pkg.dev.

Para informações sobre como criar repositórios, incluindo repositórios que usam CMEK para criptografia, consulte Como criar repositórios.

Conceder permissões

O Container Registry usa os papéis do Cloud Storage para controlar o acesso. O Artifact Registry tem o próprio IAM papéis e esses papéis separam as funções de leitura, gravação e administração de repositório Container Registry.

Para mapear rapidamente as permissões concedidas em buckets de armazenamento para papéis sugeridos do Artifact Registry, use a ferramenta de mapeamento de papéis.

Como alternativa, é possível conferir uma lista dos principais com acesso ao armazenamento usando o console do Google Cloud.

  1. No Console do Google Cloud, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Clique no bucket de armazenamento do host de registro que você quer visualizar. Nos nomes dos buckets, PROJECT-ID é o Google Cloud ID do projeto.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Clique na guia Permissões.

  4. Na guia "Permissões", clique na subguia Visualizar por função.

  5. Expanda uma função para ver os principais que têm essa função.

A lista inclui papéis do IAM concedidos diretamente no bucket e papéis herdados do projeto pai. Com base na função, é possível escolher o papel mais apropriado no Artifact Registry para conceder.

Cloud Storage e papéis básicos

Conceda aos usuários e às contas de serviço que acessam o Container Registry acesso aos repositórios do Artifact Registry. Para papéis do Cloud Storage herdados do projeto pai, verifique se o principal usa o Container Registry. Alguns princípios podem acessar apenas outros buckets do Cloud Storage que não estão relacionados ao Container Registry.

Os papéis básicos de proprietário, editor e leitor que existiam antes do IAM têm acesso limitado aos buckets de armazenamento. Elas não dão intrinsecamente todo o acesso ao Cloud Storage recursos que seus nomes indicam e fornecem permissões adicionais para outros serviços do Google Cloud. Verifique quais usuários e contas de serviço precisam de acesso ao Artifact Registry e use a tabela de mapeamento de papéis para ajudar a conceder os papéis certos, se o acesso ao Artifact Registry for adequado.

A tabela a seguir mapeia os papéis do Artifact Registry com base nas permissões concedidas pelos papéis predefinidos do Cloud Storage para acesso ao Container Registry. Artifact Registry os papéis fornecem separação extra de permissões que não estão disponíveis nos papéis predefinidos do Cloud Storage.

Acesso necessário Papel atual Função do Artifact Registry Onde conceder o papel
Extrair apenas imagens (somente leitura) Leitor de objetos do Storage
(roles/storage.objectViewer)
Leitor do Artifact Registry
(roles/artifactregistry.reader)
Repositório do Artifact Registry ou projeto do Google Cloud
Enviar e extrair imagens (leitura e gravação) Gravador de bucket legado do Storage
(roles/storage.legacyBucketWriter)
Gravador do Artifact Registry
(roles/artifactregistry.writer)
Repositório do Artifact Registry ou projeto do Google Cloud
Enviar, extrair e excluir imagens Gravador de bucket legado do Storage
(roles/storage.legacyBucketWriter)
Administrador de repositórios do Artifact Registry
(roles/artifactregistry.repoAdmin)
repositório do Artifact Registry ou projeto do Google Cloud;
Criar, gerenciar e excluir repositórios Administrador do Storage
(roles/storage.admin)
Administrador do Artifact Registry
(roles/artifactregistry.Admin)
Projeto do Google Cloud
Papéis de agente de serviço herdados do projeto

As contas de serviço padrão para serviços do Google Cloud têm papéis próprios concedidos no nível do projeto. Por exemplo, o agente de serviço O Cloud Run tem o papel de agente de serviço do Cloud Run.

Na maioria dos casos, esses papéis de agente de serviço contêm as permissões do Container Registry e do Artifact Registry. não será necessário fazer alterações adicionais se você estiver executando Artifact Registry no mesmo projeto que o Container Registry atual serviço.

Consulte a referência de função de agente de serviço para detalhes sobre as permissões em funções de agente de serviço.

Papéis personalizados

Use a tabela de mapeamento de funções para ajudar você a decidir sobre o conceder a usuários ou contas de serviço com base no nível de acesso de acordo com a necessidade.

Para instruções sobre como conceder papéis do Artifact Registry, consulte Configurar papéis e permissões.

Autenticar no repositório

O Artifact Registry é compatível com os mesmos métodos de autenticação do Container Registry.

Se estiver usando o auxiliar de credenciais do Docker:

  • Você precisa usar a versão 2.0 ou posterior para interagir com os repositórios do Artifact Registry. A versão independente está disponível no GitHub.
  • Configure o auxiliar de credenciais com os locais do Artifact Registry que você pretende usar. Por padrão, o auxiliar de credenciais só configura o acesso aos hosts do Container Registry.

Para detalhes sobre como configurar a autenticação, consulte Como configurar a autenticação para o Docker.

Copiar contêineres do Container Registry

Se houver contêineres do Container Registry que você quer continuar usando no Artifact Registry, há várias opções para copiá-los. Para instruções detalhadas, consulte Como copiar imagens do Container Registry.

Enviar e extrair imagens

Os comandos do Docker que você usa para marcar, enviar e extrair imagens no Artifact Registry são semelhantes aos usados no Container Registry. Há duas diferenças principais:

  • O nome do host para os repositórios do Docker do Artifact Registry incluem um prefixo de local seguido por -docker.pkg.dev. Os exemplos incluem australia-southeast1-docker.pkg.dev, europe-north1-docker.pkg.dev e europe-docker.pkg.dev.
  • Como o Artifact Registry é compatível com vários repositórios do Docker em um único projeto, você precisa especificar o nome do repositório nos comandos.

Por exemplo, no Container Registry, esse comando envia a imagem my-image para o registro eu.gcr.io no projeto my-project.

docker push eu.gcr.io/my-project/my-image

No Artifact Registry, esse comando envia a imagem my-image para o repositório regional europe-north1-docker.pkg.dev no repositório my-repo e no projeto my-project.

docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image

Para detalhes sobre como enviar e extrair imagens no Artifact Registry, consulte Como enviar e extrair imagens.

Implantar imagens

As contas de serviço para integrações comuns do Google Cloud são configuradas com permissões padrão para repositórios no mesmo projeto.

Criar imagens e enviá-las a um repositório com o Cloud Build geralmente funciona da mesma maneira que o Container Registry. A principal diferença no Artifact Registry é que precisa existir um repositório de destino antes de enviar imagens para ele, incluindo a primeira imagem a ser enviada.

Certifique-se de criar os repositórios necessários antes de executar comandos que enviam imagens, incluindo o comando docker push do Docker e o comando gcloud builds submit do Cloud Build.

Os builders do Cloud Build ainda estão hospedados em gcr.io. Para mais informações, consulte Como integrar com o Cloud Build.

Outros recursos

Nesta seção, descrevemos a configuração de outros recursos que você pode ter configurado no Container Registry.

Artifact Analysis

O Artifact Analysis é compatível com o Container Registry e o Artifact Registry. A documentação do Artifact Analysis inclui os dois produtos.

  • Os dois produtos usam as mesmas APIs do Artifact Analysis. Quando você ativa as APIs Artifact Analysis no Container Registry ou no Artifact Registry, elas são ativadas para os dois produtos.
  • Os dois produtos usam os mesmos tópicos do Pub/Sub para Notificações do Artifact Analysis.
  • Você pode continuar usando os comandos gcloud container images para listar notas e ocorrências associadas aos caminhos de imagem gcr.io.
Container Registry Artifact Registry
Verifica se há vulnerabilidades no SO e no pacote de idiomas com a verificação sob demanda em imagens com um SO compatível. A verificação automática só retorna informações de vulnerabilidades do SO. Saiba mais sobre os tipos de verificação.
Verificação sob demanda
Verificação automática
  • O comando da CLI do Google Cloud gcloud container images inclui sinalizações para visualizar os resultados da verificação, incluindo vulnerabilidades e outros metadados.
  • As verificações só retornam informações de vulnerabilidade do SO para imagens no Container Registry com sistemas operacionais compatíveis.
Verifica vulnerabilidades do SO e do pacote de linguagem com verificação sob demanda e automática. Saiba mais sobre os tipos de verificação.
Verificação sob demanda
Verificação automática
  • O comando da CLI do Google Cloud gcloud artifacts docker images inclui flags para visualizar os resultados da verificação, incluindo vulnerabilidades e outros metadados.
  • As verificações retornam informações de vulnerabilidade do SO para imagens no Artifact Registry com sistemas operacionais compatíveis e pacote de idiomas informações de vulnerabilidade de sistemas operacionais sistemas.

Notificações do Pub/Sub

O Artifact Registry publica alterações no mesmo tópico gcr do Container Registry. Nenhuma outra configuração é necessária se você já usa o Pub/Sub com o Container Registry no mesmo projeto que o Artifact Registry.

Se você configurar o Artifact Registry em um projeto separado, o tópico gcr poderá não existir. Para instruções de configuração, consulte Como configurar notificações do Pub/Sub.

Perímetros de serviço

Com VPC Service Controls, é possível configurar os perímetros de segurança em torno dos recursos dos serviços gerenciados pelo Google e controlar a movimentação de dados por todo o limite do perímetro.

Para mais instruções, consulte Como proteger repositórios em um perímetro de serviço.

Limpar imagens do Container Registry

Quando quiser parar de usar o Container Registry, exclua o restante imagens excluindo os buckets de armazenamento do Container Registry.

Para excluir cada bucket de armazenamento do Container Registry:

Console

  1. Acesse a página do Cloud Storage no console do Google Cloud.
  2. Selecione o bucket de armazenamento que será excluído. Nos nomes dos buckets, PROJECT-ID é o ID do projeto do Google Cloud.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Clique em Excluir. Uma caixa de diálogo de confirmação será exibida.

  4. Para confirmar a exclusão, digite o nome do bucket e clique em Excluir.

gcloud

Se você quiser excluir em massa cem mil ou mais imagens de um bucket, evite usar a CLI gcloud, já que o processo de exclusão demora muito tempo para conclusão. Use o console do Google Cloud para realizar a operação. Para mais informações, consulte como excluir objetos do Cloud Storage em massa.

Para excluir um bucket, use o comando gcloud storage rm com a flag --recursive.

gcloud storage rm gs://BUCKET-NAME --recursive

Substitua BUCKET-NAME pelo nome do bucket de armazenamento do Container Registry. Nos nomes dos buckets, PROJECT-ID é o Google Cloud ID do projeto.

  • gcr.io: artifacts.PROJECT-ID.appspot.com
  • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
  • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
  • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com

A resposta terá esta aparência:

Removing gs://artifacts.my-project.appspot.com/...

Se outros serviços do Google Cloud estiverem em execução no mesmo serviço deixe a API Container Registry ativada. Se você tentar desativar a API Container Registry. O Container Registry mostra um aviso se outros serviços com uma dependência configurada estiverem ativados no projeto. A desativação da API Container Registry desativa automaticamente todos os serviços no mesmo projeto com uma dependência configurada, mesmo que você não esteja usando o Container Registry com esses serviços.

A seguir