משימות של 'יעדים מתארחים'

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

ביטול הפריסה של שרת proxy של יעדים מתארחים

כשמבטלים פריסה של שרת proxy של Edge שכולל אפליקציית יעדים מתארחים, האפליקציה של היעדים המתארחים המשויכת אליו לא פרוסה, אבל תמונת האפליקציה הבסיסית לא נמחקת. אם פורסים מחדש את שרת ה-proxy, האפליקציה 'יעדים מתארחים' תיפרס מחדש.

מחיקת שרת proxy של יעדים מתארחים

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

גישה לקובצי יומן

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

  • יומן Build – הצגת פלט שקשור לפריסה ולבנייה של אפליקציה של יעדים מתארחים.
  • יומן זמן ריצה - מציג את הפלט שקשור לאפליקציית 'יעדים מתארחים' שפועלת. יומני זמן ריצה מוגבלים לסביבה ומציגים פרטי יומן לגרסה הקודמת של שרת ה-proxy שנפרסה.

גישה ליומנים מממשק המשתמש של Edge

  1. עוברים אל: apigee.com/edge
  2. מזינים את פרטי הכניסה ולוחצים על כניסה.
  3. בתפריט הניווט שבצד, בוחרים באפשרות פיתוח > ממשקי proxy ל-API.
  4. בוחרים את שרת ה-Proxy שעבורו רוצים להציג את היומנים.
  5. לוחצים על הכרטיסייה פיתוח.
  6. כדי להציג את יומן ה-build, לוחצים על Build Logs.
  7. כדי להציג את יומן זמן הריצה, לוחצים על יומני זמן ריצה.

גישה ליומנים באמצעות ה-API

אפשר גם להשתמש ב-Edge API כדי לאחזר יומנים של יעדים מתארחים. מידע נוסף מופיע במאמר קבלת יומני Node.js ששמורים במטמון.

שימוש במאגר npm פרטי

בקטע הזה מוסבר איך לפרוס שרת proxy של Node.js ליעדים מתארחים, במקרים שבהם משתמשים במאגר NPM פרטי בסביבת הפיתוח.

מה צריך לדעת על השימוש במאגר פרטי

כשפורסים אפליקציית Node.js ב-Edge, כל יחסי התלות של הפרויקט מיובאים באופן אוטומטי כחלק מתהליך הפריסה. בעיקרון, יעדים מתארחים מריצים npm install בקוד שלך כשהוא נפרס. עם זאת, אם משתמשים במאגר NPM פרטי בסביבת הפיתוח, לא ניתן לפתור את יחסי התלות הפרטיים בענן. במקרה כזה, הפתרון הוא להשתמש באפשרות --bundled-dependencies כשמשתמשים בכלי העזר לפריסה apigeetool. למידע נוסף, ראו פריסת Node.js מהמערכת ל-Edge.

כשמשתמשים בדגל --bundled-dependencies ב-apigeetool, אפליקציית Node.js תועלה ליעדים מתארחים וכל הקבצים המקומיים/הפרטיים שרשומים ב-bundledDependencies ב-package.json יידחסו ויועלו יחד עם החבילה.

זה לא מצב נפוץ, אבל חשוב לזכור שאם משכפלים מאגר NPM ציבורי באופן פנימי, הפריסה תיכשל אם חבילת הפריסה כוללת קובץ .npmrc או package-lock.json שמפנה לשיקוף הפרטי שלכם. במקרה כזה, צריך להשמיט את .npmrc או package-lock.json מחבילת שרת ה-proxy שרוצים לפרוס.

