יצירת ApigeeBackendService

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

בדף הזה מוסבר איך ליצור ApigeeBackendService ואת תוסף התעבורה הנדרש ב-Google Kubernetes Engine (GKE) Gateway שפועל באשכול.

הגישה הזו היא חלופה לשימוש ב-APIMExtensionPolicy כדי לזהות את מישור הנתונים של Apigee כנקודת ההחלטה בנושא מדיניות (PDP) עבור שער GKE. כשיוצרים ApigeeBackendService, Apigee Operator for Kubernetes יוצר באופן אוטומטי APIMExtensionPolicy עם אותו שם ומרחב שמות כמו ApigeeBackendService. זהו הגיבוי APIMExtensionPolicy.

אנחנו ממליצים על הגישה הזו אם אתם יוצרים ומנהלים תוספים של תעבורת נתונים ב-Cloud Load Balancing ורוצים להוסיף את Apigee כתוסף במשאב תוסף תעבורת הנתונים. חובה להשתמש בתוסף ApigeeBackendService אם תוסף התנועה של Apigee פועל בשילוב עם תוספי תנועה אחרים.

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

לפני שמתחילים במשימה הזו, צריך לבצע את השלבים הבאים:

  • מוודאים שההטמעה של GKE משתמשת בגרסה GKE 1.34.x ואילך.
  • מוודאים שמוגדר Workload Identity באשכול GKE. השלבים הנדרשים מפורטים במאמר יצירת זהות של עומס עבודה.
  • מוודאים ששער GKE מוגדר באשכול ופועל. פרטים נוספים מופיעים במאמר בנושא פריסת שערים.
  • מתקינים את Apigee Operator ל-Kubernetes. הוראות ההתקנה מופיעות במאמר התקנת Apigee Operator ל-Kubernetes.

התפקידים הנדרשים

אם הקציתם לחשבון השירות את התפקידים הנדרשים כמו שמתואר במאמר התקנת Apigee Operator ל-Kubernetes, לא צריך להקצות תפקידים או הרשאות נוספים ב-IAM כדי להשלים את המשימות האלה.

אתם יכולים לאשר פעולות במשאבים באשכול Google Kubernetes Engine באמצעות מנגנון בקרת הגישה מבוססת-תפקידים (RBAC) המובנה ב-Kubernetes. מידע נוסף זמין במאמר מתן הרשאה לפעולות באשכולות באמצעות בקרת גישה מבוססת-תפקידים.

יצירת משאב ApigeeBackendService

כדי להגדיר תוסף של שירות תעבורה ב-GKE Gateway, צריך ליצור שני משאבים עיקריים:

  • ‫ApigeeBackendService: המשאב המותאם אישית הזה מציין את מישור הנתונים של Apigee כנקודת קבלת ההחלטות (PDP) בנושא מדיניות, ומגדיר את פרטי הרשת עבור קבוצות של נקודות קצה ברשת (NEGs) מסוג Private Service Connect.
  • ‫GCPTrafficExtension: משאב ה-API של GKE Gateway הזה מגדיר את שרשרת התוספים, כולל איך התנועה מנותבת אל ApigeeBackendService.

יצירת ApigeeBackendService

משאב ApigeeBackendService מציין את מישור הנתונים של Apigee כ-PDP עבור GCPTrafficExtension.

כדי ליצור ApigeeBackendService:

  1. יוצרים קובץ YAML בשם apigee-backend-service.yaml עם התוכן הבא:
  2. # apigee-backend-service.yaml
    kind: ApigeeBackendService
    apiVersion:  apim.googleapis.com/v1
    metadata:
      name: my-apigee-extension-backend-service
    spec:
      apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid
      defaultSecurityEnabled: SECURITY_ENABLED
      locations: # required field
      - name: REGION_NAME_1
        network: NETWORK_NAME_1
        subnet: SUBNET_NAME_1
      - name: REGION_NAME_2
        network: NETWORK_NAME_2
        subnet: SUBNET_NAME_2

    כאשר:

    • ‫ENV_NAME היא סביבת Apigee שבה רוצים להשתמש. זה דומה לשדה apigeeEnv ב-APIMExtensionPolicy. השדה הזה הוא אופציונלי ב-Apigee וחובה ב-Hybrid.
    • ‫SECURITY_ENABLED (אופציונלי) מציין אם מדיניות ברירת המחדל של Apigee לאימות מפתח API ולבדיקות מכסת שימוש מופעלת באופן אוטומטי. אם לא מציינים ערך, ברירת המחדל היא true.
    • ‫REGION_NAME_1 מציין את האזור שבו פורסים את GKE Gateway.
    • ‫NETWORK_NAME_1 ו-SUBNET_NAME_1 מציינים את מזהי ה-URI המלאים של המשאבים של הרשת ושל רשת המשנה שבהן נוצרים ה-NEGs של Private Service Connect. לדוגמה, projects/my-project/global/networks/my-default ו-projects/my-project/regions/us-central1/subnetworks/my-default. בדרך כלל, הן זהות לרשת ולרשת המשנה של אשכול GKE.
    • התכונות REGION_NAME_2, NETWORK_NAME_2 וגם SUBNET_NAME_2 הן אופציונליות. צריך אותם אם פורסים את תוסף התנועה של Apigee בכמה אזורים.

  3. מחילים את קובץ ה-YAML על האשכול במרחב השמות default:
    kubectl apply -f apigee-backend-service.yaml
  4. מוודאים שהתיקייה ApigeeBackendService נוצרה בהצלחה:
    kubectl get apigeebackendservice

    הפלט אמור להיראות כך:

    NAMESPACE   NAME                          STATE     ERRORMESSAGE
    default     default-ext-lb1-apim-policy   CREATED   

