ניפוי באגים באפליקציות Kubernetes באמצעות Cloud Code ל-IntelliJ

‫Cloud Code ל-IntelliJ מאפשר לכם לנפות בקלות באגים באפליקציות שנפרסו באשכול Kubernetes. אפשר לנפות באגים באפליקציה באשכול מקומי (כמו minikube או Docker Desktop), ב-Google Kubernetes Engine או בכל ספק שירותי ענן אחר.

התמיכה בניפוי באגים ב-Cloud Code מאפשרת לכם לדלג על הגדרה ידנית, כמו הגדרת העברת יציאות, התקנת קצה עורפי לניפוי באגים או הוספת ארגומנטים לניפוי באגים ספציפיים לשפה בצורה הנכונה. כל מה שצריך הוא אפליקציית Kubernetes שמוכנה לשימוש ב-Cloud Code וכוללת skaffold.yaml קובץ הגדרה.

בנוסף, Cloud Code מאפשר לכם לנפות באגים באפליקציה תוך כדי ביצוע שינויים בקוד המקור וחזרה עליו.

סביבות פיתוח משולבות (IDE) נתמכות

בטבלה הבאה מפורטות השפות וסביבות הפיתוח המשולבות (IDE) ש-Cloud Code תומך בהן לצורך ניפוי באגים. בטבלה מפורטים גם הפלאגינים הנדרשים, במקרים הרלוונטיים:

שפה מהדורות וסביבות פיתוח משולבות (IDE) נתמכות תוסף נדרש
Java IntelliJ IDEA Ultimate לא רלוונטי
‫IntelliJ IDEA Community לא רלוונטי
המשך IntelliJ IDEA Ultimate פלאגין Go
GoLand לא רלוונטי
Node.js IntelliJ IDEA Ultimate תוסף Node.js
WebStorm לא רלוונטי
Python IntelliJ IDEA Ultimate פלאגין Python
PyCharm Professional לא רלוונטי

מידע נוסף על תמיכה ב-IDE זמין במאמר סביבות IDE נתמכות של JetBrains.

באמצעות Cloud Code, אתם יכולים להגדיר נקודות עצירה ולנפות באגים באפליקציות מרוחקות שפועלות במאגדים בשפות הבאות:

Java

‫Cloud Code מוסיף באופן אוטומטי משתנה סביבה, JAVA_TOOL_OPTIONS, עם הגדרת JDWP מתאימה כדי להפעיל ניפוי באגים. אם התג JAVA_TOOL_OPTIONS כבר קיים, Cloud Code משתמש בהגדרות הקיימות שצוינו בתג JAVA_TOOL_OPTIONS.

Node.js

בהתאם למבנה של האפליקציה ולהגדרות ה-build של קובץ האימג' שלה, יכול להיות שתצטרכו לעזור למנפה הבאגים למפות את המקורות המקומיים למקורות המרוחקים בקונטיינר. כך מאפשרים למנפה הבאגים של Node לעבד את נקודות העצירה בצורה נכונה.

אפשר להגדיר את זה באחת מהדרכים הבאות:

  • הגדרה ידנית

    בוחרים את הגדרת ההרצה Develop on Kubernetes מהתפריט הנפתח ואז לוחצים על Edit Configurations (עריכת ההגדרות). בכרטיסייה Debug, מגדירים את מיפוי המקור מקובץ המקור של האפליקציה המקומית למיקום המקור בקונטיינר המרוחק.

    בחירת מיקום מקור בקטע מיפוי המקור בכרטיסיית הניפוי באגים

    אפשרויות ההגדרה:

    • File/directory – הקובץ או הספרייה המקומיים של האפליקציה שפועלת ב-Kubernetes.
    • נתיב מרוחק – הנתיב לקובץ או לספרייה שפועלים בקונטיינר ב-Kubernetes.
  • הגדרה אוטומטית

    אפשר לדחות את המיפוי הזה ל-Cloud Code. כשמתחילים את סשן ניפוי הבאגים, Cloud Code מנסה להסיק את המיפוי הזה באופן אוטומטי. המיפוי המשוער מוצג לכם בתיבת דו-שיח. תיבת דו-שיח אחת לכל ארטיפקט שמבצעים בו ניפוי באגים.

    תיבת דו-שיח של מיפוי נתיבים מרחוק לכל ארטיפקט, שבה מצוין הנתיב המרוחק שבו נעשה שימוש

    אפשרויות ההגדרה:

    • Local path (נתיב מקומי) – הנתיב המקומי אל שורש הארטיפקט שמבצעים בו דיבאג.
    • נתיב מרוחק – הנתיב לקובץ או לספרייה שפועלים בקונטיינר ב-Kubernetes. אתם יכולים לשנות את ברירת המחדל ולהגדיר ערך משלכם. אם לוחצים על ביטול, לא מוחל מיפוי.

המשך

כדי להגדיר את האפליקציה לניפוי באגים, האפליקציה צריכה להיות מבוססת על Go Module ולהיות מזוהה כאפליקציה מבוססת Go. כדי לעשות את זה, צריך להגדיר אחת ממשתני הסביבה הרגילים של זמן הריצה של Go בקונטיינר, כמו GODEBUG, ‏ GOGC, ‏ GOMAXPROCS או GOTRACEBACK. ‫GOTRACEBACK=single היא הגדרת ברירת המחדל ב-Go, ו-GOTRACEBACK=all היא הגדרה שימושית בדרך כלל.

אופציונלית (אבל מומלצת), האפליקציה צריכה להיבנות עם האפשרויות -gcflags='all=-N -l' להשבתת האופטימיזציות. פרופילים של Skaffold הם אפשרות שימושית למטרה הזו, ואפשר להגדיר אותם בשדה Deployment Profile (פרופיל פריסה) בהגדרת ההרצה בכרטיסייה Build/Deploy (יצירה/פריסה).

Python

כדי להגדיר את האפליקציה לניפוי באגים, צריך לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • הפלאגין, המהדורה וסביבת הפיתוח המשולבת (IDE) תואמים

    מידע על סביבות פיתוח משולבות (IDE), מהדורות ותוספים תואמים זמין במאמר בנושא סביבות פיתוח משולבות נתמכות.

  • גרסת Skaffold היא 1.25.0 ואילך

    אתם יכולים לאפשר ל-Cloud Code לנהל את התלות שלכם או להפנות להתקנה מקומית של Skaffold. ראו העדפות > כלים > Cloud Code > תלויות.

  • רכיב התרגום ב-Python מוגדר

    אם לא מוגדר רכיב תרגום של Python בפרויקט, אי אפשר לבצע ניפוי באגים כי אין דרך להריץ את pydevd, כלי ניפוי הבאגים הבסיסי של Python.

    סביבת פיתוח משולבת (IDE) איך מגדירים
    IntelliJ IDEA כדי לנפות באגים ב-Python באמצעות Cloud Code, צריך להגדיר Python SDK לפרויקט.

    עוברים אל File (קובץ) > Project Structure (מבנה הפרויקט) ומוסיפים Python SDK בכרטיסייה Project (פרויקט). אם אין כזה, מוסיפים אותו בכרטיסייה SDK.
    PyCharm עוברים אל File > Settings > Project > Python Interpreter (קובץ > הגדרות > פרויקט > Python Interpreter) או אל PyCharm > Preferences > Project > Python Interpreter (PyCharm > העדפות > פרויקט > Python Interpreter) ב-Mac OS X, ומוסיפים Python Interpreter.

מידע נוסף זמין במסמכי התיעוד של Skaffold debug.

ניפוי באגים באפליקציה

  1. כדי להתחיל את מחזור הפיתוח במצב ניפוי באגים באשכול Kubernetes, לוחצים על פעולת ניפוי הבאגים עבור סמל להרצת פעולה Develop on Kubernetes.

    התחלת מחזור הפיתוח של אשכול Kubernetes במצב ניפוי באגים

    מחזור הפיתוח המתמשך מתחיל במצב ניפוי באגים.

    ‫Cloud Code מצרף סשן של ניפוי באגים:

    כלי לניפוי באגים ב-Kubernetes מצורף

  2. עכשיו אתם יכולים לבצע את המשימות שאתם בדרך כלל מבצעים כשמנפים באגים בקוד מקומי, כמו הגדרת נקודות עצירה והרצת קוד שלב אחר שלב, מול אשכול Kubernetes פעיל.

    סשן של ניפוי באגים ב-Kubernetes

  3. כדי לסיים את סשן הניפוי באגים, לוחצים על סמל העצירה בהגדרת ההרצה Develop on Kubernetes.

המאמרים הבאים

פנייה לתמיכה

כדי לשלוח משוב או לדווח על בעיה ב-IntelliJ IDE, עוברים אל Tools (כלים) > Cloud Code > Help / About (עזרה / מידע) > Submit feedback or report an issue (שליחת משוב או דיווח על בעיה) כדי לדווח על בעיה ב-GitHub.