אין קישוריות לרשת בין מישור זמן הריצה לבין מישור הבקרה

תסמינים

  • מוצרי API, מפתחים ואפליקציות לא מאוכלסים בממשק המשתמש של Apigee.
  • פריסות של proxy ל-API לא מושלמות.
  • בקשות ל-Management API שמופעלות לקריאה ולכתיבה של מוצרי API, מפתחים ואפליקציות נכשלות.

הודעות שגיאה

בקטע הזה מתוארות הודעות השגיאה האפשריות שמוצגות כשאין חיבור לרשת.

ApigeeIssue

אם הבעיה הזו דווחה כ-ApigeeIssue, כשמריצים את הפקודה הבאה:

kubectl -n APIGEE_NAMESPACE get apigeeissues

כאשר APIGEE_NAMESPACE הוא השם של קבוצת משאבי Kubernetes.

מוצג קוד השגיאה הבא:

NAME                               SEVERITY    AGE URL
control-plane-connectivity-failure Error       1hr https://cloud.google.com/apigee/docs/api-platform/troubleshoot/playbooks/no-network-connectivity

דפים בממשק המשתמש של Apigee: מוצרי API, מפתחים ואפליקציות

בדפים API products (מוצרי API), Developers (מפתחים) ו-Apps (אפליקציות) בממשק המשתמש של Apigee מוצגת השגיאה הבאה:

Error: no connections available from the Apigee connect agent(s):
refer to documentation to triage further.

יומנים של apigee-synchronizer

הודעת השגיאה הבאה יכולה להופיע ביומני apigee-synchronizer:

