Bei Docker und Helm anmelden

Auf dieser Seite wird beschrieben, wie Sie sich mit dem Credential Helper für den Managed Harbor Service (MHS) oder mit CLI-Secrets in Docker oder Helm anmelden.

Um Flexibilität zu bieten, bietet Google Distributed Cloud (GDC) Air-Gapped zwei Methoden zur Authentifizierung bei Docker und Helm über Ihre Harbor-Registry-Instanz. Bei der ersten Methode melden Sie sich mit dem Credential Helper für den Managed Harbor Service (MHS) und Ihrer GDC-Identität in der Docker- oder Helm-Befehlszeile an. Nach der Authentifizierung bei GDC können Sie sich im Docker-Client anmelden und Docker-Vorgänge ausführen, ohne separate CLI-Secrets in Harbor erstellen oder verwalten zu müssen.

Die zweite Methode verwendet CLI-Secrets. Nachdem Sie sich mit Identity-Aware Proxy (IAP) authentifiziert und sich zum ersten Mal in der Harbor-Benutzeroberfläche angemeldet haben, können Sie mit der Docker- oder Helm-Befehlszeile auf Harbor zugreifen. Die Docker- und Helm-Befehlszeilen können keine Weiterleitung für IAP verarbeiten. Daher stellt Harbor ein CLI-Secret bereit, das bei der Anmeldung über Docker oder Helm verwendet werden kann. Diese Methode ist nur verfügbar, wenn Harbor die IAP-Authentifizierung verwendet.

Hinweise

Um die Docker- und Helm-Authentifizierung für Harbor-Registry-Instanzen zu konfigurieren, benötigen Sie Folgendes:

  • Der MHS-Credential Helper docker-credential-mhs ist in der Umgebung installiert. Der Credential Helper ist standardmäßig im gcloud CLI-Bundle enthalten. Weitere Informationen finden Sie in der Übersicht über die gcloud CLI.
  • Die erforderliche Identitäts- und Zugriffsrolle. Bitten Sie Ihren Organisations-IAM-Administrator, Ihnen die Rolle „Harbor Instance Viewer“ (harbor-instance-viewer) zuzuweisen.

Mit Ihrer GDC-Identität bei Docker anmelden

Verwenden Sie den MHS Credential Helper mit Ihrer GDC-Identität, um sich in der Docker-Befehlszeile anzumelden. So authentifizieren Sie sich bei Docker:

  1. Melden Sie sich mit der GDC CLI beim Management API-Server an. Folgen Sie dazu der Anleitung unter Anmelden.

  2. Konfigurieren Sie Docker für die Verwendung des MHS Credential Helper 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}
    

    Ersetzen Sie Folgendes:

  3. Folgen Sie der Anleitung unter Docker so konfigurieren, dass die Harbor-Stammzertifizierungsstelle vertrauenswürdig ist.

  4. Optional: Prüfen Sie, ob der Anmeldedaten-Helper erfolgreich konfiguriert wurde, indem Sie prüfen, ob der Eintrag mhs zu ~/.docker/config.json hinzugefügt wurde:

    cat DOCKER_CONFIG_PATH
    

    Ersetzen Sie DOCKER_CONFIG_PATH durch den Pfad zu Ihrer Docker-Konfigurationsdatei. Beispiel: ~/.docker/config.json.

    Die Ausgabe sieht etwa so aus:

    {
        "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"
        }
    }
    

    Dieses Beispiel zeigt eine erfolgreiche Ausgabe von "myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs".

  5. Konfigurieren Sie das Mandantenprojekt in gdcloud:

    TENANT_PROJECT=PROJECT_NAME
    gdcloud config set project $TENANT_PROJECT
    

    Die Ausgabe sieht so aus:

    Updated property [core/project].
    
  6. Suchen Sie ein Harbor-Projekt, auf das Sie Verwaltungszugriff haben. Erstellen Sie ein Harbor-Projekt, falls noch keines vorhanden ist.

  7. Docker-Vorgänge ausführen, z. B. ein Image per Push oder Pull übertragen:

    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
    

    Eine erfolgreiche Ausgabe sieht etwa so aus:

    # 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
    

    Wenn der Vorgang nicht erfolgreich ist, wird möglicherweise die folgende Ausgabe angezeigt:

    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 diesem Beispiel ist die GDC-Authentifizierungssitzung abgelaufen und Sie müssen sich noch einmal in GDC anmelden. Weitere Informationen finden Sie unter Anmelden.

Mit Ihrer GDC-Identität in Helm anmelden

Verwenden Sie den MHS Credential Helper mit Ihrer GDC-Identität, um sich in der Helm CLI anzumelden.

So authentifizieren Sie sich mit Helm:

  1. Rufen Sie nach der Authentifizierung mit GDC Ihre Nutzeranmeldedaten vom Credential Helper ab:

    echo $REGISTRY | docker-credential-mhs get
    

    Die Ausgabe sieht etwa so aus:

    {"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}
    
  2. Melden Sie sich mit den Anmeldedaten in der Helm-Befehlszeile an. Wenn Sie zur Eingabe der Anmeldedaten aufgefordert werden, verwenden Sie die vom Credential Helper zurückgegebenen Anmeldedaten.

    helm registry login $REGISTRY
    Username: tokenreview$fop-infrastructure-operator@example.com
    Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw
    

    Eine erfolgreiche Ausgabe für diesen Vorgang sieht so aus:

    Login Succeeded
    

Mit CLI-Secrets bei Docker oder Helm anmelden

So melden Sie sich mit CLI-Secrets in Docker oder Helm an:

  1. Melden Sie sich mit einem IAP-Nutzerkonto in Harbor an.
  2. Klicken Sie auf Ihren Nutzernamen und wählen Sie Nutzerprofil aus.
  3. Klicken Sie auf  Kopieren, um das mit Ihrem Konto verknüpfte CLI-Secret zu kopieren.
  4. Optional: Wenn Sie Schaltflächen zum automatischen Generieren oder manuellen Erstellen eines neuen CLI-Secrets anzeigen möchten, klicken Sie in Ihrem Nutzerprofil auf das Dreipunkt-Menü .

  5. Wenn Sie ein neues CLI-Secret generiert haben, klicken Sie auf  Kopieren, um es zu kopieren.

  6. Sie können Ihr CLI-Secret jetzt als Passwort verwenden, wenn Sie sich über die Docker- oder Helm-Befehlszeile in Harbor anmelden:

    docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL

Ersetzen Sie Folgendes:

  • USERNAME: der Nutzername des Harbor-Kontos
  • CLI_SECRET: das generierte CLI-Secret.
  • HARBOR_INSTANCE_URL: die URL der Harbor-Instanz.