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

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

מגבלות על משתני סביבה

היעדים המתארחים מגבילים את הגודל והמספר של משתני הסביבה שאפשר להגדיר בסביבת זמן הריצה של יעדים מתארחים.

  • 1,000: האורך המקסימלי של משתנה סביבה יחיד.
  • 100: המספר המקסימלי של משתני סביבה שאפשר להגדיר.

למידע נוסף על הגדרה של משתני סביבה: קובץ המניפסט.

משתני סביבה שמוגדרים בזמן הריצה של האפליקציה

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

  • APIGEE_ENVIRONMENT – הסביבה שבה נפרס שרת ה-Proxy של היעד המתארח.
  • APIGEE_ORGANIZATION – הארגון שבו נפרס שרת ה-Proxy של היעד המתארח.
  • PORT – היציאה שבה אפליקציית היעד המתארחת חייבת להאזין.

הקצאת משאבי מערכת

כל מכונה של יעדים מתארחים מקבלים את המשאבים הבאים:

  • זיכרון בנפח 256MB
  • מעבד 1.2GHz

שינוי קנה מידה

בקטע הזה מתואר אופן הקנה המידה של אפליקציות יעדים מתארחים, בהתאם לסוג של חשבון Edge. שיש לכם.
  • גרסת ניסיון של Apigee Edge מוגבלת למופע אחד של יעדים מתארחים לכל שרת proxy.
  • חשבונות Apigee Edge בתשלום מקבלים התאמה לעומס (auto-scaling) על סמך קצב הבקשות, זמני האחזור של התגובה, ומדדי אפליקציות אחרים לכל שרת proxy.
  • אפליקציות מטרות עסקיות מתארחות שנפרסו גם בגרסה בתשלום וגם בגרסה לניסיון של Apigee Edge כאפס במקרים של חוסר פעילות. במקרה כזה, יכול להיות שזמני התגובה יהיו איטיים יותר למשך פרק זמן קצר. עוד באותו הקשר בעיות מוכרות

קובץ המניפסט

כדי לאסוף מידע על סביבת זמן הריצה לפיתוח ופריסה של האפליקציה המתארחת, Edge מחפש קובץ מניפסט בשם app.yaml בספרייה resources/host. הקובץ הזה מכיל את המידע הנחוץ ליצירה ולפריסה של אפליקציית היעדים המתארחים.

תחביר של קובץ 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 – (אופציונלי) מערך של משתני סביבה (צמדים של שם/ערך) להגדיר בסביבת זמן הריצה של יעדים מתארחים. המשתנים האלה זמינים שפרסתם את אפליקציית היעדים המתארחים.
    • 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 (מניפסט) לדוגמה לאפליקציות של 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


    דוגמה שמציינת הפניה ל-Key Value Map (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-Sample/doc-Sample/host-targets.
    4. אחרי שמורידים את המאגר, אפשר להוסיף CD לכל אחת מהספריות לדוגמה ולפעול לפי הוראות README לפריסת שרת proxy לדוגמה ב-Edge. פקודת הפריסה מוצגת בהמשך. Simply מחליפים את הפרמטרים שצוינו בפרמטרים של חשבון 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. במקרים מסוימים, יכול להיות שהזמן הקצוב לתפוגה של הפריסה יפוג ואם תפרסו מחדש, הבעיה תיפתר מעצמה.