Faça a transição para repositórios padrão

Se usar o Container Registry para gerir as suas imagens de contentores, esta página explica como configurar um repositório do pkg.devArtifact Registry e como a utilização de repositórios difere da utilização do Container Registry.

Estas instruções destinam-se principalmente aos administradores do repositório. Para saber como a criação, o envio, a obtenção e a implementação de imagens mudaram, consulte as seguintes informações:

Antes de começar

  1. Ative a API Artifact Registry a partir da Google Cloud consola ou com o comando:

    gcloud services enable artifactregistry.googleapis.com
    
  2. Instale a CLI gcloud se ainda não estiver instalada. Para uma instalação existente, execute o seguinte comando para atualizar os componentes para as versões mais recentes:

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

Funções necessárias

Para receber as autorizações de que precisa para configurar repositórios gcr.io, peça ao seu administrador para lhe conceder as seguintes funções do IAM no Google Cloud projeto:

  • Para criar repositórios do Artifact Registry e conceder acesso a repositórios individuais: Administrador do Artifact Registry (roles/artifactregistry.admin)
  • Para ver e gerir a configuração existente do Container Registry aplicada aos contentores de armazenamento do Cloud Storage: Administrador de armazenamento (roles/storage.admin)
  • Para conceder acesso ao repositório ao nível do projeto: Administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin) ou uma função que inclua autorizações equivalentes, como Administrador da pasta (roles/resourcemanager.folderAdmin) ou Administrador da organização (roles/resourcemanager.organizationAdmin)

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Vista geral

pkg.dev são repositórios normais do Artifact Registry que suportam todas as funcionalidades.

Para simplificar, as instruções nesta página partem do princípio de que o Container Registry e o Artifact Registry estão no mesmo Google Cloud projeto. Pode continuar a usar ambos os serviços à medida que faz a transição para o Artifact Registry, para poder executar gradualmente os passos de configuração e atualizar a sua automatização. Se necessário, pode configurar o Artifact Registry num projeto separado e executar os mesmos passos gerais.

O Artifact Registry também oferece repositórios gcr.io. Estes repositórios podem redirecionar o tráfego gcr.io dos seus registos existentes para os repositórios do Artifact Registry correspondentes. Oferecem alguma compatibilidade com versões anteriores com o Container Registry, mas também têm algumas limitações de funcionalidades. No entanto, se tiver muitas configurações de ferramentas, scripts ou código com referências gcr.io, pode ser necessária uma abordagem mais tática para fazer a transição para o Artifact Registry. Reveja a documentação de transição para repositórios com apoio técnico do domínio gcr.io para ajudar a tomar uma decisão adequada.

Passos de transição

Este guia mostra como concluir os seguintes passos:

  1. Crie um repositório do Docker para os seus contentores. Tem de criar um repositório antes de poder enviar imagens para o mesmo.
  2. Conceda autorizações ao repositório.
  3. Configure a autenticação para poder estabelecer ligação ao seu novo repositório.
  4. Se necessário, copie imagens do Container Registry que quer usar no seu novo repositório.
  5. Experimente enviar e extrair os seus contentores.
  6. Experimente implementar as suas imagens num ambiente de tempo de execução.
  7. Configure funcionalidades adicionais.
  8. Limpe as imagens no Container Registry quando a transição estiver concluída.

Crie repositórios

O Container Registry cria automaticamente um contentor de armazenamento numa multirregião se nunca tiver enviado uma imagem para lá.

No Artifact Registry, tem de criar um repositório antes de poder carregar imagens. Quando cria um repositório, tem de especificar:

  • O formato do repositório. O Artifact Registry armazena contentores em repositórios Docker.
  • Uma localização regional ou multirregional para o repositório.

    Ao escolher uma localização para os repositórios do Artifact Registry, considere a proximidade dos repositórios à sua outra infraestrutura e aos seus utilizadores. Se pretender copiar imagens do Container Registry para o Artifact Registry, as diferenças de localização podem afetar o custo da cópia.

  • Uma chave do Cloud Key Management Service, se estiver a usar chaves de encriptação geridas pelo cliente (CMEK) para encriptação.

    No Container Registry, configure o contentor de armazenamento do Container Registry para usar o CMEK. No Artifact Registry, configura os repositórios para usar a CMEK quando os cria. Para mais informações sobre a utilização das CMEK com o Artifact Registry, consulte o artigo Ativar chaves de encriptação geridas pelo cliente.

O Container Registry aloja contentores no domínio gcr.io. O Artifact Registry aloja contentores no domínio pkg.dev.

Para ver informações sobre a criação de repositórios, incluindo repositórios que usam CMEK para encriptação, consulte o artigo Criar repositórios.

Conceder autorizações

O Container Registry usa funções do Cloud Storage para controlar o acesso. O Artifact Registry tem as suas próprias funções do IAM, e estas funções separam as funções de leitura, escrita e administração do repositório de forma mais clara do que o Container Registry.

