במאמר הזה מוסבר איך להגדיר אימות למאגרי Docker Hub במעלה הזרם עבור מאגרים מרוחקים של Artifact Registry.
מומלץ לבצע אימות ב-Docker Hub גם אם אתם משתמשים רק בתמונות ציבוריות, כי האימות יגדיל את מגבלת קצב ההורדה. מידע נוסף על מגבלות קצב ההורדה ב-Docker Hub זמין במאמר מגבלת קצב ב-Docker Hub. מאגרי מידע מרוחקים מאפשרים להוסיף את שם המשתמש שלכם ב-Docker Hub ואת אסימון הגישה האישי שנשמר כסוד כדי לבצע אימות ב-Docker Hub.
במאמר הזה אנחנו מניחים שכבר יצרתם מאגר מרוחק של Docker ב-Artifact Registry וחשבון ב-Docker Hub.
מידע נוסף על מאגרי מידע מרוחקים זמין במאמר סקירה כללית על מאגרי מידע מרוחקים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת אימות ב-Docker Hub למאגרים מרוחקים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין ב-Artifact Registry (
roles/artifactregistry.admin) - אדמין ב-Secret Manager (
roles/secretmanager.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת אסימון גישה אישי ב-Docker Hub
- נכנסים אל Docker Hub.
- יוצרים אסימון גישה אישי עם הרשאות קריאה בלבד.
מעתיקים את טוקן הגישה.
שומרים את אסימון הגישה בקובץ טקסט במחשב או ב-Cloud Shell.
שמירת אסימון הגישה האישי בגרסה סודית
- יוצרים סוד ב-Secret Manager.
- שומרים את טוקן הגישה האישי שלכם ב-Docker Hub כגרסת סוד.
מעניקים לחשבון השירות של Artifact Registry גישה לסוד
סוכן השירות של Artifact Registry פועל בשם Artifact Registry כשהוא מתקשר עם שירותים של Google Cloud . כדי לאפשר לסוכן השירות להשתמש בסודות שמאוחסנים ב-Secret Manager, צריך להעניק לסוכן השירות הרשאה לצפייה בגרסת הסוד.
המזהה של סוכן השירות הוא:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER הוא מספר הפרויקט של הפרויקט שבו פועל Artifact Registry. Google Cloud
כדי להעניק לסוכן השירות של Artifact Registry את התפקיד Secret Manager Secret Accessor:
המסוף
-
נכנסים לדף Secret Manager במסוף Google Cloud .
-
בדף Secret Manager, לוחצים על תיבת הסימון שליד שם הסוד.
-
אם החלונית לא פתוחה, לוחצים על Show Info Panel כדי לפתוח אותה.
-
בחלונית המידע, לוחצים על Add Principal.
-
באזור הטקסט New principals, מזינים את כתובות האימייל של חברי הקבוצה שרוצים להוסיף.
-
בתפריט הנפתח Select a role, בוחרים באפשרות Secret Manager ואז באפשרות Secret Manager Secret Accessor.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
member הוא חבר ב-IAM, כמו משתמש, קבוצה או חשבון שירות.
C#
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Ruby
כדי לבצע אימות ב-Artifact Registry, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
API
הערה: בניגוד לדוגמאות האחרות, הפקודה הזו מחליפה את כללי מדיניות IAM.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
מידע נוסף על מתן או ביטול גישה לסודות זמין במאמר בנושא ניהול הגישה לסודות.
הוספת פרטי הכניסה ל-Docker Hub למאגר המרוחק
כדי לעדכן את המאגר המרוחק עם פרטי הכניסה שלכם ב-Docker Hub:
המסוף
פותחים את הדף Repositories במסוף Google Cloud .
ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.
בקטע Remote repository authentication mode (מצב אימות של מאגר מרוחק), מעדכנים או מוסיפים את שם המשתמש שלכם ב-Docker Hub ואת גרסת הסוד שמכילה את אסימון הגישה שלכם ב-Docker Hub.
CLI של gcloud
כדי לעדכן את המאגר המרוחק עם פרטי הכניסה שלכם ב-Docker Hub, מריצים את הפקודה הבאה:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
מחליפים את מה שכתוב בשדות הבאים:
-
REPOSITORYבשם של מאגר מרוחק ב-Artifact Registry. PROJECT_IDבמזהה הפרויקט ב- Google Cloud .-
LOCATIONעם המיקום האזורי או הרב-אזורי של המאגר. אפשר להשמיט את הדגל הזה אם מגדירים ברירת מחדל. כדי לראות רשימה של מיקומים נתמכים, מריצים את הפקודהgcloud artifacts locations list. -
USERNAMEבשם המשתמש שלכם ב-Docker Hub. -
SECRET_PROJECT_IDבמזהה הפרויקט שלGoogle Cloud הפרויקט שבו יצרתם את הסוד. SECRET_IDבשם שנתתם לסוד.-
SECRET_VERSIONבגרסת הסוד שבה שמרתם את אסימון הגישה שלכם ל-Docker Hub.
הפרטים שלכם ישמשו בפעם הבאה שהמאגר המרוחק ישלח בקשה לארטיפקט ממקור במעלה הזרם.
המאמרים הבאים
- מידע נוסף על מאגרי מידע ב-Artifact Registry
- שליפת קובצי אימג' באמצעות Docker.
- עוברים על המדריך למתחילים למאגר מרוחק ב-Docker Hub.