במאמר הזה מוסבר על שלבים לפתרון בעיות שיכולים לעזור לכם אם נתקלתם בבעיות בניהול חבילות של מערכת הפעלה ב-Artifact Registry.
בעיות באימות ובהרשאות
אי אפשר להתחבר למאגר כדי לבצע פעולות כמו התקנת חבילה.
הפלט ממנהל החבילות כולל שגיאה 401 או 403, שמציינת בעיות באימות או בהרשאות.
דוגמאות לשגיאות ב-APT:
Err:1 ar+https://u-france-east1-apt.s3nsregistry.fr/projects/my-project my-package Release Error downloading: code 401
E: Failed to fetch https://u-france-east1-apt.s3nsregistry.fr/projects/my-project/dists/quickstart-apt-repo/main/binary-amd64/Packages 403 Forbidden [IP: 74.125.20.82 443] E: Some index files failed to download. They have been ignored, or old ones used instead.
דוגמה לשגיאה ב-Yum:
/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
יש כמה סיבות אפשריות לשגיאות האלה. צריך לוודא שהמכונה הווירטואלית עומדת בדרישות הבאות:
מוודאים שלמכונה הווירטואלית משויך חשבון שירות.
מכונה וירטואלית ב-Compute Engine
- נכנסים לדף VM instances.
ברשימת המכונות הווירטואליות, לוחצים על שם המכונה הווירטואלית.
בכרטיסייה פרטים, חשבון השירות והיקפי הגישה מופיעים בקטע API וניהול זהויות.
כברירת מחדל, מכונות וירטואליות ב-Compute Engine משתמשות בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, ויש להן קבוצה מוגבלת של היקפי גישה. כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל היא בפורמט
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com.בהתאם להגדרות של מדיניות הארגון, יכול להיות שחשבון השירות שמוגדר כברירת מחדל יקבל אוטומטית את התפקיד 'עריכה' בפרויקט. אנחנו ממליצים מאוד להשבית את הענקת התפקיד האוטומטית על ידי החלת האילוץ
iam.automaticIamGrantsForDefaultServiceAccountsשל מדיניות הארגון. אם יצרתם את הארגון אחרי 3 במאי 2024, האילוץ הזה נאכף כברירת מחדל.אם משביתים את הענקת התפקיד האוטומטית, צריך לקבוע אילו תפקידים להעניק לחשבונות השירות שמוגדרים כברירת מחדל, ואז להעניק את התפקידים האלה בעצמכם.
אם לחשבון השירות שמוגדר כברירת מחדל כבר יש את התפקיד Editor, מומלץ להחליף את התפקיד הזה בתפקידים עם פחות הרשאות.
כדי לשנות את חשבון השירות או לצרף חשבון שירות למכונה וירטואלית, אפשר לעיין במאמר שינוי חשבון השירות והיקפי הגישה של מופע.
מכונה וירטואלית אחרת
במכונות וירטואליות אחרות, צריך חשבון שירות שיפעל בשם המכונה הווירטואלית.
אם אין לכם חשבון שירות, צריך ליצור חשבון שירות.
כדאי להקצות את התפקיד Artifact Registry Reader (
roles.artifactregistry.reader) בזמן שיוצרים את חשבון השירות, כדי שלא תצטרכו להגדיר הרשאות בשלב נפרד.
מוודאים שלחשבון השירות של המכונה הווירטואלית יש הרשאות קריאה למאגר, וגם היקף גישה ל-API
cloud-platform.מכונה וירטואלית ב-Compute Engine
מערכת Artifact Registry מאחזרת באופן אוטומטי את פרטי הכניסה של חשבון השירות של מכונת ה-VM. אם המאגר נמצא בפרויקט אחר מה-VM, צריך להעניק לחשבון השירות של ה-VM את התפקיד Artifact Registry Reader. צריך גם לוודא שלמכונה הווירטואלית יש היקף גישה
cloud-platform.כדי להגדיר את היקף הגישה של
cloud-platform,מפסיקים את מכונת ה-VM, ומחליפים את
INSTANCEבשם מכונת ה-VM.gcloud compute instances stop INSTANCEמגדירים את היקף הגישה:
gcloud compute instances set-service-account INSTANCE \ --scopes=cloud-platformמפעילים מחדש את המכונה הווירטואלית.
gcloud compute instances start INSTANCE
מכונה וירטואלית אחרת
מקצים לחשבון השירות של המכונה הווירטואלית את התפקיד 'קורא Artifact Registry'. כברירת מחדל, לחשבונות שירות בניהול המשתמשים יש
cloud-platformהיקף גישה.מוודאים שפעלתם לפי השלבים להכנת המכונה הווירטואלית לגישה למאגר. אפשר לעיין בהוראות ההכנה של Apt או של Yum.
מוודאים שהגדרתם נכון את Apt או את Yum כדי לגשת למאגר.
אם אתם מתחברים למאגר Apt ממכונה וירטואלית ב-Compute Engine, ודאו שכתובת ה-URL של המאגר כוללת את התחילית
ar+.
בעיות בכלי העזר לפרטי הכניסה
הודעת השגיאה הבאה מופיעה כשהמכונה הווירטואלית לא מצליחה לאתר את כלי העזר של Apt לניהול פרטי כניסה:
E: Unable to locate package apt-transport-artifact-registry
השגיאה מתרחשת כשמנסים להתקין את חבילת apt-transport-artifact-registry במכונה וירטואלית שנוצרה מתמונה שלא כוללת את מפתח החתימה של מאגר Apt.
כדי לפתור את הבעיה:
התקנת מפתח החתימה במכונה הווירטואלית:
Debian VM
מתקינים את מפתחות החתימה של מאגר Apt באמצעות הפקודה הבאה:
curl https://LOCATION-apt.s3nsregistry.fr/doc/repo-signing-key.gpg | sudo apt-key add - מחליפים את
LOCATIONבמיקום האזורי של המאגר.מכונה וירטואלית של Ubuntu
מתקינים את מפתחות החתימה של מאגר Apt באמצעות הפקודה הבאה:
curl https://LOCATION-apt.s3nsregistry.fr/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - מחליפים את
LOCATIONבמיקום האזורי של המאגר.מנסים שוב לבצע את שלבי ההכנה של ה-VM.
בעיות בתוסף אימות
הודעת השגיאה הבאה מופיעה כשיש בעיה בפלאגין לאימות של Yum או DNF:
Plugin "artifact-registry" can't be imported
לשגיאה יכולות להיות כמה סיבות. כדי לפתור את השגיאה, מנסים להריץ את הפלאגין ישירות כדי לוודא שקיימות תלויות, לבדוק אם יש בעיות ב-Python או לחשוף בעיות בסיסיות אפשריות אחרות.
כדי להריץ את הפלאגין ישירות, משתמשים באחת מהפקודות הבאות:
לפלאגין Yum:
python /usr/lib/yum-plugins/artifact-registry.pyעבור פלאגין DNF:
python3 /usr/lib/pythonVERSION-NUMBER/site-packages/dnf-plugins/artifact-registry.pyמחליפים את
VERSION-NUMBERבגרסת ברירת המחדל של Python להפצת Linux. לדוגמה, Enterprise Linux 8 כולל Python 3.6.אפשר לראות את רשימת הקבצים בחבילת הפלאגין המותקן כדי לוודא את השם של ספריית Python.
rpm -ql dnf-plugin-artifact-registry|grep artifact-registry.py
חסרים ארטיפקטים שהועלו לאחרונה
אם לקוח Apt או Yum לא מוצא חבילה שהועלתה או יובאה לאחרונה למאגר, יכול להיות שהסיבה לכך היא שהתהליך ליצירה מחדש של אינדקס חבילות Apt או Yum עדיין לא הושלם.
במאגרי מידע קטנים, יצירה מחדש של קובץ האינדקס של Apt או Yum יכולה להימשך כמה שניות. אם המאגרים גדולים, יכול להיות שהוספת אינדקס מחדש תימשך כמה דקות או יותר.
כדי לוודא שהחבילה נוספה למאגר בהצלחה, משתמשים ב-Google Cloud CLI כדי להציג את הקבצים בחבילה. מריצים את הפקודה:
gcloud artifacts files list \
--package=PACKAGE \
--project=PROJECT-ID \
--repository=REPOSITORY \
--location=LOCATION
לדוגמה, כדי לבדוק שהחבילה python-gflags בשם python3-gflags_1.5.1-5_all.deb הועלתה בהצלחה למאגר u-france-east1-apt.s3nsregistry.fr\apt-project\apt-repo, משתמשים בפקודה:
gcloud artifacts files list \
--package=python-gflags \
--project=apt-project \
--repository=apt-repo \
--location=u-france-east1
אם החבילה הועלתה בהצלחה, הקובץ יופיע בפלט עם מזהה ייחודי בשם הקובץ, בדומה לדוגמה הבאה:
FILE CREATE_TIME UPDATE_TIME SIZE (MB) OWNER
pool/python3-gflags_1.5.1-5_all_2414c7af6a64c99a5f488aad366d637a.deb 2023-01-12T20:39:53 2023-01-12T20:39:53 0.035 projects/apt-project/locations/u-france-east1/repositories/apt-repo/packages/python3-gflags/versions/1.5.1-5
שגיאת אימות בחלק מהחבילות שהועלו או יובאו
אם משך הזמן לייבוא או להעלאה של קבצים חורג מתקופת התפוגה של אסימון האימות, העלאות שיתבצעו אחרי תקופת התפוגה ייכשלו. התוקף של הטוקנים יפוג 60 דקות אחרי שמקבלים אותם. אם תוקף האסימון פג, תופיע שגיאה דומה לזו שבדוגמה הבאה בפלט של פקודת הייבוא.
errors:
- error:
code: 16
message: The request does not have valid authentication credentials.
gcsSource:
uris:
- gs://my-bucket/debs/python/python3-gflags_1.5.1-5_all.deb
כדי לפתור את הבעיה:
- כדאי לנסות להעלות או לייבא רק את החבילה הספציפית כדי לוודא שאפשר להוסיף את החבילה בנפרד במקום לייבא אותה כחלק מקבוצה.
- אם כמה חבילות נכשלו, מייבאים או מעלים קבוצות קטנות יותר כדי שהפעולה לא תחרוג מתקופת התפוגה של האסימון.