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

במאמר הזה מוסבר איך להגדיר יעדים חיצוניים לבדיקה ב-Google Distributed Cloud ‏ (GDC) עם פער אוויר. המערכת מגלה את היעדים האלה ועוקבת אחריהם על ידי קריאה של Kubernetes ConfigMap ספציפי.

לפני שמתחילים

כדי להחיל ConfigMap על מרחב השמות gpc-system, צריכה להיות לכם גישה לאשכול והרשאות ליצור או לשנות ConfigMap במרחב השמות הזה. צריך גם את הנתיב לקובץ kubeconfig של אשכול שרת Management API. אפשר להגדיר בדיקות של יעדים חיצוניים רק באשכולות של אדמין ראשי או אדמין ארגוני.

הסבר על פרטי ConfigMap

הכלי לבדיקת מוכנות מחפש ConfigMap עם המאפיינים הבאים:

  • שם: pnet-external-probe-targets-config
  • מרחב שמות: gpc-system
  • מפתח נתונים: ה-ConfigMap צריך להכיל מפתח בשם targets.yaml בשדה data שלו. הערך שמשויך למפתח הזה חייב להיות מחרוזת YAML שמגדירה את יעדי הבדיקה.

הסבר על המבנה של targets.yaml

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

- name: <unique-probe-name>
  spec:
    target: <hostname-or-ip>
    probeType: <TCP or ICMP>
    port: <port-number> # Required for TCP, ignored for ICMP
    interval: <duration> # e.g., "10s", "1m"
    timeout: <duration>  # Optional, e.g., "5s". Defaults to 5s if not set.

פירוט השדות:

  • ‫name (מחרוזת): מזהה ייחודי של יעד הבדיקה הספציפי הזה.
  • ‫spec: הגדרה של פרמטרים לבדיקה:
    • ‫target (מחרוזת): שם המארח או כתובת ה-IP של היעד החיצוני לבדיקה.
    • ‫probeType (מחרוזת): סוג הבדיקה שיש לבצע. הערכים הנתמכים הם:
      • ‫TCP: מנסה ליצור חיבור TCP לכתובת target ולפורט port שצוינו.
      • ‫ICMP: שולח בקשת הד ICMP ‏ (ping) אל target.
    • ‫port (int32): מספר היציאה לשימוש בבדיקות TCP. חובה למלא את השדה הזה אם הערך של probeType הוא TCP, והמערכת מתעלמת ממנו בבדיקות של ICMP.
    • ‫interval (מחרוזת): התדירות שבה הבדיקה צריכה לפעול. הערך צריך להיות מחרוזת metav1.Duration תקינה של Kubernetes (לדוגמה, "5s", ‏ "1m30s").
    • ‫timeout (מחרוזת, אופציונלי): הזמן המקסימלי להמתנה עד להשלמת ניסיון בקשה לבדיקת תקינות יחיד. זו גם מחרוזת metav1.Duration. אם לא מציינים ערך, המערכת משתמשת בערך ברירת המחדל של הזמן הקצוב לתפוגה, שהוא 5s.

יצירה והחלה של ConfigMap

כדי ליצור או לעדכן את ConfigMap, פועלים לפי השלבים הבאים:

  1. יוצרים קובץ YAML בשם external-probe-configmap.yaml. בדוגמה הבאה מוגדרים שלושה יעדי בדיקה:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: pnet-external-probe-targets-config
      namespace: gpc-system
    data:
      targets.yaml: |
        - name: "example-tcp-server"
          spec:
            target: "192.0.2.1"
            probeType: "TCP"
            port: 80
            interval: "10s"
            timeout: "3s"
        - name: "example-icmp-host"
          spec:
            target: "8.8.8.8"
            probeType: "ICMP"
            interval: "30s"
        - name: "another-tcp-service"
          spec:
            target: "my-service.example.com"
            probeType: "TCP"
            port: 443
            interval: "1m"
            # Using default timeout of 5s
    
  2. מחילים את ה-ConfigMap על האשכול:

    kubectl apply -f external-probe-configmap.yaml -n gpc-system --kubeconfig=MANAGEMENT_API_SERVER
    

    מחליפים את הערך MANAGEMENT_API_SERVER בנתיב לקובץ kubeconfig של שרת Management API.

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