בעזרת Artifact Registry תוכלו לאחסן, ליצור גרסאות ולאחזר קובצי אימג' של קונטיינרים באמצעות Docker או Podman. אפשר גם לשלוף תמונות באמצעות הכלי crictl כדי לפתור בעיות בצמתים של Google Kubernetes Engine. כדי להריץ עומסי עבודה, אפשר לעיין במאמר פריסה אל Cloud de Confiance או במאמר ניהול תמונות כדי לראות רשימה של תמונות, לתייג אותן ולמחוק אותן.
לפני שמתחילים
- אם מאגר היעד לא קיים, צריך ליצור מאגר חדש.
- צריכה להיות לכם לפחות גישת כתיבה למאגר ב-Artifact Registry.
- כדי להעביר קובצי אימג' באמצעות Docker, צריך להתקין את Docker אם הוא עדיין לא מותקן.
- כדי להעלות תמונות באמצעות Podman, צריך להתקין את Podman
- אם Google Cloud CLI עדיין לא מותקן, צריך להתקין אותו.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להעלאה ולהורדה של תמונות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במאגר:
-
שליפת תמונות:
Artifact Registry Reader (
roles/artifactregistry.reader) -
תיוג תמונות והעלאה שלהן:
Artifact Registry Writer (
roles/artifactregistry.writer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אימות למאגר
כשמשתמשים ב-Docker או בלקוח אחר של צד שלישי עם מאגר Docker, צריך לבצע אימות למאגר. בקטע הזה מופיע סיכום קצר של מה שצריך כדי להשלים את האימות בהצלחה. הוראות מפורטות זמינות במאמר הגדרת אימות ל-Docker.
שימוש בכלי עזר לאימות
בשביל כלי העזר של פרטי הכניסה של gcloud CLI או כלי עזר עצמאי של פרטי הכניסה, מארחי Artifact Registry שבהם אתם משתמשים צריכים להיות בקובץ ההגדרות של Docker.
Artifact Registry לא מוסיף באופן אוטומטי מארחי רישום לקובץ ההגדרות של Docker, לכן תצטרכו להוסיף את המארח שלכם לקובץ.
מריצים את הכלי לעזרה בהוספת פרטי כניסה כדי להוסיף את המארח. לדוגמה, הפקודה הבאה מוסיפה את u-france-east1-docker.s3nsregistry.fr.
כלי עזר לפרטי כניסה ל-CLI של gcloud:
gcloud auth configure-docker u-france-east1-docker.s3nsregistry.frכלי עזר עצמאי לפרטי כניסה
docker-credential-gcr configure-docker u-france-east1-docker.s3nsregistry.fr
שימוש בטוקן גישה
כדי לבצע אימות באמצעות אסימון גישה, יוצרים אסימון ומשתמשים בו כסיסמה באמצעות הפקודה docker login. הטוקנים תקפים ל-60 דקות, לכן מומלץ לבצע אימות זמן קצר לפני שמסמנים תמונות בתג, דוחפים או מושכים אותן.
בדוגמה הבאה נוצר אסימון גישה באמצעות התחזות לחשבון שירות, ואז מתבצע אימות ל-Artifact Registry. כדי ליצור אסימון בדרך הזו, צריכות להיות לכם הרשאות בתפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator).
Linux
gcloud auth print-access-token \
--impersonate-service-account ACCOUNT | docker login \
-u oauth2accesstoken \
--password-stdin https://LOCATION-docker.s3nsregistry.fr
Windows
gcloud auth print-access-token `
--impersonate-service-account ACCOUNT
ya29.8QEQIfY_...
docker login -u oauth2accesstoken -p "ya29.8QEQIfY_..." `
https://LOCATION-docker.s3nsregistry.fr
אם אין לכם הרשאות להתחזות לחשבון שירות, אתם יכולים להפעיל את חשבון השירות בסשן שלכם ב-CLI של gcloud ואז לקבל טוקן. פרטים נוספים זמינים בהוראות להגדרת אימות באמצעות טוקן גישה.
שימוש במפתח של חשבון שירות
במפתח של חשבון שירות משתמשים כמספר סיסמה עם הפקודה docker login.
לדוגמה, הפקודה הבאה משתמשת במפתח חשבון השירות בקידוד base64 בקובץ key.json כדי לבצע אימות ל-u-france-east1-docker.s3nsregistry.fr.
Linux
cat key.json | docker login -u _json_key_base64 --password-stdin \
https://u-france-east1-docker.s3nsregistry.fr
Windows
docker login -u _json_key_base64 --password-stdin https://u-france-east1-docker.s3nsregistry.fr < key.json
פרטים נוספים מופיעים בהוראות להגדרת אימות באמצעות מפתח של חשבון שירות.
העלאת תמונה באמצעות Docker
מצבי מאגר: standard
כדי להעביר בדחיפה תמונה מקומית למאגר Docker רגיל, צריך לתייג אותה עם שם המאגר ואז להעביר את התמונה בדחיפה.
אם במאגר Docker של Artifact Registry מופעלת האפשרות tag immutability, תג חייב תמיד להפנות לאותו גיבוי תמונה במאגר. אי אפשר להשתמש בתג בגרסה אחרת של אותה תמונה שמעלים למאגר. מידע נוסף על תמציות, תגים ואי-שינוי של תגים בקובצי אימג' של קונטיינר זמין במאמר גרסאות של קובצי אימג' של קונטיינר.
ההגבלות הבאות חלות על תמונות גדולות:
- זמן העלאה
- אם אתם מבצעים אימות ל-Artifact Registry באמצעות אסימון גישה, האסימון תקף רק ל-60 דקות. אם אתם צופים שזמן ההעלאה יהיה יותר מ-60 דקות, עליכם להשתמש בשיטת אימות אחרת.
- גודל התמונה
- הגודל המקסימלי של ארטיפקט הוא 5TB.
- Artifact Registry לא תומך בהעלאות בחלקים של Docker. חלק מהכלים תומכים בהעלאת תמונות גדולות באמצעות העלאות מקוטעות או העלאה מונוליתית אחת. כדי להעביר תמונות ל-Artifact Registry, צריך להשתמש בהעלאות מונוליטיות.
תיוג התמונה המקומית
מוודאים שהאימות שלכם מול המאגר בוצע.
קובעים את שם התמונה. הפורמט של שם תמונה מלא הוא:
LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGEמחליפים את הערכים הבאים:
-
LOCATIONהוא המיקום האזורי של המאגר שבו התמונה מאוחסנת. -
PROJECT-IDהוא Cloud de Confiance מזהה הפרויקט במסוף. -
REPOSITORYהוא שם המאגר שבו מאוחסן האימג'. -
IMAGEהוא שם התמונה. הוא יכול להיות שונה מהשם המקומי של התמונה.
לדוגמה, תמונה עם המאפיינים הבאים:
- מיקום המאגר:
u-france-east1 - שם המאגר:
my-repo - מזהה הפרויקט:
my-project - שם התמונה המקומית:
my-image - שם תמונת היעד:
test-image
בדוגמה הזו, שם התמונה הוא:
u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-imageפרטים על הפורמט של שם התמונה מופיעים במאמר בנושא שמות של מאגרים ותמונות.
-
מתייגים את התמונה המקומית בשם המאגר.
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGמחליפים את SOURCE-IMAGE בשם של התמונה המקומית או במזהה התמונה, ואת TAG בתג. אם לא מציינים תג, Docker מחיל את התג
latestשמוגדר כברירת מחדל.אם ההגדרה 'תגי תמונה שלא ניתן לשנות' מופעלת, התגים צריכים להיות ייחודיים לכל גרסת תמונה, כולל התג
latest. אי אפשר להעביר תמונה למאגר אם התג כבר נמצא בשימוש על ידי גרסה אחרת של אותה תמונה במאגר. כדי לבדוק אם ההגדרה מופעלת במאגר, מריצים את הפקודה:gcloud artifacts repositories describe REPOSITORY \ --project=PROJECT-ID \ --location=LOCATIONבדוגמה של התמונה מהשלב הקודם, אם התמונה המקומית
my-imageנמצאת בספרייה הנוכחית, משתמשים בפקודה הבאה:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-imageכדי להחיל תג ספציפי, משתמשים בפקודה:
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGכדי להשתמש בתג
stagingעם תמונת הדוגמה, מוסיפים את:stagingלפקודה:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging
העברת התמונה המתויגת ל-Artifact Registry
מוודאים שהאימות שלכם מול המאגר בוצע.
אם השתמשתם ב-
gcloud auth configure-dockerאו ב-docker-credential-gcr configure-dockerכדי להגדיר את לקוח Docker, ודאו ששם המארח של היעד מופיע בקובץ ההגדרות של Docker.מעלים את קובץ האימג' עם התג באמצעות הפקודה:
docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGEהפקודה הזו מעבירה את התמונה עם התג
latest. אם רוצים לשלוח תמונה עם תג אחר, משתמשים בפקודה:docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
כשדוחפים תמונה, היא מאוחסנת במאגר שצוין.
אחרי שמעבירים את התמונה, אפשר:
כדי לראות את התמונה, נכנסים לCloud de Confiance מסוף.
מריצים את הפקודה
gcloudכדי לראות את התגים של קובץ האימג' ואת ה-digest שנוצר אוטומטית:gcloud artifacts docker images list \ LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE [--include-tags]בדוגמה הבאה של פלט אפשר לראות תקציר של תמצית תמונה, אבל הפקודה תמיד מחזירה את התמצית המלאה של התמונה.
IMAGE DIGEST CREATE_TIME UPDATE_TIME u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:45 2019-04-10T15:08:45 u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:238... 2019-04-10T17:23:53 2019-04-10T17:23:53 u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:46 2019-04-10T15:08:46
העלאת תמונה באמצעות Podman
אפשר להעביר קובץ אימג' של קונטיינר מ-Podman אל Artifact Registry.
מריצים את הפקודה הבאה כדי ליצור את קובץ האימג' באמצעות Podman:
podman build -t IMAGE:latest .
מתייגים את תמונת Podman המקומית ב-Artifact Registry.
משתמשים בנתיב המלא של Artifact Registry לתג. הפורמט זהה לפורמט של Docker:
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE:TAGמריצים את הפקודה הבאה:
podman tag IMAGE-NAME LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY_NAME/PODMAN-IMAGE:TAG
מאמתים את Podman באמצעות Artifact Registry. כדי להשתמש בו עם הכלי לעזרה בהזנת פרטי הכניסה, מריצים את הפקודה הבאה:
gcloud auth configure-docker LOCATION-docker.pkg.dev
אם Podman לא יכול לקבל פרטי כניסה באופן אוטומטי, אפשר גם לבצע אימות באמצעות אסימון גישה. מריצים את הפקודה הבאה:
gcloud auth print-access-token | podman login -u oauth2accesstoken --password-stdin LOCATION-docker.pkg.dev
מעבירים בדחיפה את התמונה המתויגת אל Artifact Registry:
podman push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY_NAME/IMAGE:TAG
חשוב לוודא שהתג זהה לתג שבו השתמשתם כדי לתייג את תמונת Podman המקומית.
שליפת תמונות באמצעות Docker
Repository modes: standardמוודאים שהאימות שלכם מול המאגר בוצע.
אם השתמשתם ב-
gcloud auth configure-dockerאו ב-docker-credential-gcr configure-dockerכדי להגדיר את לקוח Docker, ודאו ששם המארח של היעד מופיע בקובץ ההגדרות של Docker.כדי לשלוף ממאגר, משתמשים בפקודה:
ghcr.io
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/OWNER/IMAGE:TAGאו
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/OWNER/IMAGE@IMAGE-DIGESTמחליפים את הערכים הבאים:
-
LOCATIONהוא המיקום האזורי של המאגר שבו התמונה מאוחסנת. -
PROJECTהוא Cloud de Confiance מזהה הפרויקט במסוף. -
PROJECTהוא Cloud de Confiance מזהה הפרויקט במסוף. -
REPOSITORYהוא שם המאגר שבו מאוחסן האימג'. -
OWNERהוא שם המשתמש או שם הארגון ב-GitHub של בעל המאגר. -
IMAGEהוא שם קובץ האימג' במאגר. -
TAGהוא התג של גרסת התמונה שרוצים למשוך. -
IMAGE-DIGESTהוא ערך הגיבוב sha256 של תוכן התמונה. לכל גרסה של תמונה יש תקציר תמונה ייחודי. במסוף Cloud de Confiance , לוחצים על התמונה הספציפית כדי לראות את המטא-נתונים שלה. התקציר מופיע כתקציר תמונה.
לדוגמה, תמונה עם המאפיינים הבאים:
- מיקום המאגר:
u-france-east1 - שם המאגר:
my-repo - מזהה הפרויקט:
my-project - בעלי המאגר:
owner-name - שם התמונה:
test-image - תג:
staging
הפקודה לשליפת התמונה היא:
docker pull u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/owner-name/test-image:stagingמאגרים אחרים
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGאו
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGESTמחליפים את הערכים הבאים:
-
LOCATIONהוא המיקום האזורי של המאגר שבו התמונה מאוחסנת. -
PROJECTהוא מזהה הפרויקט Cloud de Confiance במסוף. -
PROJECTהוא Cloud de Confiance מזהה הפרויקט במסוף. -
REPOSITORYהוא שם המאגר שבו מאוחסן האימג'. -
IMAGEהוא שם קובץ האימג' במאגר. -
TAGהוא התג של גרסת התמונה שרוצים למשוך. -
IMAGE-DIGESTהוא ערך הגיבוב sha256 של תוכן התמונה. לכל גרסה של תמונה יש תקציר תמונה ייחודי. במסוף Cloud de Confiance , לוחצים על התמונה הספציפית כדי לראות את המטא-נתונים שלה. התקציר מופיע כתקציר תמונה.
לדוגמה, תמונה עם המאפיינים הבאים:
- מיקום המאגר:
u-france-east1 - שם המאגר:
my-repo - מזהה הפרויקט:
my-project - שם התמונה:
test-image - תג:
staging
הפקודה לשליפת התמונה היא:
docker pull u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging-
מערכת Docker מורידה את התמונה שצוינה.
שליפת תמונות באמצעות crictl
crictl הוא כלי שורת פקודה שימושי למפתחים של סביבת זמן ריצה של CRI, שמאפשר להם לנפות באגים בסביבת זמן הריצה בלי להגדיר רכיבי Kubernetes. אם הצמתים של Google Kubernetes Engine משתמשים בזמן ריצה של containerd, אפשר למשוך תמונות מ-Artifact Registry באמצעות crictl.
מכיוון ש-crictl הוא בעיקר כלי לפתרון בעיות, חלק מהפקודות של Docker, כמו שליחה או תיוג של תמונות, לא זמינות.
כדי לשלוף תמונה מ-Artifact Registry:
נכנסים לדף VM Instances במסוף Cloud de Confiance .
מתחברים ל-SSH לצומת שבו רוצים לפתור בעיות.
מקבלים טוקן גישה לאימות מול המאגר.
curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
שולפים את התמונה באמצעות
crictl pull --credsוהערךaccess_tokencrictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
או
crictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST
הפלט אמור להיראות כך:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
המאמרים הבאים
- איך מנהלים תגים ומוחקים תמונות
- אם אתם רוצים להריץ קונטיינרים ב-Compute Engine, כדאי לקרוא על קונטיינרים ב-Compute Engine.
- שימוש ב-
crictlכדי לנפות באגים בצמתים של Kubernetes crictl: איך לשלוף אימג'ים ממאגרי Artifact Registry פרטיים- מידע נוסף על הגדרת
crictlמאגרי תמונות