אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
מגבלות על משתני סביבה
הגודל ומספר משתני הסביבה שאפשר להגדיר בסביבת זמן הריצה של Hosted Targets מוגבלים.
- 1000: האורך המקסימלי של משתנה סביבה יחיד.
- 100: המספר המקסימלי של משתני סביבה שאפשר להגדיר.
מידע על הגדרת משתני סביבה זמין במאמר בנושא קובץ המניפסט.
משתני סביבה שמוגדרים בזמן הריצה של האפליקציה
כשפורסים אפליקציה של Hosted Targets, משתני הסביבה הבאים מוגדרים וזמינים לאפליקציה בזמן הריצה:
-
APIGEE_ENVIRONMENT– הסביבה שבה נפרס שרת ה-Proxy של יעד מארח. -
APIGEE_ORGANIZATION– הארגון שבו נפרס שרת ה-Proxy של היעד המתארח. -
PORT– היציאה שבה אפליקציית היעד המתארחת צריכה להאזין.
הקצאת משאבי מערכת
כל מופע של Hosted Targets מקבל את המשאבים הבאים:
- זיכרון בנפח 256MB
- מעבד (CPU) 1.2 GHz
שינוי קנה מידה
בקטע הזה מוסבר איך אפליקציות של Hosted Targets מתרחבות, בהתאם לסוג החשבון של Edge שיש לכם.- גרסת הניסיון של Apigee Edge מוגבלת למופע אחד של Hosted Targets לכל שרת proxy.
- חשבונות בתשלום של Apigee Edge מקבלים התאמה אוטומטית לעומס (autoscaling) על סמך קצב הבקשות, זמן האחזור של התגובות ומדדים אחרים של האפליקציה לכל שרת proxy.
- אפליקציות Hosted Targets שנפרסות בגרסאות בתשלום ובגרסאות ניסיון של Apigee Edge מתרחבות לאפס בתקופות של חוסר פעילות. במקרה כזה, יכול להיות שתבחינו בזמני תגובה איטיים יותר למשך תקופה קצרה. מידע נוסף בעיות מוכרות
קובץ המניפסט
כדי לאסוף מידע על זמן הריצה לצורך בנייה ופריסה של האפליקציה המתארחת, Edge מחפש קובץ מניפסט בשם app.yaml בספרייה resources/hosted. הקובץ הזה מכיל מידע שנדרש כדי ליצור ולפרוס את אפליקציית Hosted Targets.
תחביר של קובץ מניפסט
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). בדרך כלל מוסיפים אותם לפקודה שמוגדרת כברירת מחדל.
ברירת המחדל היא התחלה. לדוגמה, כברירת מחדל, הפקודה
npm startתועבר לאפליקציית Node.js. - env – (אופציונלי) מערך של משתני סביבה (צמדי שם/ערך) שצריך להגדיר בסביבת זמן הריצה של Hosted Targets. המשתנים האלה זמינים באפליקציית 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, צריך לציין משתנה
- apigeetool – כלי שורת פקודה לפריסת שרתי proxy של Edge.
- get_token – כלי שורת פקודה להשגת אסימון הרשאה שנדרש על ידי apigeetool.
- בדפדפן, עוברים אל https://github.com/apigee/api-platform-samples.
- לוחצים על Clone or download (שיבוט או הורדה) ומשכים את המאגר למערכת המקומית באמצעות השיטה המועדפת.
- cd אל <your install dir>/api-platform-samples/doc-samples/hosted-targets
- אחרי שמורידים את המאגר, אפשר להשתמש בפקודה cd כדי לעבור לאחת מהספריות לדוגמה ולפעול לפי ההוראות בקובץ ה-README כדי לפרוס שרת proxy לדוגמה ב-Edge. פקודת הפריסה מוצגת בהמשך. פשוט מחליפים את הפרמטרים שצוינו בפרמטרים של חשבון Apigee שלכם:
- זמני השהיה ברשת – עכשיו, כשהאפליקציה של Node.js כבר לא פועלת ב-JVM של MP, יש מעבר ברשת בין MP לפריסה. כמובן שיש לזה עלות, אבל נתוני השוואה ראשוניים מראים שהיא סבירה
- תגובות איטיות של API – התשתית שמריצה את האפליקציות שלכם מתרחבת באופן אוטומטי לפי הצורך. המשמעות היא שהאפליקציה יכולה להצטמצם לאפס מופעים. במקרה כזה, בקשת ה-API הבאה תימשך קצת יותר זמן מבקשות API רגילות, כי התשתית מפעילה את המופעים כדי לעבד את הבקשות.
- שגיאת פריסה – אם מתקבלת שגיאת פריסה כשפורסים שרת proxy של Hosted Targets, מנסים לפרוס מחדש את שרת ה-proxy. במקרים מסוימים, יכול להיות שזמן הפריסה יסתיים לפני שהיא תושלם, ואם תפרסו מחדש, הבעיה תיפתר.
קבצים לדוגמה של מניפסט
בקטע הזה מופיעות דוגמאות לקובצי מניפסט של אפליקציות Node.js. כדי לפרוס אפליקציית Hosted Targets, צריך קובץ מניפסט. הקובץ הזה צריך להיות בתיקייה apiproxy/resources/hosted ושם הקובץ צריך להיות app.yaml.
בהמשך מופיעות דוגמאות לקובצי app.yaml (manifest) לאפליקציות 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
דוגמאות לאפליקציות Hosted Targets ב-GitHub
Apigee מספקת פרוקסי לדוגמה ב-GitHub עם אפליקציות Hosted Targets שנכתבו ב-Node.js. אפשר לשכפל את המאגר הזה ולפעול לפי ההוראות בקובץ ה-README כדי לפרוס את אחד משרתי ה-proxy.
דרישות מוקדמות
כדי לפרוס את הדוגמאות, צריך להתקין במערכת שני כלים:
אם רוצים לבדוק דוגמאות באופן מקומי, צריך גם להתקין את Node.js.
קבלת מאגר הדוגמאות
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
דוגמה: הפעלת אפליקציה לדוגמה
שכפול מאגר הדוגמאות
cd ~/myhomegit clone https://github.com/apigee/api-platform-samples.gitcd ~/myhome/api-platform-samples/doc-samples/hosted-targetscd node-hosted-hello
בדיקת האפליקציה באופן מקומי
כדי לבצע את הבדיקה המקומית הזו, צריך להתקין את Node.js.
PORT=8081 node apiproxy/resources/hosted/index.jscurl 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!"