במסמך הזה מפורטת סקירה כללית על מאגרי מידע וירטואליים. הוראות ליצירת מאגר וירטואלי מפורטות במאמר יצירת מאגרים וירטואליים.
המכסות והמגבלות של Artifact Registry חלות על מאגרים וירטואליים.
איך פועלים מאגרי מידע וירטואליים
מאגרים וירטואליים משמשים כנקודת גישה יחידה להורדה, להתקנה או לפריסה של ארטיפקטים באותו פורמט ממאגרים במעלה הזרם. מאגר מידע במעלה הזרם יכול להיות מאגר מידע רגיל או מרוחק של Artifact Registry.
תרחישים לדוגמה ויתרונות
- הגדרה פשוטה יותר של לקוחות
למשימות שדורשות רק גישת קריאה למאגרים, צריך להגדיר רק מאגר אחד של Artifact Registry כדי לגשת לארטיפקטים שמאוחסנים בכמה מאגרי upstream.
לדוגמה:
- מאגר וירטואלי לחבילות Maven יכול לספק חבילות Java פרטיות ממאגר רגיל של Artifact Registry וחבילות Java ציבוריות ממאגר מרוחק ששומר במטמון חבילות ציבוריות מ-Maven Central.
- מאגר וירטואלי יכול לספק חבילות Python פרטיות מכמה מאגרים סטנדרטיים במעלה הזרם שנמצאים בבעלות של צוותים שונים. לכל צוות יש גישת כתיבה למאגר המידע במעלה הזרם, אבל הוא מוריד חבילות מצוותים אחרים באמצעות המאגר הווירטואלי.
- פתרון תלויות בטוח יותר
אתם יכולים להקצות עדיפות למאגרי מידע במעלה הזרם כדי לקבל יותר שליטה על מאגר המידע ש-Artifact Registry בוחר כשהארטיפקט המבוקש נמצא ביותר ממאגר מידע אחד במעלה הזרם.
חלק מהכלים, כמו הכלי Python
pip, לא מספקים דרך לשלוט בסדר החיפוש כשמוגדרים בלקוח מאגרים פרטיים וציבוריים. הגדרה מסוג כזה חשופה להתקפת בלבול תלות, שבה מישהו מעלה גרסה חדשה של חבילה עם קוד לא תקין למאגר ציבורי כדי לגרום ללקוחות לבחור את הגרסה הלא תקינה.כדי לצמצם את הסיכון הזה, אפשר להשתמש במאגרי מידע וירטואליים ומרוחקים ביחד:
- יוצרים מאגר מרוחק כפרוקסי למאגר הציבורי.
- יוצרים מאגר סטנדרטי לחבילות פרטיות.
- יוצרים מאגר וירטואלי שמוגדר לתת עדיפות למאגר הרגיל אם קיימת גרסה של אותה חבילה בשני המאגרים.
- מגדירים את מנהלי החבילות וכלים אחרים כך שיקראו רק מהמאגר הווירטואלי, כדי שהלוגיקה של הלקוח לא תהיה מעורבת בבחירת המאגר.
כדי לקרוא על שיטות מומלצות אחרות לניהול תלות, אפשר לעיין במאמר בנושא ניהול תלות.
איך מאגרים וירטואליים בוחרים מאגר במעלה הזרם
לכל מאגר מידע במעלה הזרם צריך להיות עדיפות מוגדרת. העדיפות היא מספר שלם שמשמש כמשקל, ולא כדירוג. כלומר, מאגרי מידע עם ערך עדיפות מספרי גבוה יותר מקבלים עדיפות על פני מאגרי מידע עם ערכי עדיפות נמוכים יותר.
כשמבקשים ארטיפקט שנמצא בכמה מאגרי מידע במעלה הזרם, Artifact Registry משתמש בלוגיקת התעדוף הבאה:
- המאגר עם הערך הכי גבוה מקבל עדיפות. לדוגמה, ערך של
10נחשב לעדיפות גבוהה יותר מערך של1. - אם לכמה מאגרי מידע במעלה הזרם יש אותה עדיפות, אפשר להציג את הארטיפקט מכל אחד מהמאגרים האלה.
מומלץ גם לכלול בבקשה את גרסת הארטיפקט. כך, הלקוח מחזיר את מאגר המידע במעלה הזרם עם העדיפות הכי גבוהה שמכיל את גרסת הארטיפקט המבוקשת. אם לא מציינים את גרסת הארטיפקט, יכול להיות שהלקוח יחזיר את הגרסה האחרונה של הארטיפקט, ללא קשר לעדיפות המאגר.
כשמגדירים לקוח לחפש מאגר וירטואלי ומאגרים נוספים, יכול להיות שהלקוח עדיין יוריד ארטיפקטים ממאגרים מחוץ ל-Artifact Registry.לדוגמה, אם מגדירים את הכלי pip של Python לחפש ב-PyPI ובמאגר וירטואלי, יכול להיות שהחבילה תורד ישירות מ-PyPI כי הכלי pip תמיד יבחר את הגרסה האחרונה של חבילה, בלי קשר למאגר שממנו היא מגיעה. אם pip מוגדר לחפש רק במאגר הווירטואלי, תוכלו לשלוט בעדיפות של כל המאגרים במעלה הזרם, כולל מאגר מרוחק במעלה הזרם שמשמש כשרת proxy ל-PyPI.
פורמטים נתמכים של מאגרים
אפשר ליצור מאגרים וירטואליים בפורמטים הבאים של מאגרי Artifact Registry:
חבילות שפה:
חבילות OS:
אם אתם חדשים ב-Artifact Registry, תוכלו להשתמש במדריכי ההתחלה המהירה כדי ללמוד איך להגדיר מאגרי מידע רגילים לפורמטים האלה.
מגבלות
בנוסף למכסות ולהגבלות של Artifact Registry, יש הגבלות נוספות על מאגרי מידע וירטואליים:
- מאחר שמאגרי נתונים וירטואליים לא שומרים נתונים, הם יופיעו ריקים כשמריצים את
gcloud artifacts docker images listוכשמציגים את מאגר הנתונים במסוף Google Cloud . - מאגרי חבילות תלויים (upstream) רגילים ב-Artifact Registry צריכים להיות באותו אזור או במספר אזורים כמו המאגר הווירטואלי, אבל הם יכולים להיות בפרויקטים שונים של Google Cloud .
מאגרי Maven וירטואליים לא מאפשרים להגדיר את מדיניות הגרסה ל-snapshot או ל-release.
מאגרי Apt ו-Yum במעלה הזרם חייבים להיות מאגרי Artifact Registry רגילים.
מאגרי Apt ו-Yum סטנדרטיים מעדכנים את אינדקס החבילות באופן אסינכרוני אחרי שמייבאים, מעלים או מוחקים חבילה. במאגרים קטנים, יצירה מחדש של האינדקס יכולה להימשך כמה שניות. במאגרים גדולים יותר, ייתכן שיחלפו כמה דקות או יותר עד שהאינדקס ייווצר מחדש. אחרי שהאינדוקס מחדש יסתיים, לקוחות Apt ו-Yum יוכלו לראות את השינוי במאגר.
מצבי מאגר אחרים
מצבי המאגר האחרים הם:
- רגיל: מצב ברירת המחדל של המאגר. אתם מעלים או מפרסמים ארטיפקטים כמו חבילות פרטיות ישירות למאגרים רגילים. אפשר להוריד ישירות ממאגרים רגילים ספציפיים, אבל גישה לקבוצות של מאגרים באמצעות מאגר וירטואלי מפשטת את הגדרת הכלי.
- מאגר מרוחק: מאגר שמשמש כפרוקסי למקור במעלה הזרם על ידי שמירת חבילות במטמון ב-Artifact Registry אחרי שהן מורדות מהמקור במעלה הזרם בפעם הראשונה. בפעם הבאה שתבקשו את אותה גרסת חבילה, Artifact Registry יספק את העותק שנשמר במטמון.
- Connector (גרסת Preview): מאגר שמשמש כפרוקסי למקור במעלה הזרם, אבל לא שומר במטמון ארטיפקטים ב-Artifact Registry. במקום זאת, כל הבקשות מופנות למקור במעלה הזרם. מאגרי מחברים שימושיים אם אתם צריכים יכולת מלאה לביקורת של מקור הנתונים שלכם או אם יש לכם כללי מדיניות שמונעים שמירת ארטיפקטים במטמון.
המאמרים הבאים
- יצירת מאגרי מידע וירטואליים.
- מידע נוסף על מאגרי Artifact Registry זמין במאמר סקירה כללית של מאגרים.