Questa pagina descrive come accedere a Docker o Helm utilizzando l'helper di credenziali del servizio Managed Harbor (MHS) o i secret della CLI.
Per offrire flessibilità, Google Distributed Cloud (GDC) con air gap fornisce due metodi per l'autenticazione con Docker e Helm dall'istanza del registro Harbor. Il primo metodo consiste nell'utilizzare l'helper di credenziali del servizio Managed Harbor (MHS) e la tua identità GDC per accedere alla CLI di Docker o Helm. Dopo l'autenticazione con GDC, puoi accedere al client Docker ed eseguire operazioni Docker senza dover creare o gestire secret della CLI separati in Harbor.
Il secondo metodo consiste nell'utilizzare i secret della CLI. Dopo aver eseguito l'autenticazione utilizzando Identity-Aware Proxy (IAP) e aver eseguito l'accesso all'interfaccia di Harbor per la prima volta, utilizza la CLI di Docker o Helm per accedere a Harbor. Le CLI di Docker e Helm non possono gestire il reindirizzamento per IAP, quindi Harbor fornisce un secret della CLI da utilizzare quando accedi da Docker o Helm. Questo metodo è disponibile solo quando Harbor utilizza l'autenticazione IAP.
Prima di iniziare
Per configurare l'autenticazione Docker e Helm per le istanze del registro Harbor, devi aver installato l'helper di credenziali MHS (docker-credential-mhs) nel tuo ambiente. L'helper di credenziali è incluso per impostazione predefinita nel bundle della CLI gdcloud. Per ulteriori informazioni, consulta la panoramica della CLI gdcloud.
Ruoli IAM richiesti
Per configurare l'autenticazione per le istanze del registro Harbor, contatta l'amministratore IAM del progetto per richiedere il ruolo Visualizzatore istanza Harbor (harbor-instance-viewer), che ti consente di ottenere, elencare e monitorare le istanze Harbor nello spazio dei nomi del progetto. Questo ruolo include le autorizzazioni necessarie per visualizzare i dettagli delle istanze Harbor esistenti in modo da poter recuperare gli URL del registro per l'autenticazione.
Accedi a Docker con la tua identità GDC
Utilizza l'helper di credenziali MHS con la tua identità GDC per accedere alla CLI di Docker. Per eseguire l'autenticazione con Docker:
Accedi al server API di gestione con la CLI gdcloud seguendo le istruzioni riportate in Accedi.
Configura Docker in modo che utilizzi l'helper di credenziali MHS
docker-credential-mhs:TENANT_PROJECT=PROJECT_NAME HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME REGISTRY=$(kubectl get harborinstance $HARBOR_INSTANCE_NAME -n $TENANT_PROJECT -o jsonpath='{.status.url}' | sed s#https://##) docker-credential-mhs configure-docker --registries=${REGISTRY}Sostituisci quanto segue:
PROJECT_NAME: il nome del progetto tenant. Si tratta dello stesso nome del progetto che hai fornito durante la creazione dell'istanza Harbor.HARBOR_INSTANCE_NAME: il nome dell'istanza Harbor creata in Crea istanze del registro Harbor.
Segui le istruzioni riportate in Configura Docker in modo che consideri attendibile la CA principale di Harbor.
(Facoltativo) Verifica che l'helper di credenziali sia stato configurato correttamente controllando che la voce
mhssia stata aggiunta a~/.docker/config.json:cat DOCKER_CONFIG_PATHSostituisci
DOCKER_CONFIG_PATHcon il percorso del file di configurazione di Docker. Ad esempio,~/.docker/config.json.L'output è simile al seguente:
{ "auths": { "10.200.0.1": { "auth": "YWRtaW46YWRtaW4=" }, "10.200.16.5:10443": { "auth": "YWRtaW46ZEROVVJCVWE1a1FBcE4xQQ==" } }, "credHelpers": { "asia.gcr.io": "gcloud", "eu.gcr.io": "gcloud", "gcr.io": "gcloud", "marketplace.gcr.io": "gcloud", "myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs", "staging-k8s.gcr.io": "gcloud", "us-central1-docker.pkg.dev": "gcloud", "us.gcr.io": "gcloud" } }Questo esempio mostra un output riuscito di
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs".Configura il progetto tenant in
gdcloud:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTViene visualizzato il seguente output:
Updated property [core/project].Identifica un progetto Harbor a cui hai accesso amministrativo. Crea un progetto Harbor se non ne esiste uno.
Esegui operazioni Docker, ad esempio un push o un pull di un'immagine:
TENANT_PROJECT=PROJECT_NAME HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME REGISTRY=$(kubectl get harborinstance $HARBOR_INSTANCE_NAME -n $TENANT_PROJECT -o jsonpath='{.status.url}' | sed s#https://##) HARBOR_PROJECT=HARBOR_PROJECT_NAME # Push image docker pull nginx docker tag nginx ${REGISTRY}/${HARBOR_PROJECT}/nginx:latest docker push ${REGISTRY}/${HARBOR_PROJECT}/nginx:latest # Pull image docker pull ${REGISTRY}/${HARBOR_PROJECT}/nginx:latestUn output riuscito è simile al seguente:
# Push image root@gpc-adhoc-70846130vm-bootstrapper-zone1:~# docker push ${REGISTRY}/harbor-project/nginx:latest The push refers to repository [myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx] e4e9e9ad93c2: Pushed 6ac729401225: Pushed 8ce189049cb5: Pushed 296af1bd2844: Pushed 63d7ce983cd5: Pushed b33db0c3c3a8: Pushed 98b5f35ea9d3: Pushed latest: digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc size: 1778 # Pull image root@gpc-adhoc-70846130vm-bootstrapper-zone1:~# docker pull ${REGISTRY}/library/nginx:latest latest: Pulling from library/nginx Digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc Status: Image is up to date for myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx:latestSe l'operazione non va a buon fine, potresti visualizzare il seguente output:
E1025 19:21:39.322290 1273587 get.go:24] failed to get user name: user is not logged in or login expired, please login againIn questo esempio, la sessione di autenticazione GDC è scaduta e devi accedere di nuovo a GDC. Per ulteriori informazioni, consulta Accedi.
Accedi a Helm con la tua identità GDC
Utilizza l'helper di credenziali MHS con la tua identità GDC per accedere alla CLI di Helm.
Per eseguire l'autenticazione con Helm:
Dopo l'autenticazione con GDC, recupera le credenziali utente dall'helper di credenziali:
echo $REGISTRY | docker-credential-mhs getL'output è simile al seguente:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}Accedi alla CLI di Helm con le credenziali. Quando ti viene chiesto di inserire le credenziali, utilizza quelle restituite dall'helper di credenziali.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bwUn output riuscito per questa operazione è simile al seguente:
Login Succeeded
Accedi a Docker o Helm con i secret della CLI
Per accedere a Docker o Helm con i secret della CLI:
- Accedi a Harbor con un account utente IAP.
- Fai clic sul tuo nome utente e seleziona Profilo utente.
- Per copiare il secret della CLI associato al tuo account, fai clic su Copia.
(Facoltativo) Per visualizzare i pulsanti per generare automaticamente o creare manualmente un nuovo secret della CLI, fai clic sui puntini di sospensione nel tuo profilo utente.
Se hai generato un nuovo secret della CLI, fai clic su Copia per copiarlo.
Ora puoi utilizzare il secret della CLI come password quando accedi a Harbor dalla CLI di Docker o Helm:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
Sostituisci quanto segue:
USERNAME: il nome utente dell'account HarborCLI_SECRET: il secret della CLI generato.HARBOR_INSTANCE_URL: l'URL dell'istanza Harbor.
Passaggi successivi
Una volta eseguito l'accesso a Docker e Helm, il registro è completamente connesso e puoi iniziare a utilizzarlo: