Questo documento descrive come configurare l'autenticazione nei repository upstream di Docker Hub per i repository remoti di Artifact Registry.
Ti consigliamo di eseguire l'autenticazione in Docker Hub anche se utilizzi solo immagini pubbliche, perché l'autenticazione aumenta il limite di frequenza di download. Per saperne di più sui limiti di frequenza di download di Docker Hub, consulta Limite di frequenza di Docker Hub. I repository remoti ti consentono di aggiungere il tuo 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 saperne di più, consulta la panoramica dei repository remoti.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare l'autenticazione in Docker Hub per i repository remoti, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
- Amministratore Artifact Registry (
roles/artifactregistry.admin) - Amministratore Secret Manager (
roles/secretmanager.admin)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Creare un token di accesso personale di 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 in locale o in Cloud Shell.
Salvare il token di accesso personale in una versione del secret
- Crea un secret in Secret Manager.
- Salva il token di accesso personale di Docker Hub come a versione del secret.
Concedere al account di servizio Artifact Registry l'accesso al secret
L'agente di servizio Artifact Registry agisce per conto di Artifact Registry quando interagisce con Google Cloud i servizi. Per consentire all'agente di servizio di utilizzare i secret archiviati in Secret Manager, devi concedere all'agente di servizio l'autorizzazione a 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 Google Cloud progetto in cui è in esecuzione Artifact Registry.
Per concedere all'agente di servizio Artifact Registry il ruolo Secret Manager Secret Accessor:
Console
-
Vai alla pagina Secret Manager nella Google Cloud console.
-
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 aprire il riquadro.
-
Nel riquadro 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 Secret Accessor.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Dove member è un membro IAM, ad esempio un utente, un gruppo o un account di servizio.
C#
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per eseguire l'autenticazione in Artifact Registry, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
API
Nota: a differenza degli altri esempi, questo sostituisce l'intera policy 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 saperne di più sulla concessione o la revoca dell'accesso ai secret, consulta Gestire l'accesso ai secret.
Aggiungere le credenziali di Docker Hub al repository remoto
Per aggiornare il repository remoto con le credenziali di Docker Hub:
Console
Apri la pagina Repository nella Google Cloud console.
Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.
Nella sezione Modalità di autenticazione del repository remoto, aggiorna o aggiungi il tuo nome utente Docker Hub e la versione del secret contenente il token di accesso di Docker Hub.
gcloud CLI
Per aggiornare il repository remoto con le credenziali di Docker Hub, esegui il comando seguente:
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
Sostituisci quanto segue:
REPOSITORY: il nome del repository remoto di Artifact Registry.PROJECT_ID: il tuo Google Cloud ID progetto.LOCATION: la località regionale o multiregionale del repository. Puoi omettere questo flag se hai impostato un valore predefinito. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list.USERNAME: il tuo nome utente Docker Hub.SECRET_PROJECT_ID: l'ID progetto del Google Cloud progetto in cui hai creato il secret.SECRET_ID: il nome che hai assegnato al secret.SECRET_VERSION: la versione del secret in cui hai salvato il token di accesso di Docker Hub.
Le credenziali vengono utilizzate la prossima volta che il repository remoto invia una richiesta per un artefatto dall'origine upstream.
Passaggi successivi
- Scopri di più sui repository di Artifact Registry repositories.
- Estrai le immagini con Docker.
- Segui la guida rapida del repository remoto di Docker Hub quickstart.