אתם מציגים את מסמכי התיעוד של Apigee Edge.
כניסה למסמכי העזרה של Apigee X. info
מגבלות על משתני סביבה
מטרות עסקיות מתארחות מגבילות את הגודל והמספר של משתני הסביבה שאפשר להגדיר בסביבת זמן הריצה של יעדים מתארחים.
- 1,000: האורך המקסימלי של משתנה סביבה יחיד.
- 100: המספר המקסימלי של משתני הסביבה שאפשר להגדיר.
מידע נוסף על הגדרת משתני סביבה זמין במאמר קובץ המניפסט.
משתני סביבה שמוגדרים בזמן הריצה של האפליקציה
כשפורסים אפליקציה של יעדים מתארחים, משתני הסביבה הבאים מוגדרים וזמינים לאפליקציה בזמן הריצה:
APIGEE_ENVIRONMENT
– הסביבה שבה פרוס שרת ה-Proxy של היעד המתארח.APIGEE_ORGANIZATION
– הארגון שבו נפרס שרת ה-Proxy של היעד המתארח.PORT
– היציאה שבה אפליקציית היעד המתארחת חייבת להאזין.
הקצאת משאבי מערכת
כל מכונה של יעדים מתארחים מקבלים את המשאבים הבאים:
- זיכרון בנפח 256MB
- מעבד 1.2GHz
שינוי קנה מידה
בקטע הזה נסביר את אופן ההתאמה של האפליקציות ביעד Hosted, בהתאם לסוג חשבון Edge שלכם.- גרסת הניסיון של Apigee Edge מוגבלת למכונה אחת של Hosted Targets לכל שרת proxy.
- חשבונות Apigee Edge בתשלום מקבלים התאמה לעומס (scaling) באופן אוטומטי על סמך קצב הבקשות, זמני האחזור של התגובה ומדדי אפליקציות אחרים לכל שרת proxy.
- אפליקציות של Hosted Targets שנפרסו גם בגרסאות בתשלום וגם בגרסאות הניסיון של Apigee Edge מותאמות לעומס אפס בתקופות של חוסר פעילות. במקרה כזה, יכול להיות שתבחינו בזמני תגובה איטיים יותר לפרק זמן קצר. אפשר לעיין גם במאמר בעיות מוכרות
קובץ המניפסט
כדי לאסוף מידע על זמן הריצה לצורך פיתוח ופריסה של האפליקציה המתארחת, Edge מחפש קובץ מניפסט בשם app.yaml בתיקייה resources/hosted. הקובץ הזה מכיל את המידע הנחוץ ליצירה ולפריסה של אפליקציית היעדים המתארחים.
תחביר של קובץ Manfiest
runtime: node runtimeVersion: version_number command: command_name args: argument_array env: - name: variable_name value: literal_value - name: variable_name valueRef: name: kvm_name key: kvm_value
רכיבים של קובץ מניפסט
קובץ מניפסט מסוג app.yaml כולל את הרכיבים הבאים:
- runtime – (חובה) מציין את סוג האפליקציה שאתם פורסים.
צריך לציין
node
. - runtimeVersion - (אופציונלי) הגרסה של סביבת זמן הריצה שבה האפליקציה משתמשת. ברירת המחדל: Node.js LTS (v10.x). אפשרויות נוספות מפורטות במאגר הרשמי של Docker ל-Node.
- command - (אופציונלי) מאפשר לציין פקודה להרצה מלבד פקודת ברירת המחדל שמשמשת להפעלת האפליקציה. ברירת המחדל:
Node.js=npm
- args – (אופציונלי) מערך הארגומנטים של שורת הפקודה שצריך להעביר לאפליקציה (מצוין בתחביר סטנדרטי של מערך YAML). בדרך כלל, האפשרויות האלה נוספות לפקודת ברירת המחדל.
ברירת המחדל היא start. לדוגמה, כברירת מחדל, לאפליקציית Node.js תועבר הפקודה
npm start
. - env – (אופציונלי) מערך של משתני סביבה (צמדי שם/ערך) שצריך להגדיר בסביבת זמן הריצה של Hosted Targets. המשתנים האלה זמינים לאפליקציית Hosted Targets שנפרסה.
- name – שם המשתנה.
- value | valueRef – יש שתי אפשרויות. אפשר להגדיר ערך מילולי או להפנות לערך שמאוחסן במיפוי של מפתח/ערך. מפת ערך המפתח צריכה
להיות קיימת כבר בסביבת Edge שלכם. ראו עבודה עם מפות Google לגבי ערך מרכזי
- אם משתמשים ב-value, צריך לציין את המשתנה
name
ואת הערךvalue
בליטרל. לדוגמה:runtime: node env: - name: NODE_ENV value: production
- אם משתמשים ב-valueRef, צריך לציין את השם של מפת ערכי המפתח (KVM) שיצרתם בעבר ב-Edge וגם מפתח.
לדוגמה:
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- אם משתמשים ב-value, צריך לציין את המשתנה
קובצי מניפסט לדוגמה
הקטע הזה מכיל קובצי מניפסט לדוגמה לאפליקציות של Node.js. קובץ מניפסט נדרש כדי לפרוס אפליקציית Hosted Targets, והמיקום שלו צריך להיות בספרייה apiproxy/resources/hosted
, ושם הקובץ חייב להיות app.yaml
.
בהמשך מופיעים קובצי app.yaml
(מניפסט) לדוגמה לאפליקציות של Node.js.
דוגמה שמציינת משתנה סביבה מילולי:
runtime: node env: - name: NODE_ENV value: production
דוגמה עם פקודת התחלה, ארגומנטים של שורת פקודה ומשתנה סביבה.
runtime: node command: ./node_modules/pm2/bin/pm2 env: - name: NODE_ENV value: production args: - app.js
דוגמה לציון של מפה של מפתח/ערך (KVM):
מידע נוסף על גישה ל-KVM זמין במאמר קובץ המניפסט.
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
דוגמה לאפליקציות של מטרות עסקיות מתארחות ב-GitHub
Apigee מספקת שרתי proxy לדוגמה ב-GitHub עם אפליקציות Hosted Targets שנכתבו ב-Node.js. אפשר לשכפל את המאגר הזה ולפעול לפי הוראות ה-README כדי לפרוס את שרתי ה-proxy.
דרישות מוקדמות
כדי לפרוס את הדוגמאות, צריך להתקין במערכת שני כלים:
- apigeetool – כלי שורת הפקודה לפריסה של שרתי proxy של Edge.
- get_token - כלי שורת פקודה לקבלת אסימון הרשאה שנדרש על ידי apigeetool.
אם אתם רוצים לבדוק דוגמאות באופן מקומי, אתם צריכים גם להתקין את Node.js.
קבלת המאגר לדוגמה
- פותחים דפדפן ונכנסים לכתובת https://github.com/apigee/api-platform-samples.
- לוחצים על Clone or download (העתקה או הורדה) ומבצעים משיכה של המאגר למערכת המקומית באמצעות השיטה המועדפת.
- cd אל <your Install dir>/api-platform-Sample/doc-Sample/host-targets.
- אחרי הורדת המאגר, אפשר להיכנס לאחת מהספריות לדוגמה ולפעול לפי ההוראות במסמך README כדי לפרוס שרת proxy לדוגמה ב-Edge. הפקודה לפריסה מופיעה בהמשך. פשוט מחליפים את הפרמטרים שצוינו בפרמטרים של חשבון Apigee:
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
דוגמה: הפעלת אפליקציה לדוגמה
שכפול של מאגר הדוגמאות
cd ~/myhome
git clone https://github.com/apigee/api-platform-samples.git
cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
cd node-hosted-hello
בדיקת האפליקציה באופן מקומי
כדי לבצע את הבדיקה המקומית הזו, צריך להתקין את Node.js.
PORT=8081 node apiproxy/resources/hosted/index.js
curl http://localhost:8081
פלט לדוגמה:
{"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}
פריסה של שרת ה-proxy
get_token && apigeetool deployproxy \ -o myorg \ -e test \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api node-hosted-hello \ --directory .
בדיקת הפריסה
תהליך הפריסה עשוי להימשך כמה דקות. אם מופיעה שגיאת פריסה, מריצים שוב את פקודת הפריסה.
curl http://myorg-test.apigee.net/node-hosted-hello
פלט לדוגמה:
{"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"
בעיות מוכרות
- זמני אחזור ברשת – עכשיו, כשאפליקציית Node.js כבר לא פועלת ב-JVM של ה-MP, יש קפיצה ברשת בין ה-MP לבין הפריסה. כמובן, הדבר כרוך בעלות, אבל נקודות ההשוואה הראשוניות מראות שהוא טוב בסכום סביר
- תגובות API איטיות – התשתית שמפעילה את האפליקציות שלכם מותאמת באופן אוטומטי לעומס (scaling) בהתאם לצורך. המשמעות היא שבאפליקציה יש אפשרות לצמצם את כמות המכונות לאפס, ובמקרה כזה, בקשת ה-API הבאה תימשך קצת יותר זמן מבקשות ה-API הרגילות, כי התשתית מריצה את המכונות כדי לעבד את הבקשות.
- שגיאת פריסה – אם מופיעה שגיאת פריסה בזמן הפריסה של שרת proxy של Hosted Targets, נסו לפרוס מחדש את שרת ה-proxy. במקרים מסוימים, יכול להיות שיחלוף הזמן הקצוב לפריסה, ואם תבצעו פריסה מחדש, הבעיה תיפתר מעצמה.