Para mapear rapidamente as autorizações existentes concedidas em contentores de armazenamento para as funções sugeridas do Artifact Registry, use a ferramenta de mapeamento de funções.

Em alternativa, pode ver uma lista de responsáveis com acesso aos contentores de armazenamento através da Google Cloud consola.

  1. Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.

    Aceda aos contentores

  2. Clique no contentor de armazenamento do anfitrião do registo que quer ver. Nos nomes dos contentores, PROJECT-ID é o seu 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 no separador Autorizações.

  4. No separador Autorizações, clique no subseparador Vista por função.

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

A lista inclui funções de IAM concedidas diretamente no contentor e funções herdadas do projeto principal. Com base na função, pode escolher a função do Artifact Registry mais adequada para conceder.

Cloud Storage e funções básicas

Conceda aos utilizadores e às contas de serviço que acedem atualmente ao Container Registry acesso aos repositórios do Artifact Registry. Para as funções do Cloud Storage herdadas do projeto principal, deve verificar se o principal usa atualmente o Container Registry. Alguns principais podem aceder apenas a outros contentores do Cloud Storage que não estão relacionados com o Container Registry.

As funções básicas Proprietário, Editor e Visitante que existiam antes do IAM têm acesso limitado aos contentores de armazenamento. Não concedem intrinsecamente todo o acesso aos recursos do Cloud Storage que os respetivos nomes implicam e fornecem autorizações adicionais para outros Google Cloud serviços. Verifique que utilizadores e contas de serviço requerem acesso ao Artifact Registry e use a tabela de mapeamento de funções para ajudar a conceder as funções certas se o acesso ao Artifact Registry for adequado.

A tabela seguinte mapeia as funções do Artifact Registry com base nas autorizações concedidas pelas funções predefinidas do Cloud Storage para acesso ao Container Registry. As funções do Artifact Registry oferecem alguma separação adicional de autorizações que não está disponível nas funções predefinidas do Cloud Storage.

Acesso necessário Função atual Função do Artifact Registry Onde conceder a função
Extrair apenas imagens (só de leitura) Storage Object Viewer
(roles/storage.objectViewer)
Leitor do Artifact Registry
(roles/artifactregistry.reader)
Repositório ou Google Cloud projeto do Artifact Registry
Enviar e receber imagens (leitura e escrita) Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter)
Escritor do Artifact Registry
(roles/artifactregistry.writer)
Repositório ou Google Cloud projeto do Artifact Registry
Envie, extraia e elimine imagens Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter)
Administrador do repositório do Artifact Registry
(roles/artifactregistry.repoAdmin)
Repositório ou Google Cloud projeto do Artifact Registry
Crie, faça a gestão e elimine repositórios Administrador de armazenamento
(roles/storage.admin)
Administrador do Artifact Registry
(roles/artifactregistry.admin)
Google Cloud projeto
Funções de agente do serviço herdadas do projeto

As contas de serviço predefinidas para os Google Cloud serviços têm as suas próprias funções concedidas ao nível do projeto. Por exemplo, o agente do serviço do Cloud Run tem a função de agente do serviço do Cloud Run.

Na maioria dos casos, estas funções de agente de serviço contêm autorizações predefinidas equivalentes para o Container Registry e o Artifact Registry, e não tem de fazer alterações adicionais se estiver a executar o Artifact Registry no mesmo projeto que o seu serviço do Container Registry existente.

Consulte a referência da função de agente de serviço para ver detalhes sobre as autorizações nas funções de agente de serviço.

Funções personalizadas

Use a tabela de mapeamento de funções para ajudar a decidir sobre a função a conceder aos utilizadores ou às contas de serviço com base no nível de acesso de que precisam.

Para obter instruções sobre como conceder funções do Artifact Registry, consulte o artigo Configure funções e autorizações.

Autentique-se no repositório

O Artifact Registry suporta os mesmos métodos de autenticação que o Container Registry.

Se estiver a usar o auxiliar de credenciais do Docker:

  • Tem de usar a versão 2.0 ou posterior para interagir com repositórios do Artifact Registry. A versão autónoma está disponível no GitHub.
  • Tem de configurar o auxiliar de credenciais com as localizações do Artifact Registry que pretende usar. Por predefinição, o auxiliar de credenciais só configura o acesso a anfitriões do Container Registry.

Para ver detalhes sobre a configuração da autenticação, consulte o artigo Configurar a autenticação para o Docker.

Copie contentores do Container Registry

Se existirem contentores no Container Registry que quer continuar a usar no Artifact Registry, existem várias opções para os copiar. Para ver instruções detalhadas, consulte o artigo Copiar imagens do Container Registry

Empurre e puxe imagens

