העברת אובייקט ConfigManagement

בדף הזה מוסבר איך להעביר את הגדרות ה-Git מאובייקט ConfigManagement לאובייקט RootSync. המיגרציה מפעילה את ממשקי ה-API‏ RootSync ו-RepoSync, ומאפשרת לכם להשתמש בתכונות נוספות:

אפשר להפעיל את ממשקי ה-API האלה גם אם רוצים להשתמש רק במאגר בסיסי ולא במאגרי מרחבי שמות.

העברת ההגדרות של ConfigManagement

אם אתם משתמשים ב-RootSync עם spec.enableLegacyFields, אתם צריכים לפעול לפי ההוראות להפסקת השימוש בשדות מדור קודם.

אם אובייקט ConfigManagement משתמש ב-spec.git אבל spec.enableMultiRepo מוגדר כ-false, צריך לפעול לפי ההוראות למעבר ל-RootSync.

הפסקת השימוש בשדות מדור קודם

אין תמיכה בשדה spec.enableLegacyFields ב-Config Sync. השדה הזה גורם לשגיאות. אם אתם משתמשים בגרסה קודמת של סנכרון תצורות שבה השדה הזה מוגדר, אתם צריכים לבצע את השלבים הבאים כדי להסיר את השדות מדור קודם:

  1. פותחים את האובייקט ConfigManagement.

  2. באובייקט ConfigManagement, מסירים את השדות spec.enableLegacyFields ו-spec.git. אובייקט ConfigManagement אמור להיראות כך:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  3. מחילים את השינויים:

    kubectl apply -f config-management.yaml
    

השדות מדור קודם מושבתים עכשיו בלי להשפיע על האובייקט RootSync שנוצר מהשדות spec.git של אובייקט ConfigManagement. ההעברה הסתיימה ועכשיו אפשר להשתמש בשדות git באובייקט RootSync ישירות.

מעבר ל-RootSync

אם אובייקט ConfigManagement משתמש ב-spec.git אבל spec.enableMultiRepo מוגדר כ-false, צריך לפעול לפי המדריך הזה כדי להפעיל את ממשקי ה-API‏ RootSync ו-RepoSync.

שימוש ב-nomos migrate

החל מגרסה 1.10.0, ‏ nomos מספק את הפקודה nomos migrate להפעלת ממשקי ה-API‏ RootSync ו-RepoSync. צריך לעדכן את nomos לגרסה 1.10.0 ואילך.

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

העברה ידנית

אם הגרסה של nomos קודמת לגרסה 1.10.0, אפשר להעביר את ההגדרות באופן ידני. צריך להגדיר את spec.enableMultiRepo ל-true באובייקט ConfigManagement וליצור אובייקט RootSync שמסנכרן את מאגר הבסיס עם האשכול.

כדי להגדיר את מאגר הבסיס על ידי העברת ההגדרה, מבצעים את המשימות הבאות:

  1. פותחים את האובייקט ConfigManagement.
  2. יוצרים עותק של הערכים בשדות spec.git. משתמשים בערכים האלה כשיוצרים את אובייקט RootSync.
  3. מסירים את כל השדות spec.git (כולל git:) מהאובייקט ConfigManagement.
  4. באובייקט ConfigManagement, מגדירים את השדה spec.enableMultiRepo לערך true:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  5. מחילים את השינויים:

    kubectl apply -f config-management.yaml
    
  6. ממתינים ליצירת ה-CRD של RootSync.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. באמצעות הערכים שהעתקתם מאובייקט ConfigManagement, יוצרים את אובייקט RootSync. לדוגמה:

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: unstructured
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: "ROOT_DIRECTORY"
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount.
        secretRef:
          name: git-creds
    

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

    • ROOT_REPOSITORY: מוסיפים את כתובת ה-URL של מאגר Git לשימוש כמאגר הבסיסי. אפשר להזין כתובות URL באמצעות פרוטוקול HTTPS או פרוטוקול SSH. לדוגמה, ‫https://github.com/GoogleCloudPlatform/anthos-config-management-samples משתמש בפרוטוקול HTTPS. אם לא מזינים פרוטוקול, המערכת מתייחסת לכתובת ה-URL כאל כתובת URL מסוג HTTPS. חובה למלא את השדה הזה.
    • ROOT_REVISION: מוסיפים את הגרסה של Git (תג או hash) כדי לבצע checkout. השדה הזה הוא אופציונלי וערך ברירת המחדל שלו הוא HEAD.
    • ROOT_BRANCH: מוסיפים את הענף של המאגר שממנו רוצים לסנכרן. השדה הזה הוא אופציונלי וערך ברירת המחדל שלו הוא master.
    • ROOT_DIRECTORY: מוסיפים את הנתיב במאגר Git לספריית הבסיס שמכילה את ההגדרה שרוצים לסנכרן. השדה הזה הוא אופציונלי, וערך ברירת המחדל הוא ספריית הבסיס (/) של המאגר.
    • ROOT_AUTH_TYPE: מוסיפים אחד מסוגי האימות הבאים:

      • none: לא להשתמש באימות
      • ssh: שימוש בזוג מפתחות SSH
      • cookiefile: שימוש ב-cookiefile
      • token: שימוש בטוקן
      • gcpserviceaccount: שימוש בחשבון שירות של Google כדי לגשת למאגר ב-Cloud Source Repositories.
      • gcenode: שימוש בחשבון שירות של Google כדי לגשת למאגר ב-Cloud Source Repositories. בוחרים באפשרות הזו רק אם התכונה איחוד זהויות של עומסי עבודה ל-GKE לא מופעלת באשכול.

        מידע נוסף על סוגי האימות האלה זמין במאמר בנושא הענקת גישת קריאה בלבד ל-Git ב-סנכרון תצורות.

      חובה למלא את השדה הזה.

    • ROOT_EMAIL: אם הוספתם את gcpserviceaccount כROOT_AUTH_TYPE, צריך להוסיף את כתובת האימייל של חשבון השירות שלכם ב-Google. לדוגמה, acm@PROJECT_ID.iam.gserviceaccount.com.

  8. מחילים את השינויים:

    kubectl apply -f root-sync.yaml
    

טבלת השוואה בין ConfigManagement לבין RootSync

בטבלה הבאה מפורט מיפוי של השדות באובייקט ConfigManagement לשדות באובייקט RootSync.

השדה ConfigManagement שדה RootSync
spec.git.gcpServiceAccountEmail spec.git.gcpServiceAccountEmail
spec.git.syncRepo spec.git.repo
spec.git.syncBranch spec.git.branch
spec.git.policyDir spec.git.dir
spec.git.syncWait spec.git.period
spec.git.syncRev spec.git.revision
spec.git.secretType spec.git.auth
git-creds (זהו ערך קבוע באובייקטים של ConfigManagement) spec.git.secretRef.name
spec.sourceFormat spec.sourceFormat
spec.git.proxy.httpProxy או spec.git.proxy.httpsProxy spec.git.proxy

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