בדף הזה מוסבר איך להיכנס ל-Docker או ל-Helm באמצעות כלי העזר לפרטי כניסה של Managed Harbor Service (MHS) או סודות של CLI.
כדי לספק גמישות, Google Distributed Cloud (GDC) air-gapped מספק שתי שיטות לאימות באמצעות Docker ו-Helm ממופע הרישום של Harbor. השיטה הראשונה היא שימוש בכלי העזר לפרטי כניסה של Managed Harbor Service (MHS) ובזהות GDC שלכם כדי להיכנס ל-Docker או ל-Helm CLI. אחרי האימות באמצעות GDC, אפשר להיכנס ללקוח Docker ולבצע פעולות Docker, בלי ליצור או לנהל סודות נפרדים של CLI ב-Harbor.
השיטה השנייה היא שימוש בסודות של CLI. אחרי שתעברו אימות באמצעות שרת proxy לאימות זהויות (IAP) ותיכנסו לממשק של Harbor בפעם הראשונה, תוכלו להשתמש ב-CLI של Docker או של Helm כדי לגשת ל-Harbor. רכיבי ה-CLI של Docker ו-Helm לא יכולים לטפל בהפניה אוטומטית ל-IAP, ולכן Harbor מספק סוד של CLI לשימוש כשנכנסים מ-Docker או מ-Helm. השיטה הזו זמינה רק כש-Harbor משתמש באימות IAP.
לפני שמתחילים
כדי להגדיר אימות של Docker ו-Helm למופעי מאגר Harbor, צריך להתקין בסביבה את כלי העזר לאישורי MHS (docker-credential-mhs). עוזר פרטי הכניסה כלול כברירת מחדל בחבילת ה-CLI של gcloud. מידע נוסף זמין במאמר סקירה כללית על gcloud CLI.
התפקידים שצריך ב-IAM
כדי להגדיר אימות למופעי מאגר Harbor, צריך לפנות לאדמין IAM בפרויקט ולבקש את התפקיד Harbor Instance Viewer (harbor-instance-viewer), שמאפשר לקבל, להציג ולעקוב אחרי מופעי Harbor במרחב השמות של הפרויקט. התפקיד הזה כולל את ההרשאות הנדרשות לצפייה בפרטים של מופעי Harbor קיימים, כדי שתוכלו לאחזר את כתובות ה-URL של המרשם לצורך אימות.
כניסה ל-Docker באמצעות הזהות ב-GDC
משתמשים בכלי העזר לפרטי כניסה של MHS עם הזהות ב-GDC כדי להיכנס ל-Docker CLI. כדי לבצע אימות באמצעות Docker, פועלים לפי השלבים הבאים:
נכנסים לשרת Management API באמצעות GDC CLI לפי ההוראות שבקטע כניסה.
מגדירים את Docker לשימוש בכלי העזר לפרטי כניסה של 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}מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NAME: השם של פרויקט הדייר. זהו שם הפרויקט שסיפקתם כשיצרתם את מופע Harbor. -
HARBOR_INSTANCE_NAME: השם של מופע Harbor שנוצר ביצירת מופעים של מאגר Harbor.
-
פועלים לפי ההוראות במאמר בנושא הגדרת Docker כך שיסמוך על CA הבסיסי של Harbor.
אופציונלי: כדי לוודא שהכלי לעזרה בפרטי הכניסה הוגדר בהצלחה, בודקים שהערך
mhsנוסף ל-~/.docker/config.json:cat DOCKER_CONFIG_PATHמחליפים את
DOCKER_CONFIG_PATHבנתיב לקובץ התצורה של Docker. לדוגמה,~/.docker/config.json.הפלט אמור להיראות כך:
{ "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" } }בדוגמה הזו מוצג פלט תקין של
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs".מגדירים את פרויקט הדייר ב-
gdcloud:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTהפלט הבא מוצג:
Updated property [core/project].מאתרים פרויקט Harbor שיש לכם גישת ניהול אליו. יוצרים פרויקט ב-Harbor אם אין פרויקט קיים.
ביצוע פעולות ב-Docker, כמו שליחה או משיכה של תמונה:
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פלט מוצלח ייראה כך:
# 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:latestאם הפעולה לא תצליח, יכול להיות שיוצג הפלט הבא:
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בדוגמה הזו, תוקף סשן האימות ב-GDC פג ואתם צריכים להיכנס שוב ל-GDC. מידע נוסף זמין במאמר בנושא כניסה.
כניסה ל-Helm באמצעות הזהות ב-GDC
משתמשים בכלי העזר לפרטי כניסה של MHS עם הזהות שלכם ב-GDC כדי להיכנס ל-CLI של Helm.
כדי לבצע אימות באמצעות Helm, פועלים לפי השלבים הבאים:
אחרי שמבצעים אימות באמצעות GDC, מאחזרים את פרטי הכניסה של המשתמש מהכלי לעזרה בפרטי כניסה:
echo $REGISTRY | docker-credential-mhs getהפלט אמור להיראות כך:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}מתחברים ל-Helm CLI באמצעות פרטי הכניסה. כשמתבקשים להזין את פרטי הכניסה, משתמשים בפרטי הכניסה שמוחזרים על ידי הכלי לעזרה בפרטי הכניסה.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bwפלט תקין של הפעולה הזו נראה כך:
Login Succeeded
כניסה ל-Docker או ל-Helm באמצעות סודות של CLI
כדי להיכנס ל-Docker או ל-Helm באמצעות סודות של CLI, פועלים לפי השלבים הבאים:
- נכנסים ל-Harbor באמצעות חשבון משתמש ב-IAP.
- לוחצים על שם המשתמש ובוחרים באפשרות פרופיל משתמש.
- כדי להעתיק את הסוד של ה-CLI שמשויך לחשבון, לוחצים על העתקה.
אופציונלי: כדי להציג לחצנים ליצירה אוטומטית או ליצירה ידנית של סוד חדש ב-CLI, לוחצים על סמל האליפסות בפרופיל המשתמש.
אם יצרתם סוד חדש של CLI, לוחצים על העתקה כדי להעתיק אותו.
עכשיו אפשר להשתמש בסוד של ה-CLI כסיסמה כשנכנסים ל-Harbor מ-Docker או מ-Helm CLI:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם המשתמש בחשבון Harbor -
CLI_SECRET: הסוד שנוצר ב-CLI. -
HARBOR_INSTANCE_URL: כתובת ה-URL של מופע Harbor.
המאמרים הבאים
אחרי שנכנסים ל-Docker ול-Helm, המאגר מחובר באופן מלא ואפשר להתחיל להשתמש בו: