דלגו לתוכן

שיטת ה-debugging

עיקרוןמה עושים
Onion: קוראים מלמטהשגיאה עוטפת שגיאה. הסיבה האמיתית היא השורה האחרונה
כמה רחוק זה הגיע?איזה שלב עבר (clone, render, apply, pull) לפני הכשל
לא מוסיפים סיבות שהטקסט לא תומך בהןgrep -iE 'denied|403|unauthorized' על ההודעה. אין? זה לא credentials
Differentialעובד ב-A ולא ב-B: הסיבה במה שמבדיל ביניהם (namespace, קובץ values, token, branch)
Isolationמשנים משתנה אחד ורואים אם השגיאה נעלמת
קוד או סביבה?ראה למטה
איזה run אני קורא?בדוק את ה-candidate: branch + תאריך
Timestamp לפני אמון בהודעהfinishedAt מול date -u: הודעה בת 36 דקות אינה הכשל הנוכחי
אין לוגים = לא התחילkubectl describe pod ו-Events, לא logs
לפני delete: מי מחזיק את הנתונים?והאם ה-controller כבר מטפל? (Deployment מחליף Pods לבד; StatefulSet לא מחליף Pod שבור)
Synced/Healthy ≠ עובדבודקים /info: verify
הפלט של git עצמוmerge --ff-only נכשל? הסיבה בשורה 2 של הפלט
Pre-flightלהריץ מקומית מה ש-Argo/CI ירוץ, ולדעת אילו פרמטרים השמטת
הודעהסיווגלמה
AssertionError ב-unittestקודהלוגיקה נכשלה
promote 403 אחרי commit מוצלחcredential / סביבההעבודה עצמה הצליחה, ההרשאה לא
Dockerfile חסרקודקובץ שלא קיים ב-repo
Cannot connect to the Docker daemonסביבהה-daemon לא רץ / אין הרשאה
Error: open <FILE>: no such file or directoryנתיבשגיאת נתיב, לא YAML

באגי ה-DNS וה-blob unknown ב-build היו סביבה, לא קוד: env-cards.

דוגמה: פירוק שגיאה שכבתית

Section titled “דוגמה: פירוק שגיאה שכבתית”
error text (as Argo shows it)
ComparisonError: Failed to load target state: failed to generate manifest for source 1 of 4:
rpc error: ... helm template . --name-template trident --namespace trident-staging
--values .../base.yaml --values .../staging.yaml --values .../versions/staging.yaml ...:
Error: YAML parse error on nxs-universal-chart/templates/...: error converting YAML to JSON:
yaml: line 47: ...
שכבה (מבחוץ פנימה)מה היא אומרת
ComparisonErrorArgo לא הצליח להשוות
source 1 of 4המקור הראשון (ה-chart הראשי)
helm template ... + קובצי valuesזו הפקודה שנכשלה, ואלה הקבצים
YAML parse error ... line 47הסיבה: ה-YAML המרונדר לא תקין (השורה היא ב-output, לא ב-template)

אין כאן denied/403, אז זו לא בעיית הרשאה. הצעד הבא: differential. DEV עובד ו-staging לא, אותו chart, אז ההבדל בקבצי values. isolation:

runs on: VM
helm template <RELEASE> <CHART_DIR> -f <FILE> -f <FILE> -f <FILE> --set defaultImageTag=probe

אם הרינדור עובר עם probe, הסיבה היא ש-defaultImageTag ריק: אף אחד לא עשה promote ל-staging. התיקון הוא promote, לא עריכת chart.

מרנדרים מקומית מה ש-Argo ירנדר, עם tag אמיתי. מה שונה מ-Argo: $values לא קיים ב-bash (נתיבים אמיתיים), -f חוזר לכל קובץ וקורא את המילה הבאה (-f charts/x הופך את ה-chart לקובץ values), ו-namespace ב-render לא באג אם לא העברת -n.

המשך: טבלת הסימפטומים · סולם האימות.