Neste documento, descrevemos como configurar a autenticação em repositórios upstream do Docker Hub para repositórios remotos do Artifact Registry.
Para evitar o uso de cotas do Docker Hub não autenticadas, recomendamos que você faça a autenticação no Docker Hub ao usar repositórios remotos. 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.
Antes de começar
-
Faça login na sua Conta do Google.
Se você ainda não tiver uma, inscreva-se agora.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Ative as APIs Artifact Registry, Secret Manager.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Ative as APIs Artifact Registry, Secret Manager.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
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 seu 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 como conceder papéis, consulte Gerenciar acesso.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Criar um token de acesso pessoal do Docker Hub
- Faça login no Docker Hub.
- Crie um token de acesso pessoal com permissões 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 seu token de acesso pessoal em uma versão do secret
- Crie um secret no Secret Manager.
- Salve seu token de acesso pessoal do Docker Hub como uma versão secreta.
Conceda à conta de serviço do Artifact Registry acesso ao secret
O agente de serviço do Artifact Registry é uma conta serviço gerenciado pelo Google que atua em nome do Artifact Registry ao interagir com os serviços do Google Cloud. Para permitir que o agente de serviço use secrets armazenados no Secret Manager, conceda a ele permissão para visualizar a versão do secret.
O identificador do agente de serviço é:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER é o número do projeto do Google Cloud em que o Artifact Registry está em execução.
Para conceder ao agente de serviço do Artifact Registry o papel de Acessador de secrets do Secret Manager:
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página do Gerenciador de secrets, 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. Para 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. Para 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. Para 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. Para 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. Para 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. Para 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. Para 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 aos secrets, consulte Gerenciar o acesso aos secrets.
Adicionar credenciais do Docker Hub ao seu repositório remoto
Para atualizar o repositório remoto com as credenciais do Docker Hub:
Console
Abra a página Repositórios no console do Google Cloud.
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 o nome de usuário e a chave secreta do Docker Hub que contém o token de acesso do Docker Hub.
CLI da 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/PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Substitua:
REPOSITORY
pelo nome do repositório remoto do Artifact Registry.PROJECT_ID
pelo ID de projeto do Google Cloud;LOCATION
pelo local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais compatíveis, execute o comandogcloud artifacts locations list
.USERNAME
pelo nome de usuário do Docker Hub;SECRET_ID
pelo nome que você deu ao secret.SECRET_VERSION
pela versão do secret em que você salvou o token de acesso do Docker Hub.
A seguir
- Saiba mais sobre os repositórios do Artifact Registry.
- Extrair imagens com o Docker
- Acesse o quickstart do repositório remoto do Docker Hub.