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

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

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

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

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

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