פריסה עם מאגר NPM פרטי

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

  1. התחברות ל-npm:
    npm login
  2. כדי לקבל אסימון אימות ל-npm:
    1. מחפשים את ה-.npmrc (אמור להופיע ב- ~/.npmrc).
    2. ב-.npmrc, שימו לב לאסימון בסוף השורה שנראה כך:

      //registry.npmjs.org/:_authToken=****
    3. לחלופין, אפשר להשתמש בפקודות npm token <list | create | revoke> כדי לרשום, ליצור או לבטל אסימון אימות. במסמכי התיעוד בנושא אסימון npm אפשר לקרוא פרטים נוספים.
  3. ניגשים לדף הגדרת Key Value Maps, כפי שמתואר בהמשך.

    Edge

    כדי לגשת לדף ההגדרה של Key Value Maps באמצעות ממשק המשתמש של Edge:

    1. נכנסים לאתר apigee.com/edge.
    2. בסרגל הניווט הימני, בוחרים באפשרות ניהול > סביבות > מפות של ערכי מפתח.

    Classic Edge (ענן פרטי)

    כדי לגשת לדף התצורה של Key Value Maps באמצעות ממשק המשתמש הקלאסי Edge:

    1. נכנסים אל http://ms-ip:9000. ms-ip הוא כתובת ה-IP או שם ה-DNS של הצומת של שרת הניהול.
    2. בסרגל הניווט העליון, בוחרים באפשרות APIs > Environment Configuration > Key Value Maps.
  4. לוחצים על + מפת ערכי מפתח.
  5. בתיבת הדו-שיח New Key Value Map, מזינים שם ובוחרים באפשרות מוצפן.
  6. לוחצים על הוספה.
  7. צריך להוסיף את אסימון האימות שמצאת או יצרת בעבר כרשומה חדשה בכל אחת מהמכונות הווירטואליות (KVM) שיצרת עכשיו.
  8. בקובץ app.yaml, מוסיפים רשומה שמפנה ל-KVM ולמפתח המשויכים לאסימון האימות של npm. הוא אמור להיראות כך:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    כאשר:

    • המאפיין name ברמה העליונה תואם לשם של משתנה הסביבה שתיצרו.
    • השם בקטע valueRef תואם ל-KVM שיצרתם קודם לכן.
    • המאפיין key תואם למפתח שממפה לאסימון ה-npm שהוספתם ל-KVM.
  10. יוצרים קובץ .npmrc באותה ספרייה שבה נמצא קובץ package.json. הקובץ אמור להיראות כך:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    או אם לא משתמשים ב-registry.npmjs.org ניתן להגדיר את ההיקף בקובץ .npmrc על ידי הוספת שורה כזו @myscope:registry=https://mycustomregistry.example.org יש לעיין גם במסמכי npmrc.
  11. מעלים או מעדכנים את שרת ה-Proxy של Node.js באמצעות קובץ .npmrc ו-app.yaml.
  12. חשוב לוודא ששרת ה-proxy החדש או המעודכן נפרס ופועל עם המודול של המאגר הפרטי הרצוי.
  13. אם שרת ה-Proxy לא נפרס, יש לבדוק את יומני ה-build כדי לראות אם התקנתו של מודול ה-npm הפרטי נכשלה. אם כן:
    1. בכרטיסיית הפיתוח, מוודאים שהפרמטר npmrc נמצא.
    2. חשוב לוודא שהאסימון תקין (יש לנסות להתקין את המודול באופן מקומי עם האסימון הקיים ב-kvm).
    3. אם משתמשים בהיקף מותאם אישית, מוודאים שהוא מוגדר.

ציון גרסת ה-NPM ליחסי תלות בחבילה

כברירת מחדל, נעשה שימוש ב-NPM v4 להתקנת יחסי תלות מקובצים בסביבה 'יעדים מתארחים'. עם זאת, אם רוצים להשתמש בגרסה אחרת של NPM, אפשר לציין אותה במשתנה הסביבה NPM_VERSION. אפשר להגדיר את המשתנה הזה בקובץ המניפסט של האפליקציה. פרטים נוספים זמינים במאמר רכיבים של קובץ מניפסט.

