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

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

ביטול הפריסה של שרת proxy של Hosted Targets

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

זהו מצב לא נפוץ, אבל חשוב לדעת שאם משכפלים באופן פנימי מאגר 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. נכנסים לדף ההגדרות של מפות מפתח/ערך, כפי שמתואר בהמשך.

    Edge

    כדי לגשת לדף ההגדרות של מפות מפתח/ערך באמצעות ממשק המשתמש של Edge:

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

    Classic Edge (ענן פרטי)

    כדי לגשת לדף ההגדרות של מפות מפתח/ערך באמצעות ממשק המשתמש הקלאסי של Edge:

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

    כאשר:

    • מאפיין name ברמה העליונה תואם לשם של משתנה הסביבה שייווצר.
    • 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. בכרטיסייה develop, מוודאים שהקובץ 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. אפשר להגדיר את המשתנה הזה בקובץ המניפסט של האפליקציה. פרטים נוספים זמינים במאמר רכיבים של קובץ מניפסט.

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

  • אם האפליקציה תיסגר כש-Apigee מגיע לנקודת הקצה, האפליקציה לא תופעל כצפוי.
  • אין בעיה אם נקודת הקצה מחזירה סטטוס HTTP 404 Not Found. /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 היא רק דוגמה.