דוגמה ל-Envoy מקורי ל-Apigee ול-Hybrid

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

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

בדוגמה הזו אנחנו מראים איך להשתמש ב-Apigee Adapter ל-Envoy על ידי התקנה והפעלה של Envoy באופן מקומי, ולא בתוך אשכול Kubernetes. אפשר לפעול לפי הדוגמה במסמך הזה כדי להתקין את Apigee ואת Apigee Hybrid.

קריאות ל-proxy ל-API עוברות דרך Envoy שפועל כאפליקציית נייטיב. ‫Apigee מספקת שירותים לניהול API, כמו יצירה של מוצר API ואפליקציה למפתחים. ‫Envoy מתקשר עם מישור הניהול של Apigee דרך השירות המרוחק של המתאם. המתאם גם מעביר נתוני ניתוח ל-Apigee, שבה אפשר לראות אותם ב-Apigee Analytics.

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

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

בדיקת ההגדרות האישיות של gcloud

  1. בודקים שההגדרה של gcloud מוגדרת לפרויקט בענן ב-Google Cloud שמשויך לארגון Apigee.

    כדי להציג את ההגדרות הנוכחיות. מידע נוסף זמין במאמר בנושא gcloud config.

    gcloud config list

    אם צריך, מגדירים את מזהה הפרויקט הנכון ב-Google Cloud באמצעות הפקודה הבאה:

    gcloud config set project project-id
  2. צריך לבצע אימות באמצעות Google Cloud SDK‏ (gcloud) עבור הפרויקט ב-Google Cloud. אפשר גם לעיין במאמר בנושא gcloud auth login.
    gcloud auth login

הקצאת Apigee

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

  1. עוברים לספרייה $CLI_HOME:
    cd $CLI_HOME
  2. (אופציונלי) כברירת מחדל, המתאם מחפש פרטי כניסה של חשבון שירות שמוגדר כברירת מחדל בפרויקט בענן שלכם ב-Google Cloud כדי לקבל הרשאה לשלוח נתונים של ניתוח נתונים לאפליקציית Apigee. אם אתם לא רוצים להשתמש בפרטי הכניסה של חשבון השירות שמוגדר כברירת מחדל, אתם יכולים ליצור חשבון שירות ולהפנות למפתח שלו בפקודת ההקצאה. לחשבון השירות צריך להיות מוקצה התפקיד apigee.analyticsAgent. הוראות מפורטות זמינות במאמר יצירה וניהול של חשבונות שירות.
  3. יוצרים את משתני הסביבה הבאים. המשתנים האלה ישמשו כפרמטרים בסקריפט להקצאת הרשאות:
    export ORG=organization_name
    export ENV=environment_name
    export RUNTIME=host_alias_url
    export NAMESPACE=hybrid_runtime_namespace  ## Apigee hybrid only
    export AX_SERVICE_ACCOUNT=analytics_service_account  ## Optional

    כאשר:

    משתנה תיאור
    organization_name השם של הארגון שלכם ב-Apigee.
    environment_name השם של סביבה בארגון.
    host_alias_url
    • ב-Apigee Hybrid, כתובת URL שכוללת את hostAlias למארח וירטואלי שהוגדר בתצורת ה-Hybrid.
    • ב-Apigee, שם מארח מקבוצת הסביבות שכוללת את הסביבה. אפשר למצוא את קבוצות הסביבות בממשק המשתמש של Apigee בקטע Admin > Environments > Groups.
    • הערה: כתובת ה-URL חייבת להתחיל ב-https://. לדוגמה: https://apitest.mydomain.net

    hybrid_runtime_namepace (Apigee Hybrid בלבד) מרחב השמות שבו רכיבי זמן הריצה של Hybrid נפרסים.

    הערה: מרחב השמות שמוגדר כברירת מחדל לפריסה היברידית הוא apigee.

    analytics_service_account (אופציונלי) הנתיב לקובץ JSON של מפתח חשבון שירות ב-Google Cloud עם התפקיד Apigee Analytics Agent. תיאור מפורט של הפרמטר הזה מופיע במאמר בנושא פקודת הקצאת הרשאות.
  4. אם אתם לא הבעלים של פרויקט Google Cloud שמשויך לארגון Apigee, ודאו שחשבון המשתמש שלכם ב-Google Cloud כולל את התפקיד אדמין של ארגון Apigee, או את התפקידים יוצר API ופריסה. איך נותנים, משנים ומבטלים גישה למשאבים
  5. קבלת טוקן גישה:
    TOKEN=$(gcloud auth print-access-token);echo $TOKEN
  6. מבצעים הקצאה של פרוקסי שירות מרוחק ל-Apigee. פלט הפקודה מועבר לקובץ תצורה שבו תשתמשו בשלב מאוחר יותר.

    אם לא משדרגים, משתמשים בפקודה הזו כדי להקצות את Apigee. אם אתם מקצים משאבים ל-Apigee hybrid, הקפידו להוסיף את הפרמטר --namespace $NAMESPACE:

    ./apigee-remote-service-cli provision --organization $ORG --environment $ENV \
         --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml

    אם אתם משדרגים, משתמשים בפקודה הזו עם הדגל --force-proxy-install כדי להקצות את Apigee. אם אתם מקצים משאבים ל-Apigee hybrid, הקפידו להוסיף את הפרמטר --namespace $NAMESPACE:

    ./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \
         --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
  7. בודקים את התוכן של הקובץ config.yaml. הוא אמור להיראות בערך כך:
    # Configuration for apigee-remote-service-envoy (platform: Google Cloud)
    # generated by apigee-remote-service-cli provision on 2020-11-20 02:49:28
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          remote_service_api: https://apitest.mydomain.com/remote-service
          org_name: my-org
          env_name: test
        analytics:
          collection_interval: 10s
        auth:
          jwt_provider_key: https://apitest.mydomain.com/remote-service/token
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-org-new-test-policy-secret
      namespace: apigee
    type: Opaque
    data:
      remote-service.crt: eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJhbGci...
      remote-service.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURS...
      remote-service.properties: a2lkPTIwMjAtMDctMDZ...
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-org-new-test-analytics-secret
      namespace: apigee
    type: Opaque
    data:
      client_secret.json: ewogICJ0eXBlIjogInNlcnZ...
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
  8. אם אתם משתמשים ב-Apigee Hybrid, צריך להחיל את הגדרות השירות (הקובץ שנוצר על ידי פקודת ההקצאה) על האשכול שבו הותקן Apigee Hybrid בשלב 1: יצירת אשכול.

מריצים את apigee-remote-service-envoy

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

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

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

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

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

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

גרסה נוספת תמונה
Google distroless google/apigee-envoy-adapter:v2.0.3
Ubuntu google/apigee-envoy-adapter:v2.0.3-ubuntu
‫Ubuntu עם Boring Crypto google/apigee-envoy-adapter:v2.0.3-boring

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

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

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

יוצרים קובץ תצורה לדוגמה של 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

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

  1. מורידים קובץ בינארי של Envoy או יוצרים אותו.
  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@mydomain.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"
      }
    }

הסרת Apigee Envoy adapter

כדי להסיר התקנה של Apigee Envoy Adapter:

  1. בכל מקום שבו בחרתם להפעיל את מתאם Envoy (באופן מקורי או ב-Docker), מסירים אותו.
  2. מוחקים את ה-proxies‏ remote-service ו-remote-token מהסביבות שלכם ב-Apigee. מידע נוסף זמין במאמר בנושא מחיקת proxy ל-API.
  3. מסירים מוצרי API או פעולות שלא נמצאים בשימוש בתרחישי השימוש של מתאם Envoy. מידע נוסף זמין במאמר בנושא מחיקת מוצר API.

השלבים הבאים

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

  • ניגשים אל Apigee Analytics בממשק המשתמש של Edge. עוברים אל Analyze > API Metrics > API Proxy Performance.
  • אפשר לעיין באפשרויות ה-CLI במדריך העזר.