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

סקירה כללית על שכבות הגנה

התכונה Apigee hybrid Guardrails היא מנגנון שמתריע ללקוחות על בעיה פוטנציאלית לפני שהיא משפיעה על מופע Hybrid. במילים אחרות, אמצעי הבקרה ההיברידיים יפסיקו פקודה אם היא עלולה לסכן את היציבות של מופע היברידי. בין אם מדובר בהגדרה שגויה או במשאב לא מספיק, אמצעי הבקרה ההיברידיים ימנעו שינויים במופע היברידי עד שהסיכון של הבעיה יוסר. כך הלקוח לא צריך לבזבז זמן על בעיות שבדרך כלל לוקח שעות או ימים לפתור אותן.

שימוש במעקי ביטחון ב-Apigee Hybrid

כדי להשתמש באמצעי בקרה היברידיים, מריצים את אותן פקודות התקנה או שדרוג של Hybrid Helm שמתועדות בהוראות ההתקנה של Hybrid. לא צריך להשתמש בפקודות נוספות כדי להפעיל את אמצעי הבקרה.

כשמריצים פקודת Helm ל-Apigee Hybrid, קורים שני דברים לפני שהפקודה מחילה את ההגדרה על מופע ה-Hybrid:

  • ‫Helm יוצר תרמיל זמני של Guardrails עם ההגדרה שהוחלה. אם ה-pod של אמצעי הבקרה מתחיל לפעול בצורה תקינה, הוא יבדוק את המכונה ההיברידית שלכם מול ההגדרה שהחלתם. אם הבדיקה עוברת בהצלחה, ה-pod של אמצעי הבקרה מסתיים וההגדרה שלכם מוחלת על מופע Apigee Hybrid.
  • אם הבדיקה נכשלת, ה-pod של אמצעי הבקרה נשאר במצב לא תקין כדי לאפשר אבחון של ה-pod. בפקודת helm תוצג הודעת שגיאה שמציינת שה-pod של Guardrails נכשל.

בדוגמה הבאה מוצג שימוש ב-Guardrails כדי לבדוק את הקישוריות לרשת ממכונה היברידית למישור הבקרה של Apigee כחלק מההתקנה של רכיב apigee-datastore. אפשר להשתמש באותו רצף לכל הרכיבים של Apigee Hybrid:

מתקינים את הרכיב apigee-datastore באמצעות הפקודה הבאה:

helm upgrade datastore apigee-datastore/ \
  --install \
  --namespace apigee \
  --atomic \
  -f overrides.yaml

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

 helm upgrade datastore apigee-datastore/ \
  --install \
  --namespace apigee \
  -f my-overrides.yaml

  . . .
    Error: UPGRADE FAILED: pre-upgrade hooks failed: 1 error occurred:
      * pod apigee-hybrid-helm-guardrail-datastore failed

כדי לראות איזה בדיקה נכשלה ולמה, בודקים את היומנים של Guardrails pod, כמו בדוגמה הבאה:

kubectl logs -n apigee apigee-hybrid-helm-guardrail-datastore
{"level":"INFO","timestamp":"2024-02-01T20:28:55.934Z","msg":"logging enabled","log-level":"INFO"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"","checkpoint":"upgrade","component":"apigee-datastore"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"initiating pre-install checks"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"check validation starting...","check":"controlplane_connectivity"}
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}

בדוגמה הזו, הודעת שגיאת הבדיקה בפועל היא החלק הזה:

{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}

ה-pod של אמצעי הבקרה מסופק באופן אוטומטי כשמריצים את פקודת ה-Helm. אם בדיקת הקישוריות של מישור הבקרה של Apigee עוברת בהצלחה, פוד Guardrails מסתיים בסוף הביצוע.

בודקים במהירות את הסטטוס של הפודים אחרי שמריצים את הפקודה helm install. בדוגמה הבאה של פלט אפשר לראות שהפודים של אמצעי הבקרה נמצאים במצב תקין, כלומר מבחן הקישוריות של מישור הבקרה עבר בהצלחה:

kubectl get pods -n apigee -w
NAME                                      READY    STATUS             RESTARTS    AGE
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           1s
apigee-hybrid-helm-guardrail-datastore    0/1      ContainerCreating  0           1s
apigee-hybrid-helm-guardrail-datastore    0/1      Completed          0           2s
apigee-hybrid-helm-guardrail-datastore    0/1      Completed          0           3s
apigee-hybrid-helm-guardrail-datastore    0/1      Terminating        0           3s
apigee-hybrid-helm-guardrail-datastore    0/1      Terminating        0           3s

אם בדיקת הקישוריות של מישור הבקרה של Apigee נכשלת, ה-pod של Guardrails יישאר במצב שגיאה, בדומה לפלט בדוגמה הבאה:

kubectl get pods -n apigee -w
NAME                                      READY    STATUS             RESTARTS    AGE
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      ContainerCreating  0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      Error              0           4s
apigee-hybrid-helm-guardrail-datastore    0/1      Error              0           5s
apigee-hybrid-helm-guardrail-datastore    0/1      Error              0           6s

השבתה זמנית של הגבלות בנוגע להקצאות

אם אתם צריכים להשבית את הבדיקות של אמצעי הבקרה, מוסיפים את הדגל --no-hooks לפקודת Helm. בדוגמה הבאה מוצג הדגל --no-hooks בפקודת Helm:

helm upgrade datastore apigee-datastore/ \
  --install \
  --namespace apigee \
  -f overrides.yaml \
  --no-hooks

בדיקות של שכבות הגנה

בטבלה הבאה מפורטים חלק מהבדיקות של אמצעי הבקרה שמופצות כחלק מ-Apigee hybrid בגרסה 1.14.
שם נקודת ביקורת תיאור
cassandra_backup_enabled upgrade הוצג בגרסה: 1.14.0

רמת החומרה: error

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

cassandra_recent_backup_csi upgrade הוצג בגרסה: 1.14.0

רמת החומרה: error

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

הגדרת אמצעי בקרה בקובץ ההחלפות

החל מגרסה 1.12 של Apigee hybrid, הגדרות Guardrails מוגדרות כברירת מחדל בכל תרשים. אפשר לשנות את כתובת ה-URL של התמונה, התג ומדיניות משיכת התמונה בקובץ overrides.

לדוגמה, כתובת ה-URL של התמונה, התג ומדיניות השליפה של אמצעי הבקרה הבאים יתווספו לקובץ ההחלפות:

# Apigee Ingressgateway
ingressGateway:
  image:
    pullPolicy: Always

## NOTE: The Guardrails config is below. The ingressgateway config above is for position reference only and is NOT required for Guardrails config.

# Apigee Guardrails
guardrails:
  image:
    url: "gcr.io/ng-hybrid/guardrails/apigee-watcher"
    tag: "1.14.9"
    pullPolicy: Always

שימוש ב-Kubernetes tolerations עם Guardrails

אפשר גם להוסיף tolerations ל-Guardrails בקובץ overrides. אם לא מוגדרים tolerations בקטע Guardrails overrides, המערכת תשתמש ב-tolerations שמוגדרים באופן גלובלי.

לדוגמה, כדי לכלול טולרנסים באופן ספציפי בקטע Guardrails בקובץ overrides, מוסיפים משהו דומה לפסקה הבאה:

  # Apigee Guardrails
  guardrails:
    image:
      url: "gcr.io/ng-hybrid/guardrails/apigee-watcher"
      tag: "1.14.9"
      pullPolicy: Always
    tolerations:
    - key: "say"
      operator: "Equal"
      value: "taunt"
      effect: "NoSchedule"