{"level":"SEVERE","thread":"Apigee-Timer-3","mdc":{"action":"SYNC","env":"dev",
  "org":"example-hybrid-dev"},"className":"com.apigee.httpclient.adaptor.RequestAdaptor",
  "method":"doSend","severity":"SEVERE","message":"request failed
  [CONTEXT ratelimit_period\u003d\"1 MINUTES [skipped: 1]\" ]",
  "formattedDate":"2023-02-01T06:27:48.700Z","logger":"SERVICES.HTTPCLIENTSERVICE",
  "exceptionStackTrace":"java.net.SocketTimeoutException: connect timed out
... com.apigee.httpclient.adaptor.RequestAdaptor.send(RequestAdaptor.java:251)
at com.apigee.hybrid.runtime.contract.sync.context.HttpContractDownloader.download(HttpContractDownloader.java:84)
at com.apigee.hybrid.runtime.contract.sync.context.ControlPlaneReplicationContext.getContract(ControlPlaneReplicationContext.java:66)

יומנים של apigee-watcher

הודעת השגיאה הבאה יכולה להופיע ביומני apigee-watcher:

{"level":"error","ts":1675232549.5093117,"caller":"watcher/watcher.go:60",
"msg":"error during watch","name":"mpstatus","error":"INTERNAL: error sending
  mp status to mgmt: INTERNAL: failed to send runtime status
  Post \"https://apigee.googleapis.com/v1/organizations/example-hybrid-dev/instances/apigee-hybrid-australia-southeast1:reportStatus\":
  dial tcp 172.217.24.42:443: i/o timeout","stacktrace":
  "edge-internal.git.corp.google.com/apigee-watcher.git/watcher.
  (*Watcher).Start.func1.1\n\t/go/src/edge-internal/apigee-watcher/watcher/watcher.go:60"}

סיבות אפשריות

פלטפורמה מטרה תיאור
הכול אין נתיב ברשת שמוביל לאינטרנט אם אין נתיב רשת זמין לאינטרנט, רכיבי מישור זמן הריצה של Apigee לא יוכלו לתקשר עם ממשקי ה-API של מישור הבקרה של Apigee.
הכול נקודות הקצה (endpoints) של Apigee API לא מופיעות ברשימת ההיתרים אם יש חומת אש, יכול להיות שנקודות הקצה של Apigee API לא נוספו לרשימת ההיתרים.
GKE הגישה הפרטית ל-Google לא מופעלת אם הפריסה מתבצעת ב-GKE, יכול להיות שלא הופעלה גישה פרטית ל-Google ברשת המשנה.
הכול תקלה לא ידועה ברשת הבעיה הזו יכולה לקרות אם יש כשל לא ידוע ברשת של האשכול כשמתחברים לאינטרנט.

הסיבה: אין נתיב רשת זמין לאינטרנט

אבחון

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

רזולוציה

  1. צריך לפנות לאדמין של הרשת ולהוסיף נתיב ברשת לאינטרנט, אם אפשר.
  2. אם משתמשים בשרת proxy קדימה לתקשורת בין רשת האשכול לאינטרנט, צריך להגדיר את ההגדרות של שרת ה-proxy הקדימה ב-Apigee באמצעות הקובץ overrides.yaml ולהחיל את השינוי הזה על מישור זמן הריצה באמצעות הפקודה Helm:

    הרצת בדיקה:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
    --namespace APIGEE_NAMESPACE \
    --atomic \
    --set envgroup=ENV_GROUP \
    -f OVERRIDES_FILE \
    --dry-run=server
    

    חשוב לכלול את כל ההגדרות שמוצגות, כולל --atomic כדי שהפעולה תבוטל אם היא תיכשל.

    יכול להיות שההתקנה שלכם הוגדרה באמצעות ENV_GROUP_RELEASE_NAME ששונה מ-ENV_GROUP, ויכול להיות שלא. מידע על ההגדרות מופיע במאמר בנושא התקנת Apigee hybrid באמצעות Helm.

    מתקינים את התרשים:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
    --namespace APIGEE_NAMESPACE \
    --atomic \
    --set envgroup=ENV_GROUP \
    -f OVERRIDES_FILE
    

הסיבה: נקודות הקצה (endpoints) של Apigee API לא מופיעות ברשימת ההיתרים

אבחון

צריך לפנות לאדמין של הרשת ולבדוק אם רשימת נקודות הקצה של Apigee API מופיעה ברשימת ההיתרים בחומת האש בפלטפורמה שבה Apigee מותקן. ב-GKE, יכול להיות שזה יהיה Cloud Next Generation Firewall.

רזולוציה

אם נקודות הקצה של Apigee API שמופיעות ברשימה שלמעלה לא מופיעות ברשימת ההיתרים, צריך לפנות לאדמין של הרשת ולדאוג שהדרישה הזו תתקיים.

הסיבה: לא מופעלת גישה פרטית ל-Google

אבחון

  1. אם Apigee נפרס ב אשכול GKE פרטי שאין לו גישה לאינטרנט, צריך להפעיל את הגישה הפרטית ל-Google כדי לאפשר לרכיבי מישור זמן הריצה של Apigee גישה פנימית ל-Google APIs.
  2. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  3. לוחצים על שם הרשת.
  4. בכרטיסייה Subnets (רשתות משנה), בעמודה Private Google Access (גישה פרטית ל-Google), מוודאים שהרשת המשנה הרלוונטית מופעלת. אם לא, זו הסיבה לכשל.

רזולוציה

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על שם הרשת.
  3. לוחצים על השם של רשת המשנה.
  4. לוחצים על עריכה.
  5. בוחרים באפשרות הפעלה של גישה פרטית ל-Google.
  6. לוחצים על Save. אחרי ההפעלה, הבעיה תיפתר.

הסיבה: כשל לא ידוע ברשת

אבחון

צריך לפנות לאדמין של הרשת ולבדוק אם יש כשלים לא מוכרים ברשת של האשכול.

רזולוציה

פועלים יחד עם מנהל הרשת כדי לפתור את הבעיות ברשת של האשכול. הבעיה הזו תיפתר אחרי שהבעיות ברשת יטופלו.

צריך לאסוף פרטי אבחון

אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את נתוני האבחון הבאים ואז לפנות אל Cloud Customer Care:

  1. מזהה הפרויקט ב- Google Cloud .
  2. השם של הארגון ב-Apigee Hybrid.
  3. הפלט של הפקודות הבאות שמופעלות בכל הצמתים של אשכול Kubernetes:
    ping apigee.googleapis.com
    traceroute apigee.googleapis.com
    telnet apigee.googleapis.com 443
  4. קובץ overrides.yaml, עם הסתרת מידע רגיש.
  5. הסטטוס של ה-pod ב-Kubernetes בכל מרחבי השמות:
    kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
  6. הדאמפ של פרטי האשכול ב-Kubernetes:

    יצירת העתקה של פרטי אשכול Kubernetes:

    kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump

    דחיסת dump של פרטי אשכול Kubernetes:

    zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*