ניהול שדות חיצוני

כש-Config Connector יוצר משאב ב- Google Cloud, השדות שלא צוינו במפרט מקבלים ערכים מה-API, אלא אם הם לא ניתנים לקריאה (לדוגמה, לא זמינים באמצעות בקשת HTTP GET).

במקרה הזה, השדה נחשב כ'מנוהל חיצונית', כי Kubernetes לא משמש כמקור האמת של הערך הזה.

התנהגות עם החלת שינויים בצד השרת

אם האפשרות server-side apply מופעלת עבור המשאב, הערכים של שדות שמנוהלים חיצונית באובייקט מתעדכנים באופן רציף כך שיתאימו למשאב הבסיסי Google Cloud.

אם יש ערך לשדה במפרט בתצורה שהוחלה, השדה לא מנוהל חיצונית.

אם השדה מוסר, הוא מנוהל חיצונית.

התנהגות ללא החלה בצד השרת

אם האפשרות 'החלה בצד השרת' לא מופעלת, שדות לא מוגדרים במפרט המשאב מאוכלסים בערך שנקרא מ- Google Cloud API, ו-Config Connector אוכף את הערכים האלה שאוכלסו בהתחלה.

לדוגמה: אם המשתמש מפעיל הגדרת משאב בלי להגדיר ערך ל-bar במפרט:

spec:
    foo: "foo"

אם הערך של השדה bar הוא baz ב-API של Google Cloud , המשאב ב-api-server יאוכלס בערך הזה:

# object in the api-server
spec:
    foo: "foo"
    bar: "baz"  # populated by first reconciliation

אם משנים את המשאב Google Cloud ישירות כך שהערך של bar יהיה עכשיו baz-2, ה-API של Google Cloud מתוקן לערך שאוכלס בהתחלה במפרט המשאב: baz:

# object in the api-server
spec:
    foo: "foo"
    bar: "baz"  # still the originally populated value, and overrides the Google Cloud value

התנהגות של שדות רשימה במפרט משאבים

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

בזמן החלת מפרט של משאב, Config Connector קורא את הערך של שדות הרשימה מ- Google Cloud API ומתייחס לערך הראשוני הזה כמקור האמת והמצב הרצוי. אם הערך בשדה הרשימה הזה משתנה מחוץ ל-Config Connector, ‏ Config Connector מנסה לשנות אותו בחזרה, וזה לא תמיד רצוי.

כדי לעקוף את ההגבלה הזו ולאפשר ניהול חיצוני של שדות רשימה, צריך להשתמש בהערה cnrm.cloud.google.com/state-into-spec. ההערה הזו לא אפשרית בכל המשאבים. כדי לבדוק אם המשאב תומך בהערה, צריך לעיין בדף העיון במשאב המתאים.

metadata:
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent

אם מגדירים את הערך של state-into-spec כ-absent, ‏ Config Connector מתעלם משדות רשימה שלא צוינו בהגדרת המשאב. כך ששדות הרשימה במשאב ינוהלו באופן חיצוני.

נקודות שצריך לשים לב אליהן

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