Accedi a Docker e Helm

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:

  1. Accedi al server API di gestione con la CLI gdcloud seguendo le istruzioni riportate in Accedi.

  2. 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:

  3. Segui le istruzioni riportate in Configura Docker in modo che consideri attendibile la CA principale di Harbor.

  4. (Facoltativo) Verifica che l'helper di credenziali sia stato configurato correttamente controllando che la voce mhs sia stata aggiunta a ~/.docker/config.json:

    cat DOCKER_CONFIG_PATH
    

    Sostituisci DOCKER_CONFIG_PATH con 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".

  5. Configura il progetto tenant in gdcloud:

    TENANT_PROJECT=PROJECT_NAME
    gdcloud config set project $TENANT_PROJECT
    

    Viene visualizzato il seguente output:

    Updated property [core/project].
    
  6. Identifica un progetto Harbor a cui hai accesso amministrativo. Crea un progetto Harbor se non ne esiste uno.

  7. 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: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}/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: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, 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:

  1. Dopo l'autenticazione con GDC, recupera le credenziali utente dall'helper di 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"}
    
  2. 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_bw
    

    Un 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:

  1. Accedi a Harbor con un account utente IAP.
  2. Fai clic sul tuo nome utente e seleziona Profilo utente.
  3. Per copiare il secret della CLI associato al tuo account, fai clic su Copia.
  4. (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.

  5. Se hai generato un nuovo secret della CLI, fai clic su Copia per copiarlo.

  6. 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 Harbor
  • CLI_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: