בדף הזה מוסבר איך להעביר את הגדרות ה-Git מאובייקט ConfigManagement לאובייקט RootSync. המיגרציה מפעילה את ממשקי ה-API RootSync ו-RepoSync, ומאפשרת לכם להשתמש בתכונות נוספות:
- סנכרון מכמה מקורות קובעים
- שימוש בלוח הבקרה של סנכרון תצורות
- מעקב אחרי סנכרון תצורות באמצעות Cloud Monitoring, Prometheus או מערכת מעקב בהתאמה אישית
- רינדור של הגדרות Kustomize ושל תרשימי Helm
- סנכרון של פריטי מידע מסוג OCI מ-Artifact Registry
- סנכרון תרשימי Helm מ-Artifact Registry
- לבטל את ברירות המחדל של המערכת, למשל לשנות את מגבלות המשאבים ולעדכן את מספר הקומיטים של Git לאחזור
אפשר להפעיל את ממשקי ה-API האלה גם אם רוצים להשתמש רק במאגר בסיסי ולא במאגרי מרחבי שמות.
העברת ההגדרות של ConfigManagement
אם אתם משתמשים ב-RootSync עם spec.enableLegacyFields, אתם צריכים לפעול לפי ההוראות להפסקת השימוש בשדות מדור קודם.
אם אובייקט ConfigManagement משתמש ב-spec.git אבל spec.enableMultiRepo
מוגדר כ-false, צריך לפעול לפי ההוראות למעבר ל-RootSync.
הפסקת השימוש בשדות מדור קודם
אין תמיכה בשדה spec.enableLegacyFields ב-Config Sync. השדה הזה גורם לשגיאות.
אם אתם משתמשים בגרסה קודמת של סנכרון תצורות שבה השדה הזה מוגדר, אתם צריכים לבצע את השלבים הבאים כדי להסיר את השדות מדור קודם:
פותחים את האובייקט ConfigManagement.
באובייקט ConfigManagement, מסירים את השדות
spec.enableLegacyFieldsו-spec.git. אובייקט ConfigManagement אמור להיראות כך:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: trueמחילים את השינויים:
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 שמסנכרן את מאגר הבסיס עם האשכול.
כדי להגדיר את מאגר הבסיס על ידי העברת ההגדרה, מבצעים את המשימות הבאות:
- פותחים את האובייקט ConfigManagement.
- יוצרים עותק של הערכים בשדות
spec.git. משתמשים בערכים האלה כשיוצרים את אובייקט RootSync. - מסירים את כל השדות
spec.git(כוללgit:) מהאובייקט ConfigManagement. באובייקט ConfigManagement, מגדירים את השדה
spec.enableMultiRepoלערךtrue:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: trueמחילים את השינויים:
kubectl apply -f config-management.yamlממתינים ליצירת ה-CRD של RootSync.
kubectl wait --for=condition=established crd rootsyncs.configsync.gke.ioבאמצעות הערכים שהעתקתם מאובייקט 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.
מחילים את השינויים:
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 |