Halaman ini menjelaskan cara login ke Docker atau Helm menggunakan Managed Harbor Service (MHS) credential helper atau CLI secrets.
Untuk memberikan fleksibilitas, Google Distributed Cloud (GDC) dengan air gap menyediakan dua metode untuk mengautentikasi dengan Docker dan Helm dari instance registry Harbor Anda. Metode pertama adalah menggunakan helper kredensial Managed Harbor Service (MHS) dan identitas GDC Anda untuk login ke Docker atau Helm CLI. Setelah melakukan autentikasi dengan GDC, Anda dapat login ke klien Docker dan melakukan operasi Docker, tanpa harus membuat atau mengelola rahasia CLI terpisah di Harbor.
Metode kedua adalah menggunakan secret CLI. Setelah Anda melakukan autentikasi menggunakan Identity-Aware Proxy (IAP) dan login ke antarmuka Harbor untuk pertama kalinya, gunakan Docker atau Helm CLI untuk mengakses Harbor. Docker dan Helm CLI tidak dapat menangani pengalihan untuk IAP, jadi Harbor menyediakan secret CLI untuk digunakan saat login dari Docker atau Helm. Metode ini hanya tersedia saat Harbor menggunakan autentikasi IAP.
Sebelum memulai
Untuk mengonfigurasi autentikasi Docker dan Helm untuk instance registry Harbor, Anda harus memiliki hal berikut:
- Helper kredensial MHS
docker-credential-mhs
diinstal di lingkungan. Helper kredensial disertakan secara default dalam paket gcloud CLI. Untuk mengetahui informasi selengkapnya, lihat ringkasan gcloud CLI. - Peran akses dan identitas yang diperlukan. Minta Admin IAM Organisasi Anda untuk memberi Anda peran Harbor Instance Viewer (
harbor-instance-viewer
).
Login ke Docker dengan identitas GDC Anda
Gunakan helper kredensial MHS dengan identitas GDC Anda untuk login ke Docker CLI. Untuk melakukan autentikasi dengan Docker, ikuti langkah-langkah berikut:
Login ke server Management API dengan GDC CLI dengan mengikuti petunjuk di Login.
Konfigurasi Docker untuk menggunakan helper kredensial 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}
Ganti kode berikut:
PROJECT_NAME
: nama project tenant Anda. Ini adalah nama project yang sama yang Anda berikan saat membuat instance Harbor.HARBOR_INSTANCE_NAME
: nama instance Harbor yang dibuat di Membuat instance registry Harbor.
Ikuti petunjuk di bagian Mengonfigurasi Docker agar memercayai CA root Harbor.
Opsional: Verifikasi bahwa helper kredensial berhasil dikonfigurasi dengan memverifikasi bahwa entri
mhs
ditambahkan ke~/.docker/config.json
:cat DOCKER_CONFIG_PATH
Ganti
DOCKER_CONFIG_PATH
dengan jalur ke file konfigurasi docker Anda. Misalnya,~/.docker/config.json.
Outputnya mirip dengan hal berikut ini:
{ "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" } }
Contoh ini menunjukkan output
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs"
yang berhasil.Konfigurasi project tenant di
gdcloud
:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECT
Output berikut akan ditampilkan:
Updated property [core/project].
Identifikasi project Harbor yang akses pengelolaannya Anda miliki. Buat project Harbor jika belum ada.
Lakukan operasi Docker, seperti mengirim atau menarik image:
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
Output yang berhasil akan tampak seperti berikut ini:
# 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
Jika operasi tidak berhasil, Anda mungkin akan melihat output berikut:
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
Dalam contoh ini, sesi autentikasi GDC telah berakhir dan Anda harus login ke GDC lagi. Untuk mengetahui informasi selengkapnya, lihat Login.
Login ke Helm dengan identitas GDC Anda
Gunakan helper kredensial MHS dengan identitas GDC Anda untuk login ke Helm CLI.
Untuk melakukan autentikasi dengan Helm, ikuti langkah-langkah berikut:
Setelah mengautentikasi dengan GDC, ambil kredensial pengguna Anda dari pembantu kredensial:
echo $REGISTRY | docker-credential-mhs get
Outputnya mirip dengan hal berikut ini:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}
Login ke Helm CLI dengan kredensial. Saat diminta memasukkan kredensial, gunakan kredensial yang ditampilkan oleh credential helper.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw
Output yang berhasil untuk operasi ini akan terlihat seperti berikut:
Login Succeeded
Login ke Docker atau Helm dengan rahasia CLI
Untuk login ke Docker atau Helm dengan rahasia CLI, ikuti langkah-langkah berikut:
- Login ke Harbor dengan akun pengguna IAP.
- Klik nama pengguna Anda, lalu pilih Profil Pengguna.
- Untuk menyalin rahasia CLI yang terkait dengan akun Anda, klik Salin.
Opsional: Untuk menampilkan tombol guna membuat secret CLI baru secara otomatis atau manual, klik elipsis
di profil pengguna Anda.Jika Anda membuat CLI secret baru, klik
Salin untuk menyalinnya.Anda kini dapat menggunakan secret CLI sebagai sandi saat login ke Harbor dari Docker atau Helm CLI:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
Ganti kode berikut:
USERNAME
: nama pengguna akun HarborCLI_SECRET
: secret CLI yang dihasilkan.HARBOR_INSTANCE_URL
: URL instance Harbor.