פתרון בעיות בבדיקות אימות

כדי לוודא שתמונות VM בהתאמה אישית מופעלות בצורה תקינה ועומדות בדרישות ההגדרה, Image Builder מריץ בדיקות אימות אוטומטיות במכונת VM זמנית לבדיקה. אם אחד מהבדיקות האלה נכשל, הצינור נעצר ו-Image Builder לא מפרסם את התמונה הסופית.

לפני שמתחילים

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init
  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

סקירה כללית

אם שלבי ההתאמה האישית הושלמו בהצלחה, כלי התזמור מייצא את דיסק האתחול של המכונה הווירטואלית כתמונת בדיקה זמנית (בשם image-builder-test-image-BUILD_ID במשפחה image-builder-test-images).

הכלי לניהול תהליכים מפעיל מכונה וירטואלית לבדיקה מהתמונה הזו ומריץ חבילה של בדיקות מערכת. הכלי Image Builder מוציא את תוצאות הבדיקה בפורמט XML רגיל של JUnit ישירות ליומני Cloud Build.

פתרון בעיות בבדיקות אימות ספציפיות

כדאי לעיין בסיבות הנפוצות לכשלים ובשלבי האבחון של כל בדיקת אימות:

אימות מנהל התקן של Intel IDPF

בבדיקה הזו מוודאים שמופעלות מכונות וירטואליות נתמכות שנטען בהן מנהל ההתקן של פונקציית נתיב הנתונים של תשתית Intel (idpf) בחיבורי רשת פיזיים.

  • תנאי כשל: האימות של המכונה הווירטואלית נכשל אם היא חוזרת לחבילת מתאם רשת כללית או אם לליבת האורח חסר מודול מנהל ההתקן הפעיל idpf.
  • הפתרון:
    • מוודאים שלמערכת ההפעלה הבסיסית יש גרסת ליבה שתואמת ל-IDPF.
    • מוודאים שכלי רשת רגילים לא מסירים את מנהל ההתקן או לא כוללים אותו ברשימת חסימה.
    • בגרסאות ליבה מותאמות אישית, צריך לוודא שההגדרה CONFIG_IDPF מוגדרת.

אימות של סוכנים אורחים ורשתות

הבדיקה הזו מוודאת שלמופע יש תקשורת תקינה עם האורח והגדרות סטנדרטיות של ממשק הרשת.

  • תנאי כשל: הבדיקה נכשלת בכל אחד מהמקרים הבאים:
    • במנהל שירותי הסוכן האורח SubState לא מוצג סטטוס running.
    • אף ממשק רשת שאינו מסוג loopback לא מחובר לאינטרנט.
    • השמות של הממשקים לא תואמים לתבניות הסטנדרטיות הצפויות (לדוגמה, eth* או en*).
  • הפתרון:

    • מוודאים שהסוכן של האורח מותקן ומוגדר להפעלה בזמן האתחול:

      systemctl is-active google-guest-agent
      
    • מוודאים שהגדרות הרשת (כמו תבניות netplan או ifupdown) לא משביתות את הממשקים הווירטואליים הראשיים.

אימות של הפעלה מאובטחת

בבדיקה הזו מוודאים שההפעלה המאובטחת של UEFI פעילה ושהמערכת אוכפת אימות של חתימת ליבת מערכת ההפעלה של האורח בתמונה.

  • תנאי לכישלון: הבדיקה נכשלת אם משתני ה-UEFI של Compute Engine מדווחים על SecureBoot שלא שווה ל-1 או על SetupMode שלא שווה ל-0.
  • הפתרון:

    • מוודאים שהתמונה כוללת מפתחות חתימה תקינים.
    • בקובץ imagebuilder.yaml, מוודאים שהקטע guestOsFeatures מכיל את UEFI_COMPATIBLE מתחת לבלוק היעדים:

      destinations:
        - diskImage:
            guestOsFeatures:
              - UEFI_COMPATIBLE
      

השעיה או חידוש של האימות

בבדיקה הזו, המכונה הווירטואלית לבדיקה מושהית באמצעות Compute Engine API, ונבדק שאחרי שהרצת המכונה הווירטואלית מתחדשת, הקישוריות משוחזרת בלי להפעיל מחדש את האורח.

  • תנאי הכשל: הבדיקה נכשלת אם המכונה מופעלת מחדש כשהיא מתעוררת, אם היא נתקעת במהלך ההשהיה או אם היא לא מצליחה לשחזר פינגים ברשת.
  • הפתרון:
    • מוודאים ששירותי ACPI ומדיניות צריכת החשמל במערכת ההפעלה של האורח מופעלים ומוגדרים להגיב לאירועי ACPI.
    • בודקים את יומני המערכת של האורח (/var/log/syslog או /var/log/messages) כדי לראות אם דמונים מותאמים אישית חוסמים בקשות להעברת המערכת למצב שינה.

דילוג על בדיקות האימות

מומלץ לאמת תמונות של מוצרים בסביבת ייצור, אבל אפשר לדלג על בדיקות אימות במהלך הבדיקה על ידי הגדרת skipSystemTests: true בקטע spec.config בקובץ imagebuilder.yaml:

spec:
  config:
    skipSystemTests: true