שימוש במתאם Apigee ל-Envoy עם Apigee Edge

אתם מציגים את מסמכי התיעוד של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

בדוגמה הזו נסביר איך משתמשים ב-Apigee Adapter ל-Envoy עם Apigee Edge.

דרישות מוקדמות

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

סקירה כללית

בדוגמה הזו נסביר איך משתמשים ב-Apigee Adapter for Envoy עם Apigee Edge for Public Cloud. הקריאות לשרת proxy ל-API עוברות דרך Envoy שפועל כאפליקציה מקורית, עם Edge שמספק שירותי ניהול של ממשקי API דרך השירות של Apigee Remote ל-Envoy.

באיור הבא מוצגת הארכיטקטורה הבסיסית של השילוב עם Apigee Edge:

תצוגה ברמה גבוהה של מתאם Envoy שפועל במקור כדי לתקשר עם Apigee Edge Cloud, כולל מישור הניהול, מישור זמן הריצה ושירותי GCP

שרת proxy של Envoy ו-Remote Service פועלים באופן מקומי. Envoy מטפל בתעבורת הנתונים של ה-API אל שירות היעד וממנו, ומעביר הודעות לשירות המרוחק. השירות המרוחק מתקשר גם עם Apigee Edge Cloud כדי לאחזר מידע על מוצרים ושרתי proxy של API.

הקצאת Apigee Edge

בשלב הזה משתמשים ב-CLI של שירות Remote כדי להקצות Apigee Adapter לנכסי Envoy ל-Apigee Edge. פקודת הקצאת המשאבים פורסת שרת proxy של API ב-Apigee Edge, ומגדירה גם אישור ב-Apigee ויוצרת פרטי כניסה שדרכם השירות מרחוק יתחבר באופן מאובטח מהמערכת שלכם ל-Apigee.

  1. עוברים לספרייה $CLI_HOME:
    cd $CLI_HOME
  2. יוצרים את משתני הסביבה הבאים. המשתנים האלה ישמשו כפרמטרים לסקריפט הקצאת המשאבים:
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    כאשר:

    משתנה תיאור
    organization_name שם הארגון ב-Apigee.
    environment_name השם של הסביבה בארגון.
    your_apigee_username שם המשתמש בחשבון Apigee. בדרך כלל שם המשתמש הוא כתובת אימייל.
    your_apigee_password הסיסמה שלכם ב-Apigee.
  3. מריצים את הפקודה הבאה כדי להקצות את שרת ה-proxy של השירות המרוחק ב-Apigee Edge:
    ./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \
        --organization $ORG --environment $ENV > config.yaml
  4. בודקים את התוכן של הקובץ config.yaml. הוא אמור להיראות כך:
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75

    הערכים של המפתח והסוד משמשים לאימות הבקשות משרת ה-proxy של השירות המרוחק אל Apigee Edge.

הרצת השירות Apigee Remote עבור שירות Envoy

אפשר להריץ את השירות מרחוק כקובץ בינארי מקורי או ב-Docker.

הפעלת השירות באופן מקורי

מריצים את קובץ הבינארי של השירות עם קובץ התצורה שהופיק על ידי פקודת הקצאת המשאבים:

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

הרצת השירות ב-Docker

קובצי אימג' של Docker מתפרסמים עם תגי גרסאות. להתקנה הזו, צריך להשתמש בגרסה האחרונה. אפשר לבחור מבין 3 וריאציות של תמונות:

גרסה תמונה
Google distroless gcr.io/distroless/base
Ubuntu google/apigee-envoy-adapter:v1.1.0-ubuntu
Ubuntu עם Boring Crypto google/apigee-envoy-adapter:v1.1.0-boring

לדוגמה, כדי להריץ את קובץ האימג' גירוד עם config.yaml המקומי שזמין בתור /config.yaml דרך טעינת עוצמת קול, משתמשים בפקודה הבאה:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v1.1.0

יצירת קובצי תצורה לדוגמה

משתמשים בפקודה apigee-remote-service-cli samples create כדי ליצור קובצי תצורה לדוגמה.

בדוגמה הזו, צריך את הקבצים שנוצרו הבאים:

  • envoy-config.yaml – הגדרת פריסה לשירות HTTP.

כדי ליצור את הדוגמאות:

  1. עוברים לספרייה $CLI_HOME.
  2. מריצים את הפקודה הבאה כדי ליצור את הקבצים:

    ./apigee-remote-service-cli samples create --template native -c ./config.yaml

    הקבצים הבאים הם פלט של הספרייה ./samples:

    ls samples
    envoy-config.yaml
    

מידע נוסף זמין במאמר הפקודה samples.

התקנה והפעלה של שרת ה-proxy של Envoy

כדי להתקין ולהפעיל את שרת ה-proxy של Envoy, פועלים לפי השלבים הבאים:

  1. מורידים קובץ בינארי של Envoy או יוצרים אותו, או משתמשים ב-Docker.
  2. מריצים את Envoy באמצעות קובץ תצורה לדוגמה שיצרתם בעבר לשירות httpbin.org:
    envoy -c $CLI_HOME/samples/envoy-config.yaml

בדיקת ההתקנה

  1. מתקשרים לשירות httpbin:
    curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"
    

    השירות מנוהל עכשיו על ידי Apigee ובגלל שלא סיפקתם מפתח API, הקריאה תחזיר את השגיאה הבאה.

    curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  2. מגדירים מוצר API ומקבלים מפתח API, כמו שמוסבר במאמר איך מקבלים מפתח API.
  3. שולחים קריאה ל-API באמצעות המפתח:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/httpbin/headers \
    -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"

    הקריאה אמורה להצליח עם סטטוס 200 ולהחזיר רשימה של כותרות בתגובה. לדוגמה:

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

השלבים הבאים

תעבורת הנתונים של ה-API לשירות httpbin מנוהלת עכשיו על ידי Apigee. אלה כמה מהתכונות שאפשר לבדוק ולנסות:

  • אם הגדרתם את מוצר ה-API כפי שמוסבר במאמר איך מקבלים מפתח API, מגבלת המכסה הוגדרה ל-5 בקשות לדקה. אפשר לנסות לשלוח לשירות httpbin עוד כמה פעמים כדי להפעיל את המכסה. כשהמכסה תסתיים, תוחזר שגיאת HTTP 403.
  • גישה ל-Apigee Analytics בממשק המשתמש של Edge. עוברים אל Analyze (ניתוח) > API Metrics (מדדי API) > API Proxy Performance (ביצועים של שרת proxy ל-API).
  • יצירת אסימוני JWT ושימוש בהם לאימות קריאות ל-API.
  • שימוש ב-CLI לניהול, ליצירה ולשליטה בקישורויות. פרטים על CLI זמינים בחומר העזר.