Os comandos do Docker que usa para etiquetar, enviar e extrair imagens no Artifact Registry são semelhantes aos que usa no Container Registry. Existem duas diferenças principais:

  • O nome do anfitrião para repositórios Docker do Artifact Registry inclui um prefixo de localização, seguido de -docker.pkg.dev. Os exemplos incluem australia-southeast1-docker.pkg.dev, europe-north1-docker.pkg.dev e europe-docker.pkg.dev.
  • Uma vez que o Artifact Registry suporta vários repositórios Docker num único projeto, tem de especificar o nome do repositório nos comandos.

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

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

No Artifact Registry, este 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 ver detalhes sobre o envio e a obtenção de imagens no Artifact Registry, consulte o artigo Envio e obtenção de imagens.

Implemente imagens

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

A criação de imagens e o respetivo envio para um repositório com o Cloud Build funciona geralmente da mesma forma que para o Container Registry. A principal diferença no Artifact Registry é que tem de existir um repositório de destino antes de enviar imagens para o mesmo, incluindo a primeira imagem que enviar.

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

Os criadores do Cloud Build continuam alojados em gcr.io. Para mais informações, consulte o artigo Integração com o Cloud Build.

Outras funcionalidades

Esta secção descreve a configuração de outras funcionalidades que pode ter configurado no Container Registry.

Artifact Analysis

A Artifact Analysis suporta o Container Registry e o Artifact Registry. A documentação da Artifact Analysis inclui ambos os produtos.

  • Ambos os produtos usam as mesmas APIs Artifact Analysis. Quando ativa as APIs Artifact Analysis no Container Registry ou no Artifact Registry, as APIs são ativadas para ambos os produtos.
  • Ambos os produtos usam os mesmos tópicos do Pub/Sub para as notificações de análise de artefactos.
  • Pode continuar a usar os comandos gcloud container images para listar notas e ocorrências associadas a caminhos de imagens gcr.io.
Container Registry Artifact Registry
Procura vulnerabilidades do SO e do pacote de idiomas com a análise a pedido em imagens com um SO suportado. A análise automática só devolve informações de vulnerabilidades do SO. Saiba mais sobre os tipos de digitalização.
Análise a pedido
Análise automática
  • O comando da CLI Google Cloud gcloud container images inclui flags para ver os resultados da análise, incluindo vulnerabilidades e outros metadados.
  • As análises só devolvem informações de vulnerabilidades do SO para imagens no Container Registry com sistemas operativos suportados.
Analisa vulnerabilidades do SO e do pacote de idiomas com análise a pedido e automática. Saiba mais sobre os tipos de digitalização.
Análise a pedido
Análise automática
  • O comando da CLI Google Cloud gcloud artifacts docker images inclui flags para ver os resultados da análise, incluindo vulnerabilidades e outros metadados.
  • As análises devolvem informações de vulnerabilidade do SO para imagens no Artifact Registry com sistemas operativos suportados e informações de vulnerabilidade de pacotes de idiomas para sistemas operativos suportados e não suportados.

Notificações do Pub/Sub

O Artifact Registry publica alterações no mesmo tópico do gcr que o Container Registry. Não é necessária nenhuma configuração adicional se já usar o Pub/Sub com o Container Registry no mesmo projeto que o Artifact Registry.

Se configurar o Artifact Registry num projeto separado, o tópico gcr pode não existir. Para ver instruções de configuração, consulte o artigo Configurar notificações do Pub/Sub.

Perímetros de serviço

Com os VPC Service Controls, pode configurar perímetros de segurança em torno dos recursos dos seus serviços geridos pela Google e controlar o movimento de dados no limite do perímetro.

Consulte o artigo Proteger repositórios num perímetro de serviço para obter instruções.

Limpe imagens do Container Registry

Quando estiver a postos para parar de usar o Container Registry, elimine as imagens restantes eliminando os contentores de armazenamento do Container Registry.

Para eliminar cada contentor de armazenamento do Container Registry:

Consola

  1. Aceda à página do Cloud Storage na Google Cloud consola.
  2. Selecione o contentor de armazenamento a eliminar. Nos nomes dos contentores, PROJECT-ID é o seu 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 em Eliminar. É apresentada uma caixa de diálogo de confirmação.

  4. Para confirmar a eliminação, introduza o nome do contentor e, de seguida, clique em Eliminar.

gcloud

Se quiser eliminar em massa cem mil ou mais imagens num contentor, evite usar a CLI gcloud, uma vez que o processo de eliminação demora muito tempo a ser concluído. Em alternativa, use a Google Cloud consola para realizar a operação. Para mais informações, consulte o artigo sobre como eliminar objetos do Cloud Storage em massa.

Para eliminar um contentor, use o comando gcloud storage rm com a flag --recursive.

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

Substitua BUCKET-NAME pelo nome do contentor de armazenamento do Container Registry. Nos nomes dos contentores, PROJECT-ID é o seu 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 tem o seguinte aspeto:

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

Se outros Google Cloud serviços estiverem a ser executados no mesmo Google Cloud projeto, deixe a API Container Registry ativada. Se tentar desativar a Container Registry API. O Container Registry apresenta 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 não esteja a usar atualmente o Container Registry com esses serviços.

O que se segue?