אתם צופים במסמכי העזרה של 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 ל-Envoy.
האיור הבא מציג את הארכיטקטורה הבסיסית לשילוב של Apigee Edge:
שרת proxy של Envoy ו-Remote Service פועלים באופן מקומי. Envoy מטפל בתעבורת ה-API לשירות היעד וממנו ומתקשרים עם השירות המרוחק. השירות המרוחק גם מתקשר עם Apigee Edge Cloud כדי לאחזר מידע על מוצר API ושרת proxy.
הקצאת Apigee Edge
בשלב הזה משתמשים ב-CLI של שירות Remote כדי להקצות Apigee Adapter לנכסי Envoy ל-Apigee Edge. פקודת הקצאת המשאבים פורסת שרת proxy של API ב-Apigee Edge, ומגדירה גם אישור ב-Apigee ויוצרת פרטי כניסה שדרכם השירות מרחוק יתחבר באופן מאובטח מהמערכת שלכם ל-Apigee.
- עוברים לספרייה
$CLI_HOME
:cd $CLI_HOME
- יוצרים את משתני הסביבה הבאים. המשתנים האלה ישמשו כפרמטרים לסקריפט הקצאת המשאבים:
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. - מריצים את הפקודה הבאה כדי להקצות את שרת ה-proxy של השירות המרוחק ב-Apigee Edge:
./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \ --organization $ORG --environment $ENV > config.yaml
- בודקים את התוכן של הקובץ
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.
הפעלת השירות באופן מקורי
מריצים את קובץ הבינארי של השירות עם קובץ התצורה שהופיק על ידי פקודת הקצאת המשאבים:
$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.
כדי ליצור את הדוגמאות:
- עוברים לספרייה
$CLI_HOME
. מריצים את הפקודה הבאה כדי ליצור את הקבצים:
./apigee-remote-service-cli samples create --template native -c ./config.yaml
הקבצים הבאים מועברים כפלט לספרייה
./samples
:ls samples envoy-config.yaml
מידע נוסף זמין במאמר הפקודה samples.
התקנה והפעלה של שרת ה-proxy של Envoy
כדי להתקין ולהפעיל את שרת ה-proxy של Envoy:
- אפשר להוריד קובץ בינארי של Envoy או ליצור אותו, או להשתמש ב-Docker.
- מריצים את Envoy באמצעות קובץ תצורה לדוגמה שיצרתם קודם לשירות
httpbin.org
:envoy -c $CLI_HOME/samples/envoy-config.yaml
בדיקת ההתקנה
- קוראים לשירות
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
- מגדירים מוצר API ומקבלים מפתח API, כמו שמוסבר במאמר איך מקבלים מפתח API.
- מבצעים קריאה ל-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 זמינים בחומר העזרה.