במאמר הזה מוסבר על שלבים לפתרון בעיות שיכולים לעזור לכם אם נתקלתם בבעיות בניהול קובצי אימג' של קונטיינרים ב-Artifact Registry.
אי אפשר לשלוף תמונה או לפרוס אותה בסביבת זמן ריצה Google Cloud
כדאי לבדוק את הדברים הבאים:
- מוודאים שהנתיב המלא של התמונה שאתם דוחפים נכון. הנתיב חייב לכלול את שם המארח של המאגר, Google Cloud,
מזהה הפרויקט, המאגר והתמונה. לדוגמה:
מידע נוסף זמין במאמר שמות של מאגרי תמונות ותמונות.us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1 - מוודאים שלחשבון שממנו נמשכת התמונה יש את ההרשאות הנכונות לקריאה מהמאגר. אם השבתתם את ההקצאה האוטומטית של תפקידים לחשבונות שירות, אתם צריכים להקצות תפקידים ב-Artifact Registry לחשבונות השירות של זמן הריצה.
- בחשבונות שירות של Compute Engine, Cloud Run ו-Google Kubernetes Engine, צריך להעניק לחשבון השירות של זמן הריצה את התפקיד Artifact Registry Reader (
roles/artifactregistry.reader). - לחשבון השירות של Cloud Build, צריך להעניק את התפקיד Artifact Registry Writer (
roles/artifactregistry.writer) לחשבון השירות שמריץ את הבנייה. - אם אתם משתמשים ב-Docker או בכלי אחר של צד שלישי, אתם צריכים:
- הענקת הרשאות לחשבון שמבצע אינטראקציה עם המאגר.
- מגדירים את הלקוח לאימות מול המאגר.
אי אפשר לשלוח תמונה ל-Artifact Registry
נסו:
- מוודאים שהמאגר קיים. בניגוד ל-Container Registry, יצירת מאגר היא פעולה נפרדת מהעברת קובץ האימג' הראשון. אם המאגר לא קיים, צריך ליצור אותו.
- מוודאים שהנתיב המלא של התמונה שאתם דוחפים נכון. הנתיב חייב לכלול את שם המארח של המאגר, את Google Cloud מזהה הפרויקט, את המאגר ואת התמונה. לדוגמה:
us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1כל מאגר Artifact Registry הוא משאב נפרד, ולכן אי אפשר לשלוח תמונה לנתיב בלי מאגר. לדוגמה,
us-west1-docker.pkg.dev/my-project/my-image:v1הוא נתיב תמונה לא תקין.מידע נוסף זמין במאמר בנושא שמות של מאגרי תמונות ותמונות.
- מוודאים שלחשבון שממנו מתבצעת ההעלאה של האימג' יש הרשאות כתיבה למאגר. אם השבתתם את ההקצאה האוטומטית של תפקידים לחשבונות שירות, אתם צריכים להקצות תפקידים ב-Artifact Registry לחשבונות השירות של זמן הריצה.
- בחשבונות שירות של Compute Engine, Cloud Run ו-Google Kubernetes Engine, צריך להעניק לחשבון השירות של זמן הריצה את התפקיד Artifact Registry Writer (
roles/artifactregistry.writer). - לחשבון השירות של Cloud Build, צריך להעניק את התפקיד Artifact Registry Writer (
roles/artifactregistry.writer) לחשבון השירות שמריץ את הבנייה. - אם Artifact Registry החזיר את ההודעה
The repository has enabled tag immutability, המשמעות היא שהמאפיין tag immutability מוגדר למאגר. אי אפשר לשלוח תמונה עם תג שכבר נמצא בשימוש בגרסה אחרת של אותה תמונה במאגר. נסו לשלוח את התמונה שוב עם תג שלא נמצא בשימוש בגרסאות אחרות של התמונה שמאוחסנות.כדי לוודא שהמאגר מוגדר לתגי תמונה בלתי ניתנים לשינוי, בודקים את העמודה Immutable image tags (תגי תמונה בלתי ניתנים לשינוי) ברשימת המאגרים ב- Google Cloud console או מריצים את הפקודה הבאה:
gcloud artifacts repositories describe REPOSITORY \ --project=PROJECT-ID \ --location=LOCATION
הודעות ImagePullBackOff ו-ErrImagePull
ההודעות עם ImagePullBackOff ו-ErrImagePull מציינות ש-GKE לא יכול לשלוף תמונה מהמאגר.
- צריך לוודא שמתקיימות הדרישות לשליפת נתונים מ-Artifact Registry.
- אפשר לעיין במאמר פתרון בעיות בשליפת תמונות במסמכי התיעוד של GKE.