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

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

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

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

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

סקירה כללית

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

הקצאה של Apigee Edge

בשלב הזה, צריך להשתמש ב-Remote Service CLI כדי להקצות ל-Apigee Edge את Apigee Adapter לנכסי Envoy. הפקודה פורסת שרת 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:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml

    כשמשדרגים, צריך להשתמש בפקודה הזו עם הדגל --force-proxy-install כדי להקצות את Apigee:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --force-proxy-install --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 לשירות Envoy

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

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

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

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

הפעלת השירות ב-Docker

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

גרסה תמונה
Google ללא הפרעות google/apigee-envoy-adapter:v2.0.0
Ubuntu google/apigee-envoy-adapter:v2.0.0-ubuntu
Ubuntu עם הצפנה משעממת google/apigee-envoy-adapter:v2.0.0-boring

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

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.0

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

יוצרים קובץ תצורה של Envoy באמצעות ה-CLI:

  1. חשוב לוודא שאתם נמצאים בספרייה $ENVOY_HOME.
  2. הצגת תבניות של הגדרות אישיות:
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. מריצים את הפקודה לדוגמה. ב-TEMPLATE, צריך להחליף את אחת מהתבניות הנתמכות של Envoy:

    $CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml

    הפקודה יוצרת את הקובץ ./samples/envoy-config.yaml.

מידע נוסף מופיע בקטע הפקודה 'טעימות'.

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

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

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

בדיקת ההתקנה

  1. מגדירים מוצר של API ומקבלים מפתח API, כמו שמוסבר במאמר איך מקבלים מפתח API.
  2. מפעילים את השירות httpbin בלי מפתח API:
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    

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

    curl -i http://localhost:8080/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
  3. מבצעים קריאה ל-API באמצעות המפתח:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/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 עוד כמה פעמים כדי להפעיל את המכסה. כשהמכסה ייגמרת, תוחזר שגיאה בסטטוס 403 של HTTP.
  • אפשר לגשת ל-Apigee Analytics בממשק המשתמש של Edge. עוברים אל ניתוח > מדדי API > ביצועים בשרת proxy ל-API.
  • ליצור אסימוני JWT ולהשתמש בהם כדי לאמת קריאות ל-API.
  • אפשר להשתמש ב-CLI כדי לנהל אסימונים, ליצור אסימונים ולשלוט בקישורים. לפרטים על ה-CLI, עיינו בחומר העזר.