Este documento explica como configurar manualmente repositórios gcr.io
no
Artifact Registry.
Recomendamos o uso da nossa ferramenta de migração automática para
fazer a transição para repositórios gcr.io
no Artifact Registry.
Se você quiser criar repositórios gcr.io
no Artifact Registry usando
chaves de criptografia gerenciadas pelo cliente (CMEK),
conclua as etapas em Antes de começar e siga
as instruções em Criação manual de repositórios.
Antes de começar
Instale a Google Cloud CLI se ela ainda não estiver instalada. Para uma instalação atual, execute o seguinte comando para atualizar os componentes para as versões mais recentes:
gcloud components update
Ative as APIs Artifact Registry e Resource Manager. A CLI gcloud usa a API Resource Manager para verificar se há uma das permissões necessárias.
Execute este comando:
gcloud services enable \ cloudresourcemanager.googleapis.com \ artifactregistry.googleapis.com
Saiba mais sobre os pricing 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 administrador para conceder a você os papéis do IAM a seguir 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 do Cloud Storage:
Administrador do Storage (
roles/storage.admin
) -
Para criar um repositório
gcr.io
na primeira vez que você enviar uma imagem para um nome de hostgcr.io
: Gravador Create-on-push do Artifact Registry (roles/artifactregistry.createOnPushWriter
) -
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 da organização (roles/resourcemanager.organizationAdmin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Limitações
As seguintes limitações se aplicam a repositórios com suporte ao domínio gcr.io
:
- Não é possível mapear um host do Container Registry para um repositório do Artifact Registry em um projeto diferente.
- Cada nome do host do Container Registry é mapeado para apenas um repositório
gcr.io
correspondente do Artifact Registry na mesma multirregião. - Os nomes dos repositórios do
gcr.io
são predefinidos e não podem ser modificados.
Se você precisar de mais controle sobre a localização dos seus repositórios, faça a transição
para repositórios padrão no domínio
pkg.dev
do Artifact Registry. Como os repositórios padrão não têm suporte para o
domínio gcr.io
, essa abordagem de transição exige mais alterações na automação e nos fluxos de trabalho
atuais. Consulte Escolher uma opção de transição para saber mais sobre as diferenças dos recursos.
Criar repositórios
Crie repositórios gcr.io
para configurar o acesso dos usuários e copiar as imagens atuais do Container Registry para o Artifact Registry antes de ativar o redirecionamento.
Criação rápida de repositórios
Estas etapas criam repositórios gcr.io
que são criptografados com
chaves de propriedade do Google e gerenciadas pelo Google. Se você quiser usar chaves de criptografia gerenciadas
pelo cliente (CMEK, na sigla em inglês), será necessário criar repositórios
manualmente.
Para criar repositórios gcr.io
:
Abra a página Repositórios no console do Google Cloud.
Na página, um banner exibe a mensagem
You have gcr.io repositories in Container Registry
.No banner, clique em Create
gcr.io
repositories.O painel Criar
gcr.io
repositórios é aberto. A seção Como copiar imagens lista os nomes totalmente qualificados de cada repositório que será criado. Você precisará desses nomes de repositório se quiser copiar imagens do Container Registry antes de ativar o redirecionamento.Clique em Criar.
O Artifact Registry cria repositórios gcr.io
para todos os nomes de host
do Container Registry:
Nome do host do Container Registry | Nome do repositório do Artifact Registry |
---|---|
gcr.io | gcr.io |
asia.gcr.io | asia.gcr.io |
eu.gcr.io | eu.gcr.io |
us.gcr.io | us.gcr.io |
Para conferir o URL do Artifact Registry para o repositório, mantenha o
ponteiro sobre o ícone de aviso ()
ao lado do nome do repositório.
Antes de redirecionar o tráfego para os novos repositórios, você precisa garantir que a automação existente possa acessar o repositório. A próxima etapa é configurar permissões para conceder acesso a repositórios.
Criação manual de repositório
Crie repositórios gcr.io
manualmente se você quiser usar
chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar
o conteúdo do repositório ou se houver uma restrição de local na
organização do Google Cloud que impeça a criação de novos recursos em
locais específicos.
Para criar manualmente um repositório gcr.io:
Se você estiver usando CMEK, crie a chave que você usará com este repositório e conceda permissões para usar a chave. Consulte Como ativar chaves de criptografia gerenciadas pelo cliente.
Adicione o repositório.
Console
Abra a página Repositórios no console do Google Cloud.
Clique em Criar repositório.
Especifique o nome do repositório.
Nome do host do Container Registry Nome do repositório do Artifact Registry gcr.io gcr.io asia.gcr.io asia.gcr.io eu.gcr.io eu.gcr.io us.gcr.io us.gcr.io Especifique o Docker como o formato do repositório.
Em Tipo de local, especifique a multirregião do repositório:
Nome do host do Container Registry Local do repositório do Artifact Registry gcr.io us asia.gcr.io asia eu.gcr.io europe us.gcr.io us Adicione uma descrição para o repositório. Não inclua dados sensíveis, porque as descrições do repositório não são criptografadas.
Na seção Criptografia, escolha o mecanismo de criptografia do repositório.
- Chave gerenciada pelo Google: criptografe o conteúdo do repositório com uma chave de propriedade e gerenciada pelo Google.
- Chave gerenciada pelo cliente: criptografe o conteúdo do repositório com uma chave controlada por você por meio do Cloud Key Management Service. Para instruções de configuração de chaves, consulte Como configurar CMEK para repositórios.
Clique em Criar.
gcloud
Execute o comando abaixo para criar um novo repositório.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION \ --description=DESCRIPTION \ --kms-key=KMS-KEY
Substitua os seguintes valores:
REPOSITORY é o nome do repositório.
Nome do host do Container Registry Nome do repositório do Artifact Registry gcr.io gcr.io asia.gcr.io asia.gcr.io eu.gcr.io eu.gcr.io us.gcr.io us.gcr.io LOCATION é a multirregião do repositório:
Nome do host do Container Registry Local do repositório do Artifact Registry gcr.io us asia.gcr.io asia eu.gcr.io europe us.gcr.io us DESCRIPTION é uma descrição do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
KMS-KEY é o caminho completo para a chave de criptografia do Cloud KMS, se você estiver usando uma chave de criptografia gerenciada pelo cliente para criptografar o conteúdo do repositório. O caminho está no formato:
projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
Substitua os seguintes valores:
- KMS-PROJECT é o projeto em que a chave está armazenada.
- KMS-LOCATION é o local da chave.
- KEY-RING é o nome do keyring.
- KEY é o nome da chave.
Para confirmar se o repositório foi criado, liste seus repositórios com o seguinte comando:
gcloud artifacts repositories list
Antes de redirecionar o tráfego para os novos repositórios, você precisa garantir que a automação existente possa acessar o repositório. A próxima etapa é configurar permissões para conceder acesso a repositórios.
Conceder permissões a repositórios
O Container Registry usa os papéis do Cloud Storage para controlar o acesso. O Artifact Registry tem os próprios papéis do IAM, e eles separam os papéis de leitura, gravação e administração de repositório de maneira mais clara do que o Container Registry.
Para associar rapidamente as permissões concedidas em buckets de armazenamento a papéis sugeridos do Artifact Registry, use a ferramenta de mapeamento de papéis.
Como alternativa, é possível consultar uma lista das principais com acesso aos 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 visualizar. 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
- gcr.io:
Clique na guia Permissões.
Na guia "Permissões", clique na subguia Visualizar por função.
Expanda um papel para consultar os principais que têm esse papel.
A lista inclui os papéis do IAM concedidos diretamente no bucket e os herdados do projeto pai. Com base no papel, é possível escolher o papel mais apropriado do Artifact Registry para conceder.
- Cloud Storage e papéis básicos
Conceda aos usuários e contas de serviço que atualmente 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. Alguns principais 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 a buckets de armazenamento. Eles não dão intrinsecamente todo o acesso aos recursos do Cloud Storage 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 exigem acesso ao Artifact Registry e use a tabela de mapeamento de papéis para ajudar a conceder os papéis certos, caso o acesso ao Artifact Registry seja apropriado.
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.
Acesso necessário Papel atual Papel no 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)
- 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 Crie um repositório gcr.io no Artifact Registry na primeira vez que uma imagem for enviada para um nome de host gcr.io em um projeto. Administrador do Storage
(roles/storage.admin
)Administrador de repositório de Create-on-push do Artifact Registry
(roles/artifactregistry.createOnPushRepoAdmin)
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 padrão de serviço 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 de agente de serviço contêm permissões padrão equivalentes para o Container Registry e o Artifact Registry. Não será necessário fazer outras alterações se você estiver executando o Artifact Registry no mesmo projeto que o serviço do Container Registry.
Consulte a referência de papéis do agente de serviço para detalhes sobre as permissões nesses papéis.
- papéis personalizados
Use a tabela de mapeamento de papéis para ajudá-lo a decidir qual papel conceder aos usuários ou contas de serviço com base no nível de acesso que eles exigem.
Para instruções sobre como conceder papéis do Artifact Registry, consulte Configurar papéis e permissões.
Copiar contêineres do Container Registry
Recomendamos usar nossa ferramenta de migração automática para copiar as imagens do Container Registry para o Artifact Registry.
Se você quiser usar outras ferramentas para copiar as imagens, consulte Copiar imagens do Container Registry.
Configurar 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 oferece suporte ao Container Registry e ao Artifact Registry. Os dois produtos usam as mesmas APIs Artifact Analysis para verificação de metadados e vulnerabilidades de imagem e os mesmos tópicos do Pub/Sub para notificações do Artifact Analysis.
No entanto, as seguintes ações só ocorrem quando o redirecionamento está ativado:
- Verificação automática de repositórios
gcr.io
no Artifact Registry. - Inclusão da atividade do repositório
gcr.io
nas notificações do Pub/Sub.
É possível 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 vulnerabilidades de pacotes de idiomas e de sistemas operacionais com verificação sob demanda
em imagens com um SO compatível. A verificação automática só retorna informações sobre vulnerabilidade do SO.
Saiba mais sobre os tipos de
verificação.
|
Verifica vulnerabilidades de pacotes de idioma e do SO com verificações
automáticas e sob demanda.
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. No entanto, o Artifact Registry não publica
mensagens para repositórios gcr.io
até que você ative o redirecionamento.
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.
Ativar o redirecionamento do tráfego gcr.io
Depois de criar os repositórios gcr.io
e configurar permissões e autenticação para
clientes de terceiros, ative o redirecionamento do tráfego gcr.io
.
Se você encontrar um problema depois de ativar o redirecionamento, encaminhe o tráfego de volta para o Container Registry e ative o redirecionamento novamente quando tiver resolvido o problema.
Verificar as permissões para ativar o redirecionamento
Para ativar o redirecionamento, é preciso ter as seguintes permissões no nível do projeto:
artifactregistry.projectsettings.update
: permissões para atualizar as configurações do projeto do Artifact Registry. Essa permissão está no papel de Administrador do Artifact Registry (roles/artifactregistry.admin
).storage.buckets.update
: permissões para atualizar buckets de armazenamento em todo o projeto. Essa permissão está no papel Administrador de armazenamento (roles/storage.admin
).
Se você não tiver essas permissões, peça a um administrador para concedê-las no nível do projeto.
Os comandos a seguir concedem os papéis de administrador do Artifact Registry e administrador do Storage em um projeto.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:PRINCIPAL' \
--role='roles/artifactregistry.admin'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:PRINCIPAL' \
--role='roles/storage.admin'
Substitua os seguintes valores:
- PROJECT_ID é o ID do projeto do Google Cloud.
- PRINCIPAL é o endereço de e-mail da conta que você está atualizando.
Por exemplo,
user:my-user@example.com
.
Validar a configuração do projeto
Para validar a configuração do projeto, execute o seguinte comando:
gcloud artifacts settings enable-upgrade-redirection \
--project=PROJECT_ID --dry-run
Substitua PROJECT_ID pelo ID do projeto do Google Cloud.
O Artifact Registry verifica repositórios mapeados para nomes de host do Container Registry.
Embora o Artifact Registry possa criar os repositórios gcr.io ausentes para você ao ativar o redirecionamento, recomendamos criá-los primeiro para que você possa realizar estas ações antes de ativar o redirecionamento:
- Configurar permissões no nível do repositório
- Copie imagens do Container Registry que você ainda quer usar
- Faça qualquer configuração adicional.
Ativar o redirecionamento
Se quiser ativar o redirecionamento para o tráfego de gcr.io
, faça o seguinte:
Console
Abra a página Configurações no console do Google Cloud.
Clique em Rotear para o Artifact Registry.
gcloud
Para ativar o redirecionamento, execute o comando:
gcloud artifacts settings enable-upgrade-redirection \
--project=PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto do Google Cloud.
O Artifact Registry começa a ativar o redirecionamento.
Para verificar o status atual do redirecionamento, execute o seguinte comando:
gcloud artifacts settings describe
Quando o redirecionamento estiver ativado, o resultado será:
legacyRedirectionState: REDIRECTION_FROM_GCR_IO_ENABLED
Todo o tráfego para gcr.io
, asia.gcr.io
, eu.gcr.io
e us.gcr.io
é redirecionado, mesmo que você não tenha criado repositórios gcr.io para todos os nomes de host do Container Registry. Se você enviar uma imagem para um nome de host que não
tenha um repositório correspondente do Artifact Registry, o repositório criará o repositório
se você tiver um papel com a permissão
artifactregistry.repositories.createOnPush
. Os papéis predefinidos Gravador Create-on-push (artifactregistry.createOnPushWriter
) e Administrador do repositório Create-on-push (artifactregistry.createOnPushRepoAdmin
) têm essa permissão.
Com o redirecionamento ativado, é possível testar a automação e verificar se é possível enviar e extrair imagens usando os novos repositórios gcr.io.
Verificar redirecionamento
Verifique se as solicitações de envio e extração para os nomes de host gcr.io
estão funcionando.
Envie uma imagem de teste para um dos repositórios gcr.io usando o caminho
gcr.io
.Marque a imagem usando o caminho
gcr.io
. Por exemplo, este comando marca a imagemlocal-image
comous.gcr.io/my-project/test-image
:docker tag local-image us.gcr.io/my-project/test-image
Envie a imagem marcada por push. Por exemplo, este comando envia a imagem
us.gcr.io/my-project/test-image
:docker push us.gcr.io/my-project/test-image
Liste as imagens no repositório para verificar se o upload delas foi concluído. Por exemplo, para listar imagens em
us.gcr.io/my-project
, execute o comando:gcloud container images list --repository=us.gcr.io/my-project
Extraia a imagem do repositório usando o caminho do Container Registry. Por exemplo, este comando extrai a imagem
us.gcr.io/my-project/test-image
.docker pull us.gcr.io/my-project/test-image
Após esse teste inicial, verifique se a automação atual para criar e implantar imagens funciona conforme o esperado, incluindo:
- Usuários e contas de serviço que usam o Container Registry ainda podem enviar, extrair e implantar imagens quando o redirecionamento estiver ativado.
- A automação só envia imagens para os repositórios atuais.
- Se a verificação de vulnerabilidades do Artifact Analysis estiver ativada, ela vai identificar imagens com vulnerabilidades nos repositórios gcr.io.
- Se você usar a autorização binária, as políticas existentes funcionarão corretamente para imagens implantadas de repositórios gcr.io.
- As assinaturas configuradas do Pub/Sub incluem notificações de alterações nos repositórios gcr.io.
Limpar imagens do Container Registry
Quando o redirecionamento está ativado, os comandos para excluir imagens nos caminhos gcr.io
excluim imagens no repositório gcr.io
correspondente do Artifact Registry.
Os comandos de exclusão para excluir imagens nos caminhos gcr.io
não excluem as imagens armazenadas nos hosts do Container Registry.
Para remover com segurança todas as imagens do Container Registry, exclua os buckets do Cloud Storage de cada nome de host 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 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
- gcr.io:
Clique em Excluir. Uma caixa de diálogo de confirmação será exibida.
Para confirmar a exclusão, digite o nome do bucket e clique em Excluir.
gsutil
Se você quiser excluir em massa cem mil ou mais imagens de um bucket, evite usar o gsutil, porque 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 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
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 do Google Cloud, deixe a API Container Registry ativada. Se você tentar desativar a API Container Registry. O Container Registry exibirá 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 que você não esteja usando o Container Registry com esses serviços.
A seguir
- Veja o guia de início rápido do Docker.
- Saiba mais sobre repositórios do
gcr.io
.