Questa pagina descrive come accedere a Docker o Helm utilizzando l'helper delle credenziali Managed Harbor Service (MHS) o i secret della CLI.
Per offrire flessibilità, Google Distributed Cloud (GDC) air-gapped fornisce due metodi per l'autenticazione con Docker e Helm dall'istanza del registro Harbor. Il primo metodo consiste nell'utilizzare l'helper delle credenziali del servizio Managed Harbor (MHS) e la tua identità GDC per accedere alla CLI Docker o Helm. Dopo l'autenticazione con GDC, puoi accedere al client Docker ed eseguire operazioni Docker senza dover creare o gestire segreti CLI separati in Harbor.
Il secondo metodo consiste nell'utilizzare i secret della CLI. Dopo l'autenticazione tramite Identity-Aware Proxy (IAP) e l'accesso all'interfaccia di Harbor per la prima volta, utilizza la CLI Docker o Helm per accedere a Harbor. Le CLI Docker e Helm non possono gestire il reindirizzamento per IAP, quindi Harbor fornisce un secret CLI da utilizzare per l'accesso 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 disporre di quanto segue:
- L'helper per le credenziali MHS
docker-credential-mhs
installato nell'ambiente. L'helper delle credenziali è incluso per impostazione predefinita nel bundle gcloud CLI. Per saperne di più, consulta la panoramica di gcloud CLI. - Il ruolo di identità e accesso necessario. Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Visualizzatore istanza Harbor (
harbor-instance-viewer
).
Accedere a Docker con la tua identità GDC
Utilizza l'helper per le credenziali MHS con la tua identità GDC per accedere alla CLI Docker. Per l'autenticazione con Docker:
Accedi al server dell'API Management con GDC CLI seguendo le istruzioni riportate in Accedi.
Configura Docker per utilizzare l'assistente alle 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 di Harbor.HARBOR_INSTANCE_NAME
: il nome dell'istanza Harbor creata in Crea istanze del registro Harbor.
Segui le istruzioni in Configurare Docker per considerare attendibile la CA radice di Harbor.
(Facoltativo) Verifica che l'helper delle credenziali sia configurato correttamente verificando che la voce
mhs
sia aggiunta a~/.docker/config.json
:cat DOCKER_CONFIG_PATH
Sostituisci
DOCKER_CONFIG_PATH
con il percorso del file di configurazione 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_PROJECT
Viene visualizzato l'output seguente:
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 il push o il 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:latest
Un 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}/harbor-project/nginx:latest latest: Pulling from harbor-project/nginx Digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc Status: Image is up to date for myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx:latest
Se 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 again
In questo esempio, la sessione di autenticazione GDC è scaduta e devi accedere di nuovo a GDC. Per ulteriori informazioni, vedi Accedere.
Accedere a Helm con la tua identità GDC
Utilizza l'helper per le credenziali MHS con la tua identità GDC per accedere alla CLI Helm.
Per l'autenticazione con Helm, segui questi passaggi:
Dopo l'autenticazione con GDC, recupera le credenziali utente dall'helper per le credenziali:
echo $REGISTRY | docker-credential-mhs get
L'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 Helm con le credenziali. Quando ti viene chiesto di inserire le credenziali, utilizza quelle restituite dall'helper delle credenziali.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw
Un output riuscito per questa operazione è simile al seguente:
Login Succeeded
Accedere 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 CLI, fai clic sui puntini di sospensione
nel tuo profilo utente.Se hai generato un nuovo segreto CLI, fai clic su
Copia per copiarlo.Ora puoi utilizzare il secret della CLI come password quando accedi a Harbor dalla CLI 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.