Questo documento descrive come configurare l'autenticazione nei repository a monte di Docker Hub per i repository remoti di Artifact Registry.
Per impedire l'utilizzo della quota Docker Hub non autenticata, ti consigliamo di eseguire l'autenticazione su Docker Hub quando utilizzi repository remoti. I repository remoti consentono di aggiungere il nome utente Docker Hub e un token di accesso personale salvato come secret per l'autenticazione in Docker Hub.
Questo documento presuppone che tu abbia già creato un repository remoto Docker di Artifact Registry e un account Docker Hub.
Per ulteriori informazioni sui repository remoti, consulta la Panoramica dei repository remoti.
Prima di iniziare
-
Accedi al tuo Account Google.
Se non ne hai già uno, crea un nuovo account.
-
Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.
-
Abilita le API Artifact Registry, Secret Manager.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.
-
Abilita le API Artifact Registry, Secret Manager.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare l'autenticazione su Docker Hub per i repository remoti, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto:
-
Amministratore Artifact Registry (
roles/artifactregistry.admin
) -
Amministratore Secret Manager (
roles/secretmanager.admin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
crea un token di accesso personale per Docker Hub
- Accedi a Docker Hub.
- Crea un token di accesso personale con autorizzazioni di sola lettura.
Copia il token di accesso.
Salva il token di accesso in un file di testo nel tuo locale o in Cloud Shell.
Salva il token di accesso personale in una versione del secret
- Crea un secret in Secret Manager.
- Salva il token di accesso personale Docker Hub come versione del secret.
Concedi all'account di servizio Artifact Registry l'accesso al tuo secret
L'agente di servizio Artifact Registry è un account di servizio gestito da Google che agisce per conto di Artifact Registry durante l'interazione con i servizi Google Cloud. Per consentire all'agente di servizio di utilizzare i secret archiviati in Secret Manager, devi concedergli l'autorizzazione per visualizzare la versione del secret.
L'identificatore dell'agente di servizio è:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER è il numero di progetto del progetto Google Cloud in cui è in esecuzione Artifact Registry.
Per concedere all'agente di servizio Artifact Registry il ruolo Funzione di accesso ai secret di Secret Manager:
Console
-
Vai alla pagina Secret Manager nella console Google Cloud.
-
Nella pagina Secret Manager, fai clic sulla casella di controllo accanto al nome del secret.
-
Se non è già aperto, fai clic su Mostra riquadro informazioni per aprirlo.
-
Nel riquadro delle informazioni, fai clic su Aggiungi entità.
-
Nell'area di testo Nuove entità, inserisci gli indirizzi email dei membri da aggiungere.
-
Nel menu a discesa Seleziona un ruolo, scegli Secret Manager e poi Secret Manager (Accessore di accesso ai secret di Secret Manager).
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Dove member è un membro IAM, ad esempio un account utente, gruppo o servizio.
C#
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Go
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per eseguire l'autenticazione in Artifact Registry, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
API
Nota: a differenza degli altri esempi, questo sostituisce l'intero criterio 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\"}]}}"
Per maggiori informazioni sulla concessione o la revoca dell'accesso ai secret, consulta Gestire l'accesso ai secret.
Aggiungi le credenziali Docker Hub al repository remoto
Per aggiornare il repository remoto con le credenziali Docker Hub:
Console
Apri la pagina Repositories nella console Google Cloud.
Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.
Nella sezione Modalità di autenticazione repository remota, aggiorna o aggiungi il nome utente e il secret di Docker Hub contenenti il token di accesso a Docker Hub.
Interfaccia a riga di comando gcloud
Per aggiornare il repository remoto con le credenziali Docker Hub, esegui questo 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
Sostituisci quanto segue:
REPOSITORY
con il nome del tuo repository remoto Artifact Registry.PROJECT_ID
con il tuo ID progetto Google Cloud.LOCATION
con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore predefinito. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.USERNAME
con il tuo nome utente Docker Hub.SECRET_ID
con il nome che hai fornito al tuo secret.SECRET_VERSION
con la versione del secret in cui hai salvato il token di accesso di Docker Hub.
Passaggi successivi
- Scopri di più sui repository Artifact Registry.
- Esegui il pull delle immagini con Docker.
- Accedi alla quickstart per il repository remoto di Docker Hub.