אתם צופים במסמכי התיעוד של 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
- נכנסים לכתובת: apigee.com/edge
- מזינים את פרטי הכניסה ולוחצים על כניסה.
- בתפריט הניווט הצדדי, בוחרים באפשרות פיתוח > שרתי proxy של API.
- בוחרים את השרת הפרוקסי שרוצים לראות את היומנים שלו.
- לוחצים על הכרטיסייה פיתוח.
- כדי לראות את יומן הבנייה, לוחצים על Build Logs (יומני בנייה).
- כדי לראות את יומן זמן הריצה, לוחצים על 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 פרטי, פועלים לפי השלבים הבאים:
- מתחברים ל-npm:
npm login
- קבלת טוקן אימות של npm:
- מאתרים את הקובץ .npmrc (הוא אמור להיות בתיקייה ~/.npmrc).
- ב-.npmrc, שימו לב לטוקן בסוף השורה שנראית כך:
//registry.npmjs.org/:_authToken=**** - אפשר גם להשתמש בפקודות
npm token <list | create | revoke>כדי להציג, ליצור או לבטל טוקן אימות. פרטים נוספים זמינים במאמרי העזרה בנושא npm-token. - ניגשים לדף ההגדרות של מיפויי ערכי מפתח, כמו שמתואר בהמשך.
Edge
כדי לגשת לדף ההגדרות של Key Value Maps באמצעות ממשק המשתמש של Edge:
- נכנסים לחשבון בכתובת apigee.com/edge.
- בסרגל הניווט הימני, בוחרים באפשרות אדמין > סביבות > מיפוי ערכים של מפתחות.
Classic Edge (ענן פרטי)
כדי לגשת לדף ההגדרות של Key Value Maps באמצעות ממשק המשתמש הקלאסי של Edge:
- מתחברים אל
http://ms-ip:9000, כאשר ms-ip היא כתובת ה-IP או שם ה-DNS של צומת שרת הניהול. - בסרגל הניווט העליון, בוחרים באפשרות ממשקי API > הגדרת סביבה > מיפוי ערכי מפתח.
- לוחצים על + מיפוי של זוגות מפתח/ערך.
- בתיבת הדו-שיח New Key Value Map (מיפוי חדש של זוגות מפתח/ערך), מזינים שם ובוחרים באפשרות Encrypted (מוצפן).
- לוחצים על הוספה.
- מוסיפים את אסימון האימות שאיתרתם או יצרתם קודם כרשומה חדשה בכל אחד מה-KVMs שיצרתם.
- בקובץ app.yaml מוסיפים רשומה שמפנה אל ה-KVM ואל המפתח שמשויכים לטוקן האימות של npm. הוא אמור להיראות כך:
- מאפיין השם ברמה העליונה תואם לשם של משתנה הסביבה שייווצר.
- השם שמופיע בקטע valueRef תואם ל-KVM שיצרתם קודם.
- מאפיין key תואם למפתח שממופה לטוקן npm שהוספתם ל-KVM.
- יוצרים קובץ .npmrc באותה ספרייה שבה נמצא הקובץ package.json. הקובץ
אמור להיראות כך:
או אם אתם לא משתמשים ב-//registry.npmjs.org/:_authToken=${NPM_TOKEN}registry.npmjs.orgאתם יכולים להגדיר את ההיקף בקובץ .npmrc על ידי הוספת שורה כמו@myscope:registry=https://mycustomregistry.example.orgאפשר גם לעיין בתיעוד של npmrc. - מעלים או מעדכנים את ה-proxy של Node.js עם הקובץ .npmrc והקובץ app.yaml שכלולים בו.
- מוודאים שהפריסה של ה-proxy החדש או המעודכן מתבצעת ושהוא פועל עם מודול המאגר הפרטי הרצוי.
- אם ה-proxy לא נפרס, כדאי לבדוק את יומני הבנייה כדי לראות אם הוא נכשל בהתקנת מודול npm פרטי. אם כן:
- בכרטיסייה develop (פיתוח), מוודאים שהקובץ .npmrc קיים.
- מוודאים שהאסימון תקין (אפשר לנסות להתקין את המודול באופן מקומי כשהאסימון נמצא ב-KVM).
- אם אתם משתמשים בהיקף מותאם אישית, ודאו שהוא מוגדר.
env:
- name: NPM_TOKEN
valueRef:
name: npm_store
key: private_tokenכאשר:
ציון גרסת ה-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 היא רק דוגמה.