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

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

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

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

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

סקירה כללית

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

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

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

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

הקצאת Apigee Edge

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

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

הפעלת שירות Apigee Remote Service ל-Envoy

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

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

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

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

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

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

גרסה תמונה
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

לדוגמה, כדי להריץ את תמונת ה-scratch עם 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
    

מידע נוסף זמין במאמר בנושא פקודת דוגמאות.

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

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

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

בדיקת ההטמעה

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

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

    curl -i http://localhost:8080/httpbin/headers
    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 "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 Proxy Performance.
  • יוצרים אסימוני JWT ומשתמשים בהם כדי לאמת קריאות ל-API.
  • משתמשים ב-CLI כדי לנהל, ליצור אסימונים ולשלוט בהתאמות. פרטים על CLI זמינים במאמר העזר.