כשיוצרים ApigeeBackendService, Apigee Operator for Kubernetes יוצר באופן אוטומטי APIMExtensionPolicy עם אותו שם ומרחב שמות כמו ApigeeBackendService. זהו הגיבוי APIMExtensionPolicy.

אם הערך של defaultSecurityEnabled הוא true, Apigee Operator for Kubernetes מוסיף באופן אוטומטי את מפתח ה-API ואת מדיניות הקצאה (Quota) שמוגדרים כברירת מחדל ל-APIMExtensionPolicy. כדי להוסיף עוד מדיניות, אפשר לעיין במאמר הוספת מדיניות ל-GKE Gateway.

יצירת משאב GCPTrafficExtension

המשאבGCPTrafficExtension מגדיר תוסף ל-Apigee ומפנה אל ApigeeBackendService שנוצר בשלב הקודם בתור backendRef. פרטים נוספים על הגדרת GCPTrafficExtension זמינים במאמר הגדרת תוספים לשירותים.

השדה supportedEvents מציין אילו חלקים ממחזור החיים של הבקשה והתשובה נחשפים לתוסף. ה-Apigee Operator for Kubernetes תומך באירועים הבאים:

  • RequestHeaders
  • RequestBody
  • RequestTrailers
  • ResponseHeaders
  • ResponseBody
  • ResponseTrailers
במדיניות שדורשת בדיקה או שינוי של גוף הבקשה או התגובה (למשל, JSONThreatProtection), צריך לכלול את RequestBody ואת ResponseBody ברשימה supportedEvents. מידע נוסף על אירועים נתמכים זמין במאמר בנושא תוספים של תנועה ב-Cloud Load Balancing.

כדי ליצור GCPTrafficExtension:

  1. יוצרים קובץ YAML בשם gcp-traffic-extension.yaml עם התוכן הבא:
    # gcp-traffic-extension.yaml
    kind: GCPTrafficExtension
    apiVersion: networking.gke.io/v1
    metadata:
      name: my-apigee-extension
    spec:
      targetRefs:
      - group: "gateway.networking.k8s.io"
        kind: Gateway
        name: GATEWAY_NAME  # Replace with your GKE Gateway name
      extensionChains:
      - name: EXTENSION_CHAIN_NAME
        matchCondition:
          celExpressions:
          - celMatcher: request.path.startsWith("/")
        extensions:
        - name: EXTENSION_NAME
          metadata:
            # This metadata label must match the name of the ApigeeBackendService
            apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME
          failOpen: false
          supportedEvents:
          - SUPPORTED_EVENT1
          - SUPPORTED_EVENT2
          timeout: 1s
          requestBodySendMode: FullDuplexStreamed
          backendRef: # References the ApigeeBackendService by kind and name
            kind: ApigeeBackendService
            name: APIGEE_BACKEND_SERVICE_NAME
            Port: 443

    כאשר:

    • ‫GATEWAY_NAME הוא השם של שער GKE שאליו התוסף חל.
    • ‫EXTENSION_CHAIN_NAME הוא השם של שרשרת התוספים.
    • ‫EXTENSION_NAME הוא השם של תוסף שירות התנועה.
    • ‫APIGEE_BACKEND_SERVICE_NAME הוא השם של ApigeeBackendService שיצרתם קודם. התווית הזו בתוך הבלוק extensions חייבת להיות זהה ל-metadata.name של ApigeeBackendService שנוצר קודם.
    • השדה supportedEvents מציין אילו חלקים במחזור החיים של הבקשה והתגובה נחשפים לתוסף. ה-Apigee Operator for Kubernetes תומך באירועים הבאים:
      • RequestHeaders
      • RequestBody
      • RequestTrailers
      • ResponseHeaders
      • ResponseBody
      • ResponseTrailers
      במדיניות שנדרשת בה בדיקה או שינוי של גוף הבקשה או התגובה (למשל, JSONThreatProtection), צריך לכלול את RequestBody ואת ResponseBody ברשימה supportedEvents. מידע נוסף על אירועים נתמכים זמין במאמר בנושא תוספים של תנועה ב-Cloud Load Balancing.
  2. מחילים את קובץ ה-YAML על האשכול:
    kubectl apply -f gcp-traffic-extension.yaml

השלבים הבאים