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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כשמשתמשים בדגל --bundled-dependencies ב-apigeetool, אפליקציית Node.js מועלית אל Hosted Targets, וכל הקבצים המקומיים או הפרטיים שמופיעים במערך 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-token.
  3. ניגשים לדף ההגדרות של מיפויי ערכי מפתח, כמו שמתואר בהמשך.

    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. בסרגל הניווט העליון, בוחרים באפשרות ממשקי API > הגדרת סביבה > מיפוי ערכי מפתח.
  4. לוחצים על + מיפוי של זוגות מפתח/ערך.
  5. בתיבת הדו-שיח New Key Value Map (מיפוי חדש של זוגות מפתח/ערך), מזינים שם ובוחרים באפשרות Encrypted (מוצפן).
  6. לוחצים על הוספה.
  7. מוסיפים את אסימון האימות שאיתרתם או יצרתם קודם כרשומה חדשה בכל אחד מה-KVMs שיצרתם.
  8. בקובץ app.yaml מוסיפים רשומה שמפנה אל ה-KVM ואל המפתח שמשויכים לטוקן האימות של npm. הוא אמור להיראות כך:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    כאשר:

    • מאפיין השם ברמה העליונה תואם לשם של משתנה הסביבה שייווצר.
    • השם שמופיע בקטע 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 לא נפרס, כדאי לבדוק את יומני הבנייה כדי לראות אם הוא נכשל בהתקנת מודול npm פרטי. אם כן:
    1. בכרטיסייה develop (פיתוח), מוודאים שהקובץ .npmrc קיים.
    2. מוודאים שהאסימון תקין (אפשר לנסות להתקין את המודול באופן מקומי כשהאסימון נמצא ב-KVM).
    3. אם אתם משתמשים בהיקף מותאם אישית, ודאו שהוא מוגדר.

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

כברירת מחדל, נעשה שימוש ב-NPM v4 כדי להתקין תלות בחבילות בסביבת Hosted Targets. עם זאת, אם רוצים להשתמש בגרסה אחרת של 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) לבדיקת תקינות. עם זאת, אם אתם מטמיעים נקודת קצה לבדיקת תקינות, חשוב לשים לב לנקודות הבאות:

  • אם האפליקציה יוצאת כש-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

כברירת מחדל, Hosted Targets משתמש ב-npm start כדי להפעיל את אפליקציית Hosted Target. אבל במשימה הקודמת דיברנו על בעיה בשימוש ב-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 היא רק דוגמה.