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

כרגע מוצג התיעוד של 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

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

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

    השגת המאגר לדוגמה

    1. בדפדפן, עוברים אל https://github.com/apigee/api-platform-samples.
    2. לוחצים על שכפול או הורדה ומעבירים את המאגר למערכת המקומית בשיטה המועדפת עליכם.
    3. cd אל <your install dir>/api-platform-samples/doc-samples/host-targets
    4. אחרי שמורידים את המאגר, אפשר להוסיף הקלטה לכל אחת מהספריות לדוגמה ולפעול בהתאם להוראות ב-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 הבאה תארך קצת יותר זמן מהבקשות הרגילות, כי התשתית מסובבת את המכונות כדי לעבד את הבקשות.
    • שגיאת פריסה – אם מתקבלת שגיאת פריסה במהלך הפריסה של שרת proxy של יעדים מתארחים, כדאי לנסות לפרוס אותו מחדש. במקרים מסוימים, זמן הפריסה עשוי להסתיים. אם תפרוס מחדש, הבעיה תיפתר מעצמה.