פתרון בעיות בחיבור למקור האמת

בדף הזה מוסבר איך לפתור בעיות שמתרחשות כש-Config Sync לא מצליח ליצור חיבור למקור האמת.

בעיות באימות

אם האימות נכשל, Config Sync לא יכול להתחבר למקור האמת. בקטעים הבאים מוסבר איך לפתור כמה בעיות שקשורות לאימות.

אימות אישור השרת נכשל עבור שרתי Git

החיבורים לשרתי Git פרטיים משתמשים ב-TLS כדי לאמת את האותנטיות של השרת. כדי לבצע את האימות הזה, צריך לספק אישור שמזהה את רשות אישורי הבסיס ואת כל רשויות האישורים הביניים שמאשרות את הזהות של שרת Git. אם האימות של אישור שרת Git נכשל, המשמעות היא שלא ניתן לבסס את שרשרת האמון.

אם קיבלתם שגיאה שמציינת שאימות אישור השרת נכשל, יכול להיות שאחת מהבעיות הבאות היא הסיבה לכך:

  • לא צוין אישור של רשות אישורים (CACert). כדי לפתור את הבעיה הזו, מוסיפים את ה-CACert כסוד ומפנים אל הסוד בשדה spec.git.caCertSecretRef של אובייקטים מסוג RootSync או RepoSync.
  • ה-CACert לא הושלם. כדי לפתור את הבעיה, צריך לתקן את הסוד של CACert כך שיכיל את שרשרת האמון המלאה, כולל אישורי הבסיס וכל אישורי הביניים.
  • ה-CACert לא תקין. כדי לפתור את הבעיה, צריך להוריד את שרשרת האישורים מהקישור שצוין באישור שהוצג על ידי השרת, ואז לעדכן את הסוד של CACert.

אי אפשר לטעון את Git Secret

אם אתם מקבלים את השגיאה הבאה כשמאגר התגים git-sync מנסה לסנכרן מאגר עם סוד, סימן שהסוד של Git לא הועלה בהצלחה למאגר git-sync:

KNV2004: unable to sync repo Error in the git-sync container: ERROR: can't configure SSH: can't access SSH key: stat /etc/git-secret/ssh: no such file or directory: lstat /repo/root/rev: no such file or directory

יכול להיות שהשגיאה נגרמת בגלל מעבר מסוג האימות של מאגר Git‏ none,‏ gcenode או gcpserviceaccount לסוגים אחרים שדורשים סוד.

כדי לפתור את הבעיה, מריצים את הפקודות הבאות כדי להפעיל מחדש את Reconciler Manager ואת Reconcilers:

# Stop the reconciler-manager Pod. The reconciler-manager Deployment spins
# up a new Pod which can pick up the latest `spec.git.auth`.
kubectl delete po -l app=reconciler-manager -n config-management-system

# Delete the reconciler Deployments. The reconciler-manager recreates the
# reconciler Deployments with correct volume mount.
kubectl delete deployment -l app=reconciler -n config-management-system

בעיות בהגדרה

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

שם התרשים לא תקין

כשמסנכרנים ממאגר Helm, צריך לוודא שהערך של spec.helm.chart מוגדר בצורה נכונה. שם התרשים לא מכיל את שם המאגר, את גרסת התרשים או את .tgz. אפשר לאמת את שם התרשים באמצעות הפקודה helm template.

ספריית הגדרות לא תקינה

בודקים את ההגדרות כדי לוודא שאין טעויות, כמו ערך שגוי של policyDir באובייקט ConfigManagement או spec.git.dir או spec.oci.dir באובייקט RootSync או RepoSync. הערך של הספרייה כלול בכל הודעות השגיאה של KNV2004 שאתם מקבלים. צריך לוודא שהערך תואם למאגר Git או לתמונת OCI.

ענף Git לא תקין

בודקים את היומנים של מאגר git-sync אם יש שגיאה כמו Remote branch BRANCH_NAME not found in upstream origin או warning: Could not find remote branch BRANCH_NAME to clone. אם לא מציינים את הענף, ברירת המחדל היא master.

פרטי כניסה לא תקינים של Git,‏ Helm או OCI

בודקים ביומני Config Sync את הקונטיינר git-sync, helm-sync או oci-sync כדי לראות אם מופיעה אחת מהשגיאות הבאות:

  • Could not read from remote repository. Ensure you have the correct access rights and the repository exists.
  • Invalid username or password. Authentication failed for ...
  • 401 Unauthorized

אם מדובר במאגר Git, צריך לוודא שפרטי הכניסה ל-Git והסוד git-creds מוגדרים בצורה נכונה.

במאגר Helm, צריך לוודא שפרטי הכניסה של Helm מוגדרים בצורה נכונה.

בתמונות OCI, צריך לוודא שההגדרות של פרטי הכניסה ל-OCI תקינות.

כתובת URL לא תקינה של מאגר Git

בודקים אם יש שגיאה ביומנים של מאגר התגים git-sync, כמו Repository not found.

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

כתובת URL לא תקינה של מאגר Helm

בודקים אם יש שגיאה ביומנים של מאגר התגים helm-sync, כמו ...not a valid chart repository. אפשר לאמת את כתובת ה-URL של מאגר Helm באמצעות הפקודה helm template.

כתובת URL לא תקינה של מאגר OCI

ערך לא תקין בשדה spec.oci.image או spec.oci.dir של אובייקט RootSync או RepoSync עלול לגרום לבעיות בחיבור. צריך לבדוק שהערכים האלה נכונים. לדוגמה, אם אתם מסנכרנים ממאגר OCI, כתובת ה-URL צריכה להתחיל ב-oci://.

אפשר גם לעיין ביומנים של מאגר התגים oci-sync לקבלת מידע נוסף.

בעיות ברשת

אם אתם חושדים שהבעיה קשורה לרשת של האשכול, כדאי להתחיל עם השלבים האלה לפתרון בעיות.

לא ניתן היה להתאים את נתוני המארח: github.com

כש-Config Sync מנסה להתחבר למאגר Git, הוא משתמש ב-DNS כדי לפתור את כתובת ה-IP של שם המארח שצוין. אם אי אפשר לפתור את הבעיה במארח, בדרך כלל מדובר בבעיה ב-DNS או ברשת של האשכול.

כדי לאבחן את הבעיה, אפשר לעיין במאמר פתרון בעיות ב-Cloud DNS ב-GKE או במאמר פתרון בעיות ב-kube-dns ב-GKE, בהתאם לשירות שבו אתם משתמשים כספק DNS.

אי אפשר להגיע למאגר Git מתוך האשכול

לפעמים, מאגר התגים git-sync מחזיר שגיאה ביומנים שלו שמציינת שהוא לא יכול לגשת למאגר. לדוגמה, ssh: connect to host source.developers.google.com port 2022: Network is unreachable. כדי לפתור את הבעיה, צריך לשנות את ההגדרה של חומת האש או הרשת של האשכול.

מספר גבוה של בקשות API למקור

‫Config Sync משתמש באסטרטגיית ריבוי מופעים כדי להרחיב ולבודד דיירים ודומיינים של תקלות. לכן, לכל אובייקט RootSync ו-RepoSync יש מופע משלו של כלי ההתאמה. לכל מופע של כלי ההתאמה יש sidecar משלו שספציפי למקור, git-sync,‏ oci-sync או helm-sync. ה-sidecars האלה שולחים שאילתות למקור הקובע. כשמוסיפים עוד אובייקטים מסוג RootSync או RepoSync, מספר בקשות ה-API ששולחים תהליכי ההתאמה כדי לבצע סקר של מקור האמת גדל באופן לינארי. לכן, אם יש לכם הרבה אובייקטים מסוג RootSync ו-RepoSync שכולם שולחים שאילתות לאותו מקור אמת, לפעמים זה יכול לגרום לעומס תנועה משמעותי בשרת המקור.

כדי לפתור את הבעיה, אפשר לנסות אחת מהאסטרטגיות הבאות:

  • משלבים כמה אובייקטים מסוג RootSyncs או RepoSync כדי לצמצם את מספר תהליכי ההתאמה ששולחים בקשות ל-API של המקור.
  • משנים את סוג המקור מ-Git ל-OCI. מאגרי OCI, כמו Artifact Registry, נוטים להתרחב טוב יותר מרוב שרתי Git, כי הם יכולים להתרחב אופקית בלי צורך בסנכרון בין העתקים של השרת.

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

  • אם הבעיות נמשכות, כדאי לבדוק אם הבעיה שנתקלתם בה היא בעיה מוכרת.

אם לא מצאתם פתרון לבעיה שלכם במסמכי התיעוד, אפשר להיעזר במקורות המידע הבאים: