Auf dieser Seite wird beschrieben, wie Sie sich mit dem Credential Helper des Managed Harbor Service (MHS) oder mit CLI-Secrets bei Docker oder Helm anmelden.
Harbor-Registry-Instanzen in Google Distributed Cloud (GDC) mit Air Gap verwenden Identity-Aware Proxy (IAP) zur Authentifizierung. Sie können sich über die Docker- oder Helm-Befehlszeile mit einer der folgenden Methoden in Ihrer Harbor-Registry-Instanz anmelden:
- MHS-Anmeldedaten-Hilfsprogramm (
docker-credential-mhs): Verwendet Ihre authentifizierte GDC-Identität, um die IAP-Authentifizierung automatisch zu verarbeiten. Nachdem Sie sich mit der gdcloud CLI angemeldet haben, ruftdocker-credential-mhsIhre authentifizierte Nutzeridentität ab und prüft Ihren Zugriff mit Harbor. Nach der Überprüfung stellt Harbor Docker oder Helm ein kurzlebiges Token zur Verfügung, damit Sie Registry-Vorgänge ausführen können, ohne separate CLI-Secrets erstellen oder verwalten zu müssen. - CLI-Secrets: Verwendet ein statisches CLI-Secret aus Ihrem Harbor-Nutzerprofil. Nachdem Sie sich zum ersten Mal über IAP in der Harbor-Weboberfläche angemeldet haben, können Sie Ihr CLI-Secret abrufen und es als Passwort verwenden, wenn Sie sich über die Docker- oder Helm-CLI anmelden. Diese Methode ist nur mit der Harbor-UI verfügbar.
Hinweis
Wenn Sie die Docker- und Helm-Authentifizierung für Harbor-Registry-Instanzen konfigurieren möchten, muss der MHS-Credential Helper (docker-credential-mhs) in Ihrer Umgebung installiert sein. Der Credential Helper ist standardmäßig im gdcloud CLI-Bundle enthalten. Weitere Informationen finden Sie unter gdcloud CLI – Übersicht.
Erforderliche IAM-Rollen
Wenn Sie die Authentifizierung für Harbor-Registry-Instanzen konfigurieren möchten, wenden Sie sich an Ihren IAM-Projektadministrator, um die Rolle Harbor Instance Viewer (harbor-instance-viewer) anzufordern. Mit dieser Rolle können Sie Harbor-Instanzen im Projekt-Namespace abrufen, auflisten und beobachten. Diese Rolle enthält die erforderlichen Berechtigungen, um die Details vorhandener Harbor-Instanzen aufzurufen, damit Sie die Registry-URLs für die Authentifizierung abrufen können.
Mit dem MHS-Credential Helper anmelden
Wie Sie sich bei docker-credential-mhs authentifizieren, hängt von Ihrem CLI-Client ab: Sie können Docker so konfigurieren, dass Anmeldedaten automatisch abgerufen werden, oder temporäre Anmeldedaten direkt abrufen, um sich bei Docker anzumelden.
In Docker anmelden
So authentifizieren Sie sich bei Docker:
Melden Sie sich mit der gdcloud CLI beim Management API-Server an. Folgen Sie dazu der Anleitung unter Anmelden.
Konfigurieren Sie Docker für die Verwendung des MHS-Credential Helpers
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:
PROJECT_NAME: der Name Ihres Mandantenprojekts. Dies ist der Projektname, den Sie beim Erstellen der Harbor-Instanz angegeben haben.HARBOR_INSTANCE_NAME: der Name der Harbor-Instanz, die Sie unter Harbor-Registry-Instanzen erstellen erstellt haben.
Folgen Sie der Anleitung unter Docker so konfigurieren, dass der Harbor-Root-CA vertraut wird.
Optional: Prüfen Sie, ob der Credential Helper erfolgreich konfiguriert wurde. Dazu muss der Eintrag
mhsin~/.docker/config.jsonenthalten sein:cat DOCKER_CONFIG_PATHErsetzen Sie
DOCKER_CONFIG_PATHdurch den Pfad zu Ihrer Docker-Konfigurationsdatei, z. B.~/.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".Konfigurieren Sie das Mandantenprojekt in der gdcloud CLI:
TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTDie folgende Ausgabe wird angezeigt:
Updated property [core/project].Suchen Sie ein Harbor-Projekt, für das Sie Verwaltungszugriff haben. Wenn keines vorhanden ist, erstellen Sie ein Harbor-Projekt.
Führen Sie Docker-Vorgänge aus, z. B. einen Image-Push oder -Pull:
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:latestEine 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}/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:latestWenn 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 againIn diesem Beispiel ist die GDC-Authentifizierungssitzung abgelaufen und Sie müssen sich noch einmal bei GDC anmelden. Weitere Informationen finden Sie unter Anmelden.
In Helm anmelden
So authentifizieren Sie sich mit Helm:
Rufen Sie nach der Authentifizierung bei GDC Ihre Nutzeranmeldedaten vom Credential Helper ab:
echo $REGISTRY | docker-credential-mhs getDie Ausgabe sieht etwa so aus:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}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_bwEine erfolgreiche Ausgabe für diesen Vorgang sieht so aus:
Login Succeeded
Mit CLI-Secrets anmelden
So melden Sie sich mit CLI-Secrets in Docker oder Helm an:
- Melden Sie sich mit einem IAP-Nutzerkonto bei Harbor an.
- Klicken Sie auf Ihren Nutzernamen und wählen Sie Nutzerprofil aus.
- Klicken Sie auf Kopieren, um das mit Ihrem Konto verknüpfte CLI-Secret zu kopieren.
Optional: Wenn Sie Schaltflächen zum automatischen Generieren oder manuellen Erstellen eines neuen CLI-Secrets anzeigen möchten, klicken Sie in Ihrem Nutzerprofil auf Mehr.
Wenn Sie einen neuen Befehlszeilen-Secret generiert haben, klicken Sie auf Kopieren, um ihn zu kopieren.
Verwenden Sie Ihr CLI-Secret als Passwort, wenn Sie sich über die Docker- oder Helm-Befehlszeile in Harbor anmelden:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URLErsetzen Sie Folgendes:
USERNAME: der Nutzername des Harbor-Kontos.CLI_SECRET: das generierte CLI-Secret.HARBOR_INSTANCE_URL: die URL der Harbor-Instanz.
Nächste Schritte
Nachdem Sie sich bei Docker und Helm angemeldet haben, ist Ihre Registry verbunden und Sie können sie verwenden: