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

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

במדריכים הבאים מוסבר איך לפרוס אפליקציות Node.js ב-Edge באמצעות Hosted Targets, סביבת זמן ריצה מקורית של Node.js שמתארחת ב-Apigee.

במדריכים מפורטים המשימות הבאות:

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

פריסת אפליקציית Node.js ביעדים מתארחים באמצעות ממשק המשתמש של Edge

במדריך הזה תפרוש אפליקציית Node.js פשוטה למטרות מתארחות באמצעות ממשק המשתמש של Edge. כשתסיימו את המדריך, תבינו את המבנה הבסיסי ואת התוכן של שרת proxy של Hosted Targets ואיך לגשת לקובצי יומן לפריסה ולבנייה.

כניסה

  1. עוברים אל: apigee.com/edge
  2. כדי להיכנס, מזינים את פרטי הכניסה ל-Apigee.

יצירת שרת proxy חדש

  1. בתפריט הניווט הצדדי, בוחרים באפשרות פיתוח > שרתי proxy ל-API.
  2. לוחצים על + שרת Proxy.
  3. בדף Create Proxy (יצירת שרת Proxy), בוחרים באפשרות Hosted Target (יעד מארח).
  4. לוחצים על הבא.
  5. בשדה 'שם שרת Proxy', מזינים hello-hosted-targets.
  6. מוודאים שהאפשרות דוגמה 'שלום עולם' נבחרה.
  7. לוחצים על הבא.
  8. בדף 'אבטחה', בוחרים באפשרות מעבר (ללא) בשדה 'הרשאה'.
  9. לוחצים על הבא.
  10. לוחצים על הבא.
  11. בדף ה-Build, מוודאים שסביבת הבדיקה נבחרה. שימו לב שסוג ה-Proxy הוא Hosted Targets.
  12. לוחצים על יצירה ופריסה. הפריסה של שרת ה-proxy עשויה להימשך כמה רגעים.
  13. אחרי ששרת ה-Proxy נפרס בהצלחה, לוחצים על View hello- host-targets proxy בחלק התחתון של הדף.
  14. מפעילים את שרת ה-proxy של ה-API. הדרך הקלה ביותר לעשות זאת היא להיכנס לכרטיסייה Trace, להתחיל פעילות מעקב וללחוץ על שליחה. התשובה הבאה אמורה להתקבל בסטטוס 200:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

בודקים את שרת ה-proxy

  1. בממשק המשתמש של Edge, לוחצים על הכרטיסייה פיתוח.
  2. בתפריט הניווט, בוחרים באפשרות default (ברירת מחדל) בקטע Target Endpoints (נקודות קצה ליעד).
  3. בעורך הקוד, שימו לב שיש רכיב צאצא ריק מסוג <HostedTarget/> מתחת לרכיב <TargetEndpoint>. התג הריק הזה הוא שדה חובה. הוא מורה ל-Edge שהיעד של שרת ה-proxy הוא אפליקציה שנפרסת בסביבת היעדים המתארחים.

  4. ב-Nvigator, לשים לב לתוכן שמופיע בקטע סקריפטים. קובצי האפליקציה של Node.js מופיעים בתווית מתארח.

  5. בממשק המשתמש של Edge, בוחנים את הקבצים שמופיעים בקטע מתארח בסקריפטים:
    • קובץ app.yaml מכיל את פרטי התצורה. לדוגמה, אפשר להוסיף משתני סביבה שיהיו זמינים לאפליקציית Node.js בזמן הריצה. אין צורך לשנות את הקובץ בדוגמה הזו.
    • הקובץ index.js הוא הקובץ הראשי של אפליקציית Node.js.
    • אם לאפליקציה יש יחסי תלות של מודולים, צריך לציין אותם ב-package.json.

צפייה בקובצי יומן

קבצים של יומני אפליקציות יכולים לשמש לניפוי באגים בבעיות שמתרחשות בשלב ה-build וגם בזמן ריצה.

  1. בממשק המשתמש של Edge, לוחצים על הכרטיסייה פיתוח.
  2. כדי להציג את יומן ה-build, לוחצים על Build Logs.
  3. כדי להציג את יומן הפריסה, לוחצים על יומני זמן ריצה.

    למידע נוסף בנושא גישה לקובצי יומן

סיכום

  • פרסתם אפליקציית Node.js פשוטה לסביבת יעדים מתארחים ובדקתם אותה בממשק המשתמש של Edge.
  • נודע לך ששרת proxy של יעדים מתארחים מחייב תג ריק מיוחד בנקודת הקצה (endpoint) של היעד שנקרא <HostedTarget/>.
  • גילית ש-Edge טוענת את יחסי התלות של המודול באופן אוטומטי, ושיחסי התלות חייבים להופיע בקובץ package.json.
  • למדתם גם איך לבדוק קובצי יומן של build ומשך ריצה.

פריסה של Node.js מהמערכת ל-Edge

בקטע הזה מוסבר איך לפרוס אפליקציית Node.js עצמאית מהמערכת המקומית למטרות מתארחות באמצעות apigeetool. כלי השירות apigeetool מצרף את אפליקציית Node.js לשרת proxy חדש של יעדים מתארחים, ופורסת אותו ב-Edge.

התקנת apigeetool

השימוש ב-apigeetool הוא הדרך המומלצת למפתחים לפרוס קוד של שרת proxy ב-Edge. כדי להתקין את apigeetool, מריצים את פקודת ה-NPM הבאה:

npm install -g apigeetool

יצירת האפליקציה Node.js

כדי להקל עליכם, תקבלו את הקוד לאפליקציית Node.js פשוטה.

  1. יוצרים ספרייה לאפליקציית Node.js. קוראים לספרייה node-host-express.
  2. cd לספרייה החדשה.
  3. יוצרים קובץ בשם index.js ומעתיקים אליו את הקוד.
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
    
  5. יוצרים קובץ בשם package.json ומעתיקים אליו את הקוד הזה. שימו לב שהמודול האקספרס מופיע כתלות.
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
    
  7. יוצרים קובץ בשם app.yaml, ומעתיקים אליו את הקוד הבא:
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
    
  9. ודאו שהספרייה נראית כך:
    ls
    app.yaml index.js package.json
    

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

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

  • חובה להשתמש בקובץ המניפסט app.yaml, והוא חייב להימצא בספריית השורש של האפליקציה. למידע נוסף על הקובץ הזה, יש לעיין בקובץ המניפסט.
  • נדרש קובץ package.json. צריך לציין בה את כל יחסי התלות הנדרשים לאפליקציה.
  • התיקייה node_modules לא נדרשת. כשאפליקציית Node.js נפרסת, מערכת Edge מפעילה התקנה של npm. הוא מקבל את יחסי התלות מ-package.json. הפעם היחידה שבה צריך לספק node_modules באופן מפורש היא אם יש לכם מודולים מותאמים אישית שאינם זמינים דרך npm.

פריסת שרת ה-proxy

  1. בטרמינל, לוחצים על cd לספריית הבסיס של אפליקציית Node.js.
  2. מפעילים את apigeetool באמצעות הפקודה deployhosttarget:
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    כאשר -n הוא השם שרוצים לתת לשרת ה-proxy החדש. היא חייבת להיות ייחודית בתוך הארגון. התווים שמותר להשתמש בהם בשם מוגבלים: a-z0-9._\-$%

    לדוגמה:

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    מידע נוסף על השימוש ב-apigeetool זמין בכתובת https://github.com/apigee/apigeetool-node.

בדיקת שרת ה-proxy

אפשר לבדוק את שרת ה-Proxy באמצעות פקודת cURL באמצעות לקוח REST כמו Postman, או בממשק המשתמש של Edge בכלי המעקב. הנה דוגמה לפקודה cURL.

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

קבלת יומני ה-Build

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

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

לדוגמה:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

קבלת יומני זמן הריצה

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

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

לדוגמה:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

הצגת שרת ה-proxy בממשק המשתמש של Edge

אחרי שהפריסה בוצעה בהצלחה, אפשר לראות ולערוך את שרת ה-proxy בחלק ממשקי proxy של API בממשק המשתמש של Edge.

העברת שרת proxy קיים של Node.js לשרת proxy של יעדים מתארחים

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

שלבי ההעברה משמרים את מבנה שרת ה-API של ה-API, המדיניות, הזרימה ואלמנטים אחרים של הגדרה. אפשר לבצע את ההעברה ב-ארבעה שלבים, כפי שמתואר בהמשך, ואז לפרוס את שרת ה-proxy שהועבר באמצעות apigeetool.

שלב 1: משנים את המבנה של קובץ ה-proxy

כדי לשנות את מבנה הקובץ, שרת ה-proxy של ה-API חייב להיות במערכת הקבצים המקומית. אם שרת ה-proxy נפרס ב-Edge, צריך להוריד אותו לפני שממשיכים. בתצורה המסורתית, ו "חבילה" של שרת proxy של Edge שכוללת את קוד Node.js פועלת לפי מבנה הקבצים הזה. קוד האפליקציה Node.js נמצא בספרייה resources/node:

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


ליעדים מתארחים, צריך למקם את ספריית הבסיס של אפליקציית Node.js בספרייה שנקראת resources/hosted. כל מה שצריך לעשות הוא ליצור ספרייה חדשה בשם resources/host ומעבירים אליה את התוכן של resources/node. לאחר מכן אפשר למחוק את הספרייה resources/node.

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

שלב 2: הוספת קובץ המניפסט

יוצרים קובץ מניפסט בשם app.yaml ומציבים אותו בספרייה apiproxy/resources/hosted.

הקובץ הבא הוא app.yaml לדוגמה. המדיניות מציינת שזמן הריצה הוא Node.js (חובה). הוא גם יוצר משתנה סביבה בסביבת הביצוע (משתנה שאפשר לגשת אליו באמצעות אפליקציית Node.js). משתנה הסביבה הוא אופציונלי ומוצג רק כאן כדוגמה. פרטים נוספים ודוגמאות זמינים במאמר קובץ המניפסט.

runtime: node
  env:
    - name: NODE_ENV
      value: production


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

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

שלב 3: מוודאים שיש לכם קובץ package.json

בשרתי ה-proxy המסורתיים של Edge Node.js, הפרמטר package.json היה אופציונלי. עם זאת, עבור יעדים מתארחים, צריך לספק מזהה כזה בספרייה apiproxy/resources/hosted. חשוב לציין בקובץ הזה את כל יחסי התלות הנדרשים לאפליקציה.

שלב 4: משנים את נקודת הקצה (endpoint) של היעד של שרת ה-Proxy

שרת proxy מסורתי של Node.js מחייב נוכחות של תג בשם <ScriptTarget> בקובץ נקודת הקצה של היעד (בדרך כלל /apiproxy/targets/default.xml). עבור יעדים מתארחים, עליך להוסיף תג ריק בשם <HostedTarget/>. אם יש תג ScriptTarget בקובץ, אפשר פשוט להסיר אותו. לדוגמה:

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

פריסת שרת ה-proxy

עכשיו אפשר לפרוס את שרת ה-proxy באמצעות הפקודה apigeetool deployproxy.

  1. cd לספריית הבסיס של שרת ה-proxy: /apiproxy
  2. משתמשים בפקודה הזו כדי לפרוס את שרת ה-proxy:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .
    .

    לדוגמה:

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

למידע נוסף על השימוש ב-apigeetool אפשר לעיין כאן: https://github.com/apigee/apigeetool-node/blob/master/README.md.

בדיקת שרת ה-proxy

אפשר לבדוק את שרת ה-Proxy באמצעות פקודת cURL באמצעות לקוח REST כמו Postman, או בממשק המשתמש של Edge בכלי המעקב. הנה דוגמה לפקודה cURL:

curl http://myorg-test.apigee.net/hello-world
Hello,World!