ב-Artifact Registry אתם יכולים לאמת מאגרים מרוחקים ב-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 הוא מספר הפרויקט ב- Google Cloud שבו פועל Artifact Registry.
כדי להקצות לסוכן השירות של 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.
בקטע אימות מאגר מרוחק, מעדכנים או מוסיפים את שם המשתמש ב-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.