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:
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 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:
PROJECT_NAME
: der Name Ihres Mandantenprojekts. Dies ist derselbe Projektname, den Sie beim Erstellen Ihrer Harbor-Instanz angegeben haben.HARBOR_INSTANCE_NAME
: Der Name der Harbor-Instanz, die in Harbor-Registrierungsinstanzen erstellen erstellt wird.
Folgen Sie der Anleitung unter Docker so konfigurieren, dass die Harbor-Stammzertifizierungsstelle vertrauenswürdig ist.
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"
.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].
Suchen Sie ein Harbor-Projekt, auf das Sie Verwaltungszugriff haben. Erstellen Sie ein Harbor-Projekt, falls noch keines vorhanden ist.
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:
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"}
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:
- 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 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 das Dreipunkt-Menü
.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-Befehlszeile 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.