הגדרת סנכרון תצורות באמצעות פקודות kubectl

בדף הזה מוסבר איך להגדיר את סנכרון תצורות באמצעות פקודות kubectl אחרי שמתקינים את סנכרון תצורות באמצעות מסוף Cloud de Confiance או Google Cloud CLI.

אפשר לבצע הרבה שינויים בהגדרות באמצעות המסוף או ה-CLI, אבל צריך להשתמש בפקודות kubectl כדי לבטל חלק מברירות המחדל של סנכרון תצורות, כדי לשלוט באימות של אישורי SSL וכדי להשתמש ברשות אישורים.

יצירה ועריכה של קובץ התצורה של RootSync

כדי להגדיר את סנכרון תצורות באמצעות פקודות kubectl, עורכים אובייקט RootSync על ידי יצירת קובץ YAML.

כשמתקינים את סנכרון תצורות באמצעות מסוף Cloud de Confiance או Google Cloud CLI, ‏ סנכרון תצורות יוצר באופן אוטומטי אובייקט RootSync בשם root-sync. האובייקט הזה מכיל את פרטי ההגדרה העדכניים ביותר של סנכרון תצורות. בכל פעם שמבצעים שינוי במסוף Cloud de Confiance או ב-Google Cloud CLI, מתבצע עדכון של root-sync.

מידע על השדות שאפשר לערוך באמצעות kubectl

אפשר לבצע שינויים מתקדמים ב-root-sync באמצעות פקודות kubectl בשדות שלא נתמכים במסוף Cloud de Confiance או ב-Google Cloud CLI. אם רוצים ליצור ואז לעדכן אובייקטים של RootSync או RepoSync ישירות באמצעות פקודות של kubectl, אפשר לעיין במאמר בנושא שדות של RootSync ו-RepoSync.

לפני שמבצעים שינויים בקובץ ה-YAML שיוצרים בקטע הבא, כדאי לעיין בטבלה הבאה. בטבלה הזו מפורטים השדות שאפשר לערוך ולהוסיף. אם עורכים שדות שלא מופיעים בטבלה הזו, סנכרון תצורות מחזיר אוטומטית את השינויים לערכים שהגדרתם כשקבעתם את התצורה של סנכרון תצורות בפעם האחרונה ב Cloud de Confiance מסוף או ב-Google Cloud CLI.

מפתח תיאור
spec.helm כל השדות להגדרת מאגר Helm.
spec.override כל השדות לביטול הגדרות ברירת המחדל.
spec.git.noSSLVerify ההגדרה קובעת אם להפעיל או להשבית את האימות של אישור ה-SSL עבור Git. ערך ברירת המחדל הוא false.
spec.git.caCertSecretRef.name השם של הסוד שמכיל את אישור רשות האישורים (CA) למאגר Git.
spec.oci.caCertSecretRef.name השם של הסוד שמכיל את אישור רשות האישורים (CA) למאגר OCI.

יצירת הקובץ

כדי ליצור ולערוך קובץ הגדרה ל-root-sync, מבצעים את השלבים הבאים:

  1. כדי לוודא שאתם מאחזרים את פרטי ההגדרה של האשכול הנכון, צריך להגדיר גישה לשורת הפקודה kubectl:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

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

    • CLUSTER_NAME: השם של האשכול שכולל את הגדרות סנכרון תצורות שרוצים לשנות
    • ZONE: האזור שבו יצרתם את האשכול
    • PROJECT_ID: מזהה הפרויקט
  2. מעתיקים את פרטי ההגדרה מאובייקט RootSync שנוצר על ידי סנכרון תצורות לקובץ YAML:

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    מחליפים את FILE_NAME בשם של קובץ התצורה.

  3. פותחים את קובץ ה-YAML שיצרתם ומבצעים את שינויי ההגדרות הנדרשים. לדוגמה, כדי לשנות את מגבלת הזיכרון של מאגר git-sync, מוסיפים את השדות הבאים (מודגשים):

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. מחילים את השינויים על קובץ ה-YAML:

    kubectl apply -f FILE_NAME.yaml
    
  5. כדי לוודא ש-סנכרון תצורות החיל את השינויים, מציגים את אובייקט RootSync:

    kubectl describe rootsync root-sync -n config-management-system
    
  6. כדי לוודא שהשינויים לא גרמו לשגיאות, משתמשים בפקודה nomos status:

    nomos status
    

הגדרת רשות אישורים

אם השרתים מוגדרים עם אישורים מרשות אישורים (CA) שלא נחשבת כבר כמהימנה, אפשר להגדיר את סנכרון תצורות כך שישתמש באישור CA כדי לאמת חיבורי HTTPS לשרת. המאפיין הזה נתמך בשרתי Git,‏ Helm או OCI. אישור ה-CA צריך לכלול אישורי SSL מלאים (בסיס/ביניים/קצה). אם השרת שלכם כבר משתמש ב-CA מהימן או שאתם לא מתחברים דרך HTTPS, אתם יכולים לדלג על השלב הזה ולהשאיר את caCertSecretRef ללא הגדרה.

RootSync

  1. מאחזרים את אישור ה-CA ששימש להנפקת האישור לשרת Git ושומרים אותו בקובץ.

  2. עבור אובייקטים מסוג RootSync, צריך ליצור את הסוד במרחב השמות config-management-system. לדוגמה:

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. כשמגדירים את האובייקט RootSync, צריך להגדיר את הערך של השדה caCertSecretRef.name באובייקט RootSync כ-ROOT_CA_CERT_SECRET_NAME.

RepoSync

  1. מאחזרים את אישור ה-CA ששימש להנפקת האישור לשרת Git ושומרים אותו בקובץ.

  2. עבור אובייקטים מסוג RepoSync, צריך ליצור את הסוד באותו מרחב שמות שבו נמצא RepoSync. לדוגמה:

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. כשמגדירים את RepoSync, צריך להגדיר את הערך של השדה caCertSecretRef.name באובייקט RepoSync כ-NAMESPACE_CA_CERT_SECRET_NAME.

הסרת אובייקט RootSync

כדי למחוק את root-sync, מריצים את הפקודה הבאה:

kubectl delete -f FILE_NAME

מחליפים את FILE_NAME בשם של קובץ התצורה של RootSync. לדוגמה, root-sync.yaml.

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

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