הדף הזה רלוונטי ל-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
- בודקים שההגדרה של
gcloudמוגדרת לפרויקט בענן ב-Google Cloud שמשויך לארגון Apigee.כדי להציג את ההגדרות הנוכחיות. מידע נוסף זמין במאמר בנושא gcloud config.
gcloud config list
אם צריך, מגדירים את מזהה הפרויקט הנכון ב-Google Cloud באמצעות הפקודה הבאה:
gcloud config set project project-id
- צריך לבצע אימות באמצעות Google Cloud SDK (gcloud) עבור הפרויקט ב-Google Cloud. אפשר גם לעיין במאמר בנושא gcloud auth login.
gcloud auth login
הקצאת Apigee
בשלב הזה, תשתמשו ב-CLI של שירות מרוחק כדי להקצות נכסים של Apigee Adapter for Envoy ל-Apigee. פקודת ההקצאה פורסת שרתי proxy של API שמשמשים לפעולות של מתאם Apigee, מגדירה אישור ב-Apigee ויוצרת פרטי כניסה שהשירות המרוחק ישתמש בהם כדי להתחבר בצורה מאובטחת מהמערכת שלכם ל-Apigee.
- עוברים לספרייה
$CLI_HOME:cd $CLI_HOME
- (אופציונלי) כברירת מחדל, המתאם מחפש פרטי כניסה של חשבון שירות שמוגדר כברירת מחדל בפרויקט בענן שלכם ב-Google Cloud כדי לקבל הרשאה לשלוח נתונים של ניתוח נתונים לאפליקציית Apigee. אם אתם לא רוצים להשתמש בפרטי הכניסה של חשבון השירות שמוגדר כברירת מחדל, אתם יכולים ליצור חשבון שירות ולהפנות למפתח שלו בפקודת ההקצאה. לחשבון השירות צריך להיות מוקצה התפקיד
apigee.analyticsAgent. הוראות מפורטות זמינות במאמר יצירה וניהול של חשבונות שירות. - יוצרים את משתני הסביבה הבאים. המשתנים האלה ישמשו כפרמטרים בסקריפט להקצאת הרשאות:
export ORG=organization_nameexport ENV=environment_nameexport RUNTIME=host_alias_urlexport NAMESPACE=hybrid_runtime_namespace## Apigee hybrid onlyexport 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.nethybrid_runtime_namepace (Apigee Hybrid בלבד) מרחב השמות שבו רכיבי זמן הריצה של Hybrid נפרסים. הערה: מרחב השמות שמוגדר כברירת מחדל לפריסה היברידית הוא
apigee.analytics_service_account (אופציונלי) הנתיב לקובץ JSON של מפתח חשבון שירות ב-Google Cloud עם התפקיד Apigee Analytics Agent. תיאור מפורט של הפרמטר הזה מופיע במאמר בנושא פקודת הקצאת הרשאות. - ב-Apigee Hybrid, כתובת URL שכוללת את
- אם אתם לא הבעלים של פרויקט Google Cloud שמשויך לארגון Apigee, ודאו שחשבון המשתמש שלכם ב-Google Cloud כולל את התפקיד אדמין של ארגון Apigee, או את התפקידים יוצר API ופריסה. איך נותנים, משנים ומבטלים גישה למשאבים
- קבלת טוקן גישה:
TOKEN=$(gcloud auth print-access-token);echo $TOKEN
- מבצעים הקצאה של פרוקסי שירות מרוחק ל-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 - בודקים את התוכן של הקובץ
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
- אם אתם משתמשים ב-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:
- חשוב לוודא שאתם נמצאים בספרייה
$ENVOY_HOME. - מציגים את תבניות ההגדרות הזמינות:
$CLI_HOME/apigee-remote-service-cli samples templates
מריצים את פקודת הדוגמאות. במקום TEMPLATE, מחליפים באחת מתבניות Envoy הנתמכות:
$CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml
הפקודה יוצרת את הקובץ
./samples/envoy-config.yaml.
מידע נוסף זמין במאמר בנושא פקודת דוגמאות.
התקנה והפעלה של שרת ה-proxy של Envoy
כדי להתקין ולהפעיל את Envoy proxy:
- מורידים קובץ בינארי של Envoy או יוצרים אותו.
- מריצים את Envoy באמצעות קובץ תצורה לדוגמה שיצרתם קודם עבור שירות
httpbin.org:envoy -c ./samples/envoy-config.yaml
בדיקת ההטמעה
- מגדירים מוצר API ומקבלים מפתח API כמו שמוסבר במאמר איך מקבלים מפתח API.
- שליחת קריאה לשירות
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
- מבצעים קריאה ל-API באמצעות המפתח:
export APIKEY=YOUR_API_KEYcurl -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:
- בכל מקום שבו בחרתם להפעיל את מתאם Envoy (באופן מקורי או ב-Docker), מסירים אותו.
- מוחקים את ה-proxies remote-service ו-remote-token מהסביבות שלכם ב-Apigee. מידע נוסף זמין במאמר בנושא מחיקת proxy ל-API.
- מסירים מוצרי API או פעולות שלא נמצאים בשימוש בתרחישי השימוש של מתאם Envoy. מידע נוסף זמין במאמר בנושא מחיקת מוצר API.
השלבים הבאים
תעבורת הנתונים של API לשירות httpbin מנוהלת עכשיו על ידי Apigee. אלה כמה תכונות שכדאי לנסות:
- ניגשים אל Apigee Analytics בממשק המשתמש של Edge. עוברים אל Analyze > API Metrics > API Proxy Performance.
- אפשר לעיין באפשרויות ה-CLI במדריך העזר.