כאשר אתה מריץ kubectl apply, קוברנטיס לא רק מעדכן את האובייקט, הוא גם שומר בתוך האובייקט עצמו (במטא-דאטה) את גרסת ה-YAML האחרונה שהגשת.

למה זה נחוץ? (חישוב ה-Three-Way Merge)

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

  1. הקובץ המקומי (Local): מה שמופיע ב-YAML שאתה מריץ עכשיו.
  2. האובייקט החי (Live): המצב הנוכחי בתוך ה-Cluster (כולל שדות שקוברנטיס הוסיף כמו IP או Status).
  3. האנוטציה (Last-Applied): איך הקובץ נראה בפעם האחרונה שהרצת apply.

איך זה עובד בפועל?

האנוטציה פותרת את בעיית המחיקה:


מה קורה ב-kubectl replace?

כאן ההבדל הגדול: replace לא משתמש באנוטציה הזו. הוא פשוט לוקח את הקובץ שלך ודורס את מה שיש ב-Cluster. לכן, אם מחקת שדה ב-replace, הוא פשוט ייעלם (או יחזור לברירת המחדל), אבל זה נעשה בצורה "ברוטאלית" בלי לבדוק מה היה שם קודם.

סיכום קצר:

רוצה לראות איך נראה התוכן של האנוטציה הזו על אובייקט אמיתי אצלך בטרמינל?