Este documento descreve como configurar a autenticação para repositórios upstream do Docker Hub para repositórios remotos do Artifact Registry.
Recomendamos a autenticação no Docker Hub, mesmo que você esteja usando apenas imagens públicas, porque isso aumenta o limite de taxa de download. Para mais informações sobre os limites de taxa de download do Docker Hub, consulte Limite de taxa do Docker Hub. Os repositórios remotos permitem adicionar seu nome de usuário do Docker Hub e um token de acesso pessoal salvo como um Secret para autenticar no Docker Hub.
Este documento pressupõe que você já criou um repositório remoto do Docker do Artifact Registry e uma conta do Docker Hub.
Para mais informações sobre repositórios remotos, consulte a visão geral de repositórios remotos.
Funções exigidas
Para receber as permissões necessárias para configurar a autenticação no Docker Hub para repositórios remotos, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Administrador do Artifact Registry (
roles/artifactregistry.admin) - Administrador do Secret Manager (
roles/secretmanager.admin)
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 usando personalizados papéis ou outros predefinidos papéis.
Criar um token de acesso pessoal do Docker Hub
- Faça login no Docker Hub.
- Crie um token de acesso pessoal com permissões de somente leitura.
Copie o token de acesso.
Salve o token de acesso em um arquivo de texto no seu local ou no Cloud Shell.
Salvar o token de acesso pessoal em uma versão secreta
- Crie um secret no Secret Manager.
- Salve seu token de acesso pessoal do Docker Hub como uma versão secreta.
Conceder acesso à conta de serviço do Artifact Registry ao seu secret
O agente de serviço do Artifact Registry atua em nome do Artifact Registry ao interagir com Google Cloud serviços. Para permitir que o agente de serviço use secrets armazenados no Secret Manager, conceda permissão ao agente de serviço para visualizar sua versão secreta.
O identificador do agente de serviço é:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER é o número do projeto em que o Artifact Registry está em execução. Google Cloud
Para conceder ao agente de serviço do Artifact Registry o papel de Acessador de secrets do Secret Manager:
Console
-
Acesse a página Secret Manager no Google Cloud consol.
-
Na página Secret Manager, clique na caixa de seleção ao lado do nome do secret.
-
Se ela ainda não estiver aberta, clique em Mostrar painel de informações para abrir o painel.
-
No painel de informações, clique em Adicionar participante.
-
Na área de texto Novos principais, digite os endereços de e-mail dos membros que você quer adicionar.
-
Na lista suspensa Selecionar um papel, escolha Secret Manager e depois Acessador de secrets do Secret Manager.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Em que member é um membro do IAM, como um usuário, grupo ou conta de serviço.
C#
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para autenticar no Artifact Registry, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
API
Observação: diferentemente dos outros exemplos, isso substitui toda a política do IAM.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
Para mais informações sobre como conceder ou revogar o acesso a secrets, consulte Gerenciar o acesso a secrets.
Adicionar credenciais do Docker Hub ao repositório remoto
Para atualizar o repositório remoto com as credenciais do Docker Hub:
Console
Abra a página Repositórios no Google Cloud consol.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Modo de autenticação do repositório remoto, atualize ou adicione seu nome de usuário do Docker Hub e a versão do Secret que contém seu token de acesso do Docker Hub.
CLI gcloud
Para atualizar o repositório remoto com as credenciais do Docker Hub, execute o seguinte comando:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Substitua:
REPOSITORYpelo nome do repositório remoto do Artifact Registry.PROJECT_IDpelo ID do seu Google Cloud projeto.LOCATIONpelo local regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver uma lista de locais compatíveis, execute o comandogcloud artifacts locations list.USERNAMEpelo seu nome de usuário do Docker Hub.SECRET_PROJECT_IDpelo ID do projeto do Google Cloud projeto em que você criou o secret.SECRET_IDpelo nome que você deu ao secret.SECRET_VERSIONpela versão secreta em que você salvou o token de acesso do Docker Hub.
Suas credenciais serão usadas na próxima vez que o repositório remoto enviar uma solicitação de artefato da origem upstream.
A seguir
- Saiba mais sobre os repositórios do Artifact Registry .
- Extrair imagens com o Docker.
- Acesse o guia de início rápido do repositório remoto do Docker Hub quickstart.