Se você usa o Container Registry para gerenciar suas imagens de contêiner, esta página explica como configurar um repositório padrão do Artifact Registry e como usar os repositórios é diferente do uso do Container Registry.
Estas instruções são principalmente para administradores do repositório. Para saber como a criação, o envio, o pull e a implantação de imagens mudaram, consulte as seguintes informações:
Antes de começar
Ative a API Artifact Registry no Console do Google Cloud ou com o comando:
gcloud services enable artifactregistry.googleapis.com
Instale a CLI do gcloud, se ela 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
Saiba mais sobre os preços do Artifact Registry antes de iniciar a transição.
Funções exigidas
Para receber as permissões necessárias para configurar repositórios gcr.io, peça ao seu administrador que conceda 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 ver e gerenciar a configuração atual 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 de IAM do projeto (
roles/resourcemanager.projectIamAdmin
) ou um papel que inclua permissões equivalentes, como Administrador de pastas (roles/resourcemanager.folderAdmin
) ou Administrador de organização (roles/resourcemanager.organizationAdmin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Informações gerais
Os repositórios padrão são repositórios regulares do Artifact Registry compatíveis com 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. Você pode continuar usando os dois serviços ao fazer a transição para o Artifact Registry para realizar gradualmente as etapas de configuração e atualizar a 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 gcr.io
dos registros existentes
para os repositórios do Artifact Registry correspondentes. Elas oferecem alguma compatibilidade com versões anteriores do Container Registry, mas também têm algumas limitações de recursos. No entanto, se você tiver muitas configurações
de ferramentas, scripts ou código com referências de gcr.io
, uma abordagem mais tática
pode ser necessária para fazer a transição para o Artifact Registry. Revise a documentação de transição para repositórios com suporte de domínio gcr.io para ajudar a tomar uma decisão apropriada.
Etapas da transição
Este guia mostra como concluir as seguintes etapas:
- Crie um repositório do Docker para seus contêineres. É preciso criar um repositório antes de enviar imagens para ele.
- Conceda permissões ao repositório.
- Configure a autenticação para se conectar ao novo repositório.
- Se necessário, copie as imagens do Container Registry que você quer usar no seu novo repositório.
- Tente enviar e extrair seus contêineres.
- Tente implantar as imagens em um ambiente de execução.
- Configure recursos adicionais.
- Limpe as imagens no Container Registry quando a transição for concluída.
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 papéis do Cloud Storage para controlar o acesso. O Artifact Registry tem os próprios papéis do IAM. Esses papéis separam os papéis de administração de leitura, gravação e repositório de maneira mais clara do que o Container Registry.
Para mapear rapidamente as permissões atuais concedidas em buckets de armazenamento para os papéis sugeridos do Artifact Registry, use a ferramenta de mapeamento de papéis.
Como alternativa, é possível ver uma lista de principais com acesso a buckets de armazenamento usando o console do Google Cloud.
- No Console do Google Cloud, acesse a página Buckets do Cloud Storage.
Clique no bucket de armazenamento do host de registro que você quer ver. Nos nomes de bucket,
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
- gcr.io:
Clique na guia Permissões..
Na guia "Permissões", clique na subguia Ver por papel.
Expanda um papel para ver os principais que o têm.
A lista inclui papéis do IAM concedidos diretamente no bucket e papéis herdados do projeto pai. Com base no papel, é possível escolher o papel mais apropriado do Artifact Registry a ser concedido.
- Cloud Storage e papéis básicos
Conceda a usuários e contas de serviço que acessam o Container Registry com acesso aos repositórios do Artifact Registry. Para os papéis do Cloud Storage herdados do projeto pai, verifique se o principal usa o Container Registry atualmente. Algumas principais só podem acessar outros buckets do Cloud Storage nã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. Eles não dão intrínseca todo o acesso aos recursos do Cloud Storage que os nomes implicam e fornecem permissões adicionais para outros serviços do Google Cloud. Verifique quais usuários e contas de serviço exigem acesso ao Artifact Registry e use a tabela de mapeamento de papéis para ajudar a conceder os papéis corretos se o acesso ao Artifact Registry for apropriado.
A tabela a seguir mapeia papéis do Artifact Registry com base nas permissões concedidas por papéis predefinidos do Cloud Storage para acesso ao Container Registry. Os papéis do Artifact Registry fornecem uma separação adicional de permissões que não está disponível nos papéis predefinidos do Cloud Storage.
Acesso necessário Papel atual Papel do Artifact Registry Onde conceder papel Extrair somente 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 imagens push e pull (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 do repositório 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 os próprios papéis concedidos no nível do projeto. Por exemplo, o agente de serviço do Cloud Run tem o papel de agente de serviço do Cloud Run.
Na maioria dos casos, esses papéis contêm permissões padrão equivalentes para o Container Registry e o Artifact Registry, e não será necessário fazer outras alterações se você estiver executando o Artifact Registry no mesmo projeto do serviço do Container Registry.
Consulte a referência do papel de agente de serviço para detalhes sobre as permissões nos papéis dele.
- Papéis personalizados
Use a tabela de mapeamento de papéis para decidir qual papel conceder a usuários ou contas de serviço com base no nível de acesso exigido.
Para ver 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.
Imagens push e pull
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 incluemaustralia-southeast1-docker.pkg.dev
,europe-north1-docker.pkg.dev
eeurope-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 do Artifact Analysis no Container Registry ou no Artifact Registry, as APIs são ativadas para os dois produtos.
- Os dois produtos usam os mesmos tópicos do Pub/Sub para notificações de análise de artefatos.
- É possível continuar usando os comandos gcloud container images para listar as observações e ocorrências associadas aos caminhos de imagem
gcr.io
.
Container Registry | Artifact Registry |
---|---|
Busca por vulnerabilidades do sistema operacional e do pacote de idiomas com a verificação sob demanda em imagens com um sistema operacional compatível. A verificação automática retorna apenas informações sobre a vulnerabilidade do SO.
Saiba mais sobre os tipos de verificação.
|
Procura vulnerabilidades do sistema operacional e do pacote de idiomas com verificações sob demanda e automáticas.
Saiba mais sobre os tipos de verificação.
|
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 você estiver pronto para parar de usar o Container Registry, exclua as imagens restantes excluindo os buckets de armazenamento do Container Registry.
Para excluir cada bucket de armazenamento do Container Registry:
Console
- Acesse a página do Cloud Storage no Console do Google Cloud.
Selecione o bucket de armazenamento a ser excluído. Nos nomes de bucket,
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
- gcr.io:
Clique em Excluir. Uma caixa de diálogo de confirmação é exibida.
Para confirmar a exclusão, digite o nome do bucket e clique em Excluir.
gsutil
Se você quiser excluir em massa cem mil imagens ou mais em um bucket, evite usar a gsutil, já que o processo de exclusão leva muito tempo para ser concluído. Use o console do Google Cloud para realizar a operação.
Para excluir um bucket, use o comando gsutil rm
com a sinalização -r
.
gsutil rm -r gs://BUCKET-NAME
Substitua BUCKET-NAME
pelo nome do bucket de armazenamento do Container Registry. Nos nomes de bucket, 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
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 projeto, deixe a API Container Registry ativada. Se você tentar desativar a API Container Registry. O Container Registry exibe um aviso se outros serviços com uma dependência configurada estiverem ativados no projeto. Desativar a API Container Registry desativa automaticamente todos os serviços no mesmo projeto com uma dependência configurada, mesmo se você não estiver usando o Container Registry atualmente com esses serviços.
A seguir
- Veja o guia de início rápido do Docker.