אם משתמשים ביחסי תלות של חבילות, ואם לא מציינים את הערך NPM_VERSION, ב-Hosted Targets נעשה שימוש ב-NPM v4 כברירת מחדל. אם לא משתמשים ביחסי תלות של חבילות, ייעשה שימוש בגרסת ה-NPM שכלולה בזמן הריצה של Node.js שצוין.

דוגמה לקשרי תלות בחבילה

הדוגמה הבאה ממחישה את התכונה של יחסי תלות בחבילה עם יעדים מתארחים, במאמר איך יוצרים אפליקציית Node.js עם פונקציות מתארחות באמצעות מודולים מותאמים אישית.

הוספת נקודת קצה לבדיקת תקינות

יש לכם אפשרות להטמיע נקודת קצה של בדיקת תקינות לאפליקציית Node.js שלכם. Apigee משתמש בנקודת הקצה הזו כאשר אפליקציית Node.js שלך מתחילה לבדוק אם האפליקציה פועלת בקונטיינר.

כברירת מחדל, נקודת הקצה ש-Apigee מצפה לה היא /health. אפשר לשנות את נקודת הקצה שמוגדרת כברירת מחדל על ידי ציון נקודת הקצה במשתנה סביבה בשם HOSTED_TARGET_HEALTH_CHECK_PATH. אפשר להגדיר את המשתנה הזה בקובץ המניפסט של האפליקציה. פרטים נוספים זמינים במאמר רכיבים של קובץ מניפסט.

אין צורך להטמיע נקודת קצה (endpoint) של בדיקת תקינות. עם זאת, אם בכל זאת מטמיעים נקודת קצה (endpoint) של בדיקת תקינות, חשוב לשים לב לנקודות הבאות:

  • אם האפליקציה שלך נסגרת כש-Apigee מגיע לנקודת הקצה, האפליקציה לא תופעל כצפוי.
  • זה בסדר אם נקודת הקצה מחזירה סטטוס HTTP '404 לא נמצא'. /health או HOSTED_TARGET_HEALTH_CHECK_PATH משמשים רק כדי לבדוק אם האפליקציה פועלת. המערכת תתעלם מהתגובה עצמה.

שינוי מיקום המטמון של NPM

בגרסאות חדשות יותר של Node.js נעשה שימוש בגרסה של NPM שבה נעשה שימוש ב-/root/.npm למטמון ה-NPM. מיקום זה מהווה בעיה עבור יעדים מתארחים מכיוון שמיקום ספרייה זה הוא לקריאה בלבד מכיוון שזמן הריצה של היעד המתארח משתמש במערכת קבצים tmpfs שבה ניתן לכתוב רק /tmp. כדי לפתור את הבעיה הזו, אפשר להגדיר את משתנה הסביבה npm_config_cache בקובץ app.yamlהמניפסט (קובץ המניפסט) של האפליקציה לספרייה בתוך /tmp. לדוגמה:

  runtime: node
  application: my-express-app
  env:
    - name: npm_config_cache
      value: /tmp/.npm
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  

הפעלת האפליקציה ללא NPM

כברירת מחדל, השירות 'יעדים מתארחים' משתמש ב-npm start כדי להפעיל את האפליקציה 'יעד מתארח'. אבל במשימה הקודמת דיברנו על בעיה בשימוש ב-NPM, כי גרסאות חדשות יותר ינסו להשתמש ב-/root/.npm למטמון ה-NPM. הוא לא ניתן לכתיבה וכתוצאה מכך לא ניתן להפעיל את היעד המתארח. המשימה הקודמת תפתור את הבעיה הזו, אבל אפשרות אחרת היא להריץ את האפליקציה ללא NPM. לשם כך, אפשר להשתמש בערכים command ו-args בקובץ app.yaml (קובץ המניפסט) של האפליקציה כדי להריץ את היעד המתארח ישירות באמצעות node index.js. לדוגמה:

  runtime: node
  application: my-express-app
  command: node
  args:
    - index.js
  env:
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  
כמובן שתוכלו להשתמש בכל פקודה שתרצו, ו-node index.js היא רק דוגמה.