Auf dieser Seite wird beschrieben, wie Sie sich mit dem Credential Helper des Managed Harbor Service (MHS) oder mit CLI-Secrets in Docker oder Helm anmelden.
Google Distributed Cloud (GDC) air-gapped bietet zwei Methoden zur Authentifizierung bei Docker und Helm von Ihrer Harbor-Registry-Instanz aus. Die erste Methode besteht darin, sich mit dem Credential Helper des Managed Harbor Service (MHS) und Ihrer GDC-Identität in der Docker- oder Helm-CLI anzumelden. 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 besteht in der Verwendung von CLI-Secrets. Nachdem Sie sich mit Identity-Aware Proxy (IAP) authentifiziert und sich zum ersten Mal in der Harbor-Oberfläche angemeldet haben, können Sie über die Docker- oder Helm-CLI auf Harbor zugreifen. Die Docker- und Helm-CLIs können die Umleitung für IAP nicht verarbeiten. Daher stellt Harbor ein CLI-Secret zur Verfügung, das Sie bei der Anmeldung über Docker oder Helm verwenden können. Diese Methode ist nur verfügbar, wenn Harbor die IAP-Authentifizierung verwendet.
Hinweis
Um die Docker- und Helm-Authentifizierung für Harbor-Registry-Instanzen zu konfigurieren, 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
Wenden Sie sich an Ihren Projekt-IAM-Administrator, um die Rolle Harbor Instance Viewer (harbor-instance-viewer) anzufordern, mit der Sie Harbor-Instanzen im Projekt-Namespace abrufen, auflisten und beobachten können. Diese Rolle umfasst die erforderlichen Berechtigungen, um die Details vorhandener Harbor-Instanzen aufzurufen, damit Sie die Registry-URLs für die Authentifizierung abrufen können.
Mit Ihrer GDC-Identität in Docker anmelden
Verwenden Sie den MHS-Credential Helper mit Ihrer GDC-Identität, um sich in der Docker-CLI anzumelden. So authentifizieren Sie sich bei Docker:
Melden Sie sich mit der GDC 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 derselbe Projekt name, den Sie beim Erstellen Ihrer Harbor-Instanz angegeben haben.HARBOR_INSTANCE_NAME: der Name der Harbor-Instanz, die unter Harbor-Registry-Instanzen erstellen erstellt wurde.
Folgen Sie der Anleitung unter Docker so konfigurieren, dass die Harbor-Stammzertifizierungsstelle vertraut wird.
Optional: Prüfen Sie, ob der Credential Helper erfolgreich konfiguriert wurde, indem Sie prüfen, ob der Eintrag
mhszu~/.docker/config.jsonhinzugefügt wurde:cat DOCKER_CONFIG_PATHErsetzen Sie
DOCKER_CONFIG_PATHdurch 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".Konfigurieren Sie das Mandantenprojekt in
gdcloud:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTDie folgende Ausgabe wird angezeigt:
Updated property [core/project].Suchen Sie ein Harbor-Projekt, auf das Sie Verwaltungszugriff haben. Erstellen Sie ein Harbor-Projekt falls noch keines vorhanden ist.
Führen Sie Docker-Vorgänge aus, z. B. das Übertragen per Push oder Pull eines Images:
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 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 bei 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-CLI an. Wenn Sie aufgefordert werden, die Anmeldedaten einzugeben, verwenden Sie die Anmeldedaten, die vom Credential Helper zurückgegeben wurden.
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 in Docker oder Helm anmelden
So melden Sie sich mit CLI-Secrets in Docker oder Helm an:
- Melden Sie sich mit einem IAP-Nutzerkonto in Harbor an.
- Klicken Sie auf Ihren Nutzernamen und wählen Sie Nutzerprofil aus.
- Klicken Sie auf Kopieren , um das CLI-Secret zu kopieren, das mit Ihrem Konto verknüpft ist.
Optional: Klicken Sie in Ihrem Nutzerprofil auf die Ellipsen, um Schaltflächen zum automatischen Generieren oder manuellen Erstellen eines neuen CLI-Secrets anzuzeigen.
Wenn Sie ein neues CLI-Secret generiert haben, klicken Sie auf Kopieren , um es zu kopieren.
Sie können Ihr CLI-Secret jetzt als Passwort verwenden, wenn Sie sich über die Docker- oder Helm-CLI in Harbor anmelden:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
Ersetzen Sie Folgendes:
USERNAME: der Nutzername des Harbor-KontosCLI_SECRET: das generierte CLI-Secret.HARBOR_INSTANCE_URL: die URL der Harbor-Instanz.
Nächste Schritte
Nachdem Sie sich in Docker und Helm angemeldet haben, ist Ihre Registry vollständig verbunden und Sie können sie verwenden: