כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מגבלות של משתני סביבה
היעדים המתארחים מגבילים את הגודל והמספר של משתני הסביבה שאפשר להגדיר בסביבת זמן הריצה של היעדים המתארחים.
- 1,000: אורך מקסימלי של משתנה סביבה יחיד.
- 100: המספר המקסימלי של משתני סביבה שאפשר להגדיר.
למידע נוסף על הגדרה של משתני סביבה, תוכלו לקרוא את המאמר קובץ המניפסט.
משתני הסביבה שמוגדרים בזמן הריצה של האפליקציה
כשפורסים אפליקציה מתארחת, משתני הסביבה הבאים מוגדרים וזמינים לאפליקציה בזמן הריצה:
APIGEE_ENVIRONMENT
– הסביבה שבה נפרס שרת ה-proxy של היעד המתארח.APIGEE_ORGANIZATION
– הארגון שבו נפרס שרת ה-proxy של היעד המתארח.PORT
- היציאה שבה אפליקציית היעד המתארחת חייבת להאזין.
הקצאת משאבי מערכת
כל מופע של יעדים מתארחים מקבל את המשאבים הבאים:
- זיכרון בנפח 256MB
- מעבד (CPU) של 1.2GHz
שינוי קנה מידה
בקטע הזה מוסבר איך קנה המידה של האפליקציות ב-Hosted Targets, בהתאם לסוג חשבון Edge שלכם.- גרסת ניסיון של Apigee Edge מוגבלת למופע אחד של יעדים מתארחים לכל שרת proxy.
- חשבונות Apigee Edge בתשלום מקבלים התאמה לעומס (scaling) באופן אוטומטי על סמך שיעור הבקשות, זמן האחזור של התגובה
ומדדי אפליקציות אחרים לכל שרת proxy.
- אפליקציות ב-Hosted Targets שנפרסו בגרסאות בתשלום ובגרסאות ניסיון של Apigee Edge עומדות לאפס במקרים של חוסר פעילות. במקרה כזה, יכול להיות שזמני התגובה יהיו איטיים יותר לפרק זמן קצר. כדאי לעיין גם בבעיות מוכרות.
קובץ המניפסט
כדי לאסוף מידע על זמן ריצה ליצירה ולפריסה של האפליקציה המתארחת, Edge מחפש קובץ מניפסט בשם app.yaml בספרייה resources/guest. קובץ זה מכיל את המידע הדרוש ליצירה ולפריסה של האפליקציה 'יעדים מתארחים'.
תחביר של קובץ 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 לצומת.
- command - (אופציונלי) מאפשר לכם לציין פקודה להפעלה שונה מפקודת ברירת המחדל המשמשת להפעלת האפליקציה. ברירת המחדל:
Node.js=npm
- args – (אופציונלי) מערך ארגומנטים של שורת פקודה שיש להעביר לאפליקציה (מצוין בתחביר של מערך YAML רגיל). בדרך כלל הם נוספים לפקודת ברירת המחדל.
ברירת המחדל היא התחלה. לדוגמה, כברירת מחדל, האפליקציה Node.js תעביר את הפקודה
npm start
. - env - (אופציונלי) מערך של משתני סביבה (צמדים של שם/ערך) להגדרה בסביבת זמן הריצה של Hosted Targets. המשתנים האלה זמינים לאפליקציה 'יעדים מתארחים' שנפרסה.
- name - שם המשתנה.
- value | valueRef – יש שתי אפשרויות. אפשר להגדיר ערך מילולי או להפנות לערך ששמור במפת ערכי מפתח. מפת הערך של המפתח חייבת להיות קיימת כבר בסביבת Edge. מידע נוסף מופיע בקטע עבודה עם מפות של ערכי מפתח
- אם משתמשים ב-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. יש צורך בקובץ מניפסט כדי לפרוס את האפליקציה 'יעדים מתארחים'. הקובץ חייב להיות ממוקם
בספרייה apiproxy/resources/hosted
ושם הקובץ חייב להיות app.yaml
.
בהמשך מוצגים קובצי app.yaml
(מניפסט) לדוגמה עבור אפליקציות Node.js.
דוגמה לציון משתנה סביבה מילולי:
runtime: node env: - name: NODE_ENV value: production
דוגמה עם פקודת start, ארגומנטים בשורת הפקודה ומשתנה סביבה.
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.
- לוחצים על שכפול או הורדה ומעבירים את המאגר למערכת המקומית בשיטה המועדפת עליכם.
- cd אל <your install dir>/api-platform-samples/doc-samples/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 איטיות – התשתית שבה האפליקציות שלכם פועלות משנה את גודלה באופן אוטומטי לפי הצורך. המשמעות היא שהאפליקציה שלכם יכולה בפועל להתאים לאפס מכונות. במקרה כזה, בקשת ה-API הבאה תארך קצת יותר זמן מהבקשות הרגילות, כי התשתית מסובבת את המכונות כדי לעבד את הבקשות.
- שגיאת פריסה – אם מתקבלת שגיאת פריסה במהלך הפריסה של שרת proxy של יעדים מתארחים, כדאי לנסות לפרוס אותו מחדש. במקרים מסוימים, זמן הפריסה עשוי להסתיים. אם תפרוס מחדש, הבעיה תיפתר מעצמה.