מידע על יעדים מתארחים

אתם צופים במסמכי התיעוד של 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

    קבצים לדוגמה של מניפסט

    בקטע הזה מופיעות דוגמאות לקובצי מניפסט של אפליקציות 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.

    דרישות מוקדמות

    כדי לפרוס את הדוגמאות, צריך להתקין במערכת שני כלים:

    • apigeetool – כלי שורת פקודה לפריסת שרתי proxy של Edge.
    • get_token – כלי שורת פקודה להשגת אסימון הרשאה שנדרש על ידי apigeetool.

    אם רוצים לבדוק דוגמאות באופן מקומי, צריך גם להתקין את Node.js.

    קבלת מאגר הדוגמאות

    1. בדפדפן, עוברים אל https://github.com/apigee/api-platform-samples.
    2. לוחצים על Clone or download (שיבוט או הורדה) ומשכים את המאגר למערכת המקומית באמצעות השיטה המועדפת.
    3. cd אל <your install dir>/api-platform-samples/doc-samples/hosted-targets
    4. אחרי שמורידים את המאגר, אפשר להשתמש בפקודה cd כדי לעבור לאחת מהספריות לדוגמה ולפעול לפי ההוראות בקובץ ה-README כדי לפרוס שרת proxy לדוגמה ב-Edge. פקודת הפריסה מוצגת בהמשך. פשוט מחליפים את הפרמטרים שצוינו בפרמטרים של חשבון Apigee שלכם:
    5. 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 הבאה תימשך קצת יותר זמן מבקשות API רגילות, כי התשתית מפעילה את המופעים כדי לעבד את הבקשות.
    • שגיאת פריסה – אם מתקבלת שגיאת פריסה כשפורסים שרת proxy של Hosted Targets, מנסים לפרוס מחדש את שרת ה-proxy. במקרים מסוימים, יכול להיות שזמן הפריסה יסתיים לפני שהיא תושלם, ואם תפרסו מחדש, הבעיה תיפתר.