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

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

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

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

כדי להשתמש ב-Hybrid Guardrails, מריצים את אותן פקודות התקנה של Hybrid Helm או שדרוג של 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 עוברת בהצלחה, ה-pod של אמצעי הבקרה מסתיים בסוף הביצוע.

בודקים במהירות את הסטטוס של הפודים אחרי שמריצים את הפקודה 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.16.
שם נקודת ביקורת תיאור
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 של תמונת ה-Guardrails, התג ומדיניות המשיכה שמופיעים בהמשך יתווספו לקובץ ההחלפות:

# 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.16.10"
    pullPolicy: Always

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

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

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

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