งานเป้าหมายที่โฮสต์ไว้

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

ยกเลิกการทำให้พร็อกซี Hosted Targets ใช้งานได้

เมื่อคุณยกเลิกการทำให้พร็อกซี Edge ที่มีแอปพลิเคชัน Hosted Targets ใช้งานได้ ระบบจะยกเลิกการทำให้แอป Hosted Targets ที่เกี่ยวข้อง ใช้งานไม่ได้ แต่จะไม่ลบรูปภาพแอปพลิเคชันพื้นฐาน หากคุณ ทำให้พร็อกซีใช้งานได้อีกครั้ง ระบบก็จะทำให้แอป Hosted Targets ใช้งานได้อีกครั้ง

การลบพร็อกซี Hosted Targets

หลังจากลบพร็อกซี Hosted Targets แล้ว อินสแตนซ์รันไทม์พื้นฐานจะหยุดทำงาน ภายในระยะเวลาหนึ่ง อย่างไรก็ตาม โค้ดของแอปพลิเคชันจะยังคงอยู่

การเข้าถึงไฟล์บันทึก

ไฟล์บันทึกมีประโยชน์สำหรับการแก้ไขข้อบกพร่องและการแก้ปัญหา คุณดูไฟล์บันทึกได้ 2 ประเภทสำหรับ การทำให้ Hosted Targets ใช้งานได้

  • บันทึกการสร้าง - แสดงเอาต์พุตที่เกี่ยวข้องกับการทำให้แอป Hosted Targets ใช้งานได้และการสร้างแอป
  • บันทึกรันไทม์ - แสดงเอาต์พุตที่เกี่ยวข้องกับแอป Hosted Targets ที่ทำงานอยู่ บันทึกรันไทม์ มีขอบเขตเป็นสภาพแวดล้อมและแสดงข้อมูลบันทึกสำหรับการแก้ไขพร็อกซีที่ทำให้ใช้งานได้ในปัจจุบัน

การเข้าถึงบันทึกจาก UI ของ Edge

  1. ไปที่: apigee.com/edge
  2. ป้อนข้อมูลเข้าสู่ระบบ แล้วคลิกลงชื่อเข้าใช้
  3. เลือกพัฒนา > พร็อกซี API ในเมนูการนำทางด้านข้าง
  4. เลือกพร็อกซีที่ต้องการดูบันทึก
  5. คลิกแท็บพัฒนา
  6. หากต้องการดูบันทึกการสร้าง ให้คลิกบันทึกการสร้าง
  7. หากต้องการดูบันทึกรันไทม์ ให้คลิกบันทึกรันไทม์

การเข้าถึงบันทึกด้วย API

นอกจากนี้ คุณยังใช้ Edge API เพื่อดึงบันทึก Hosted Targets ได้ด้วย ดูรายละเอียดได้ที่ หัวข้อรับบันทึก Node.js ที่แคชไว้

การใช้ที่เก็บ npm ส่วนตัว

ส่วนนี้จะอธิบายวิธีทำให้พร็อกซี Node.js ใช้งานได้กับ Hosted Targets ในกรณีที่คุณ ใช้ ที่เก็บ NPM ส่วนตัว ใน สภาพแวดล้อมในการพัฒนาซอฟต์แวร์

สิ่งที่จำเป็นต้องทราบเกี่ยวกับการใช้ที่เก็บส่วนตัว

เมื่อคุณทำให้แอป Node.js ใช้งานได้กับ Edge ระบบจะนำเข้าทรัพยากร Dependency ทั้งหมดของโปรเจ็กต์โดยอัตโนมัติ ซึ่งเป็นส่วนหนึ่งของกระบวนการทำให้ใช้งานได้ โดยพื้นฐานแล้ว Hosted Targets จะเรียกใช้ npm install ในโค้ดของคุณเมื่อทำให้ใช้งานได้ อย่างไรก็ตาม หากคุณใช้ที่เก็บ NPM ส่วนตัวในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ระบบจะไม่สามารถแก้ปัญหาทรัพยากร Dependency ส่วนตัวในระบบคลาวด์ได้ ใน กรณีนี้ วิธีแก้ปัญหาคือใช้ตัวเลือก --bundled-dependencies เมื่อใช้ยูทิลิตีการทำให้ใช้งานได้ apigeetool ดูเพิ่มเติมที่หัวข้อ ทำให้ Node.js จากระบบของคุณใช้งานได้กับ Edge

เมื่อคุณใช้แฟล็ก --bundled-dependencies ใน apigeetool ระบบจะอัปโหลดแอป Node.js ไปยัง Hosted Targets และบีบอัดไฟล์ในเครื่อง/ส่วนตัวที่แสดงอยู่ในอาร์เรย์ bundledDependencies ใน package.json แล้วอัปโหลดพร้อมกับบันเดิล

แม้จะไม่ใช่สถานการณ์ที่พบบ่อย แต่โปรดทราบว่าหากคุณทำมิเรอร์ที่เก็บ NPM สาธารณะภายใน การทำให้ใช้งานได้จะล้มเหลว หากบันเดิลการทำให้ใช้งานได้มีไฟล์ .npmrc หรือ package-lock.json ที่ชี้ ไปยังมิเรอร์ส่วนตัว ในกรณีนี้ โปรดละเว้น .npmrc หรือ package-lock.json จากบันเดิลพร็อกซีที่คุณต้องการทำให้ใช้งานได้

การทำให้ใช้งานได้ด้วยที่เก็บ 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

    วิธีเข้าถึงหน้าการกำหนดค่าแมปค่าคีย์โดยใช้ UI ของ Edge

    1. ลงชื่อเข้าใช้ apigee.com/edge
    2. เลือกผู้ดูแลระบบ > สภาพแวดล้อม > แมปค่าคีย์ ในแถบนำทางด้านซ้าย

    Edge แบบคลาสสิก (Private Cloud)

    วิธีเข้าถึงหน้าการกำหนดค่าแมปค่าคีย์โดยใช้ UI ของ Edge แบบคลาสสิก

    1. ลงชื่อเข้าใช้ http://ms-ip:9000 โดยที่ ms-ip คือที่อยู่ IP หรือชื่อ DNS ของโหนด Management Server
    2. เลือกAPI > การกำหนดค่าสภาพแวดล้อม > แมปค่าคีย์ ในแถบนำทางด้านบน
  4. คลิก + แมปค่าคีย์
  5. ในกล่องโต้ตอบแมปค่าคีย์ใหม่ ให้ป้อนชื่อแล้วเลือกเข้ารหัส
  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. อัปโหลดหรืออัปเดตพร็อกซี Node.js โดยรวมไฟล์ .npmrc และไฟล์ app.yaml
  12. ตรวจสอบว่าพร็อกซีใหม่หรือพร็อกซีที่อัปเดตทำให้ใช้งานได้และทำงานร่วมกับโมดูลที่เก็บส่วนตัวที่ต้องการ
  13. หากพร็อกซีทำให้ใช้งานไม่ได้ ให้ตรวจสอบบันทึกการสร้างเพื่อดูว่าการติดตั้งโมดูล npm ส่วนตัวล้มเหลวหรือไม่ หากเป็นเช่นนั้น ให้ทำดังนี้
    1. ในแท็บพัฒนา ให้ตรวจสอบว่ามีไฟล์ .npmrc
    2. ตรวจสอบว่าโทเค็นใช้ได้ (ลองติดตั้งโมดูลในเครื่องโดยมีโทเค็นอยู่ใน ใน KVM)
    3. หากใช้ขอบเขตที่กำหนดเอง ให้ตรวจสอบว่าได้ตั้งค่าขอบเขตนั้นแล้ว

การระบุเวอร์ชัน NPM สำหรับทรัพยากร Dependency ที่รวมไว้

โดยค่าเริ่มต้น ระบบจะใช้ NPM v4 เพื่อติดตั้งทรัพยากร Dependency ที่รวมไว้ในสภาพแวดล้อม Hosted Targets อย่างไรก็ตาม หากต้องการใช้ NPM เวอร์ชันอื่น คุณสามารถระบุเวอร์ชันนั้นในตัวแปรสภาพแวดล้อม NPM_VERSION คุณตั้งค่าตัวแปรนี้ได้ในไฟล์ Manifest ของแอปพลิเคชัน ดูรายละเอียดได้ที่หัวข้อองค์ประกอบไฟล์ Manifest

หากคุณใช้ทรัพยากร Dependency ที่รวมไว้และไม่ได้ระบุ NPM_VERSION Hosted Targets จะใช้ NPM v4 โดยค่าเริ่มต้น หากไม่ได้ใช้ทรัพยากร Dependency ที่รวมไว้ ระบบจะใช้ NPM เวอร์ชันที่รวมอยู่ในรันไทม์ Node.js ที่คุณระบุ

ตัวอย่างทรัพยากร Dependency ที่รวมไว้

ดูตัวอย่างที่แสดงฟีเจอร์ทรัพยากร Dependency ที่รวมไว้กับ Hosted Targets ได้ที่ หัวข้อวิธีสร้างแอปพลิเคชัน Node.js ด้วย Hosted Functions โดยใช้โมดูลที่กำหนดเอง

เพิ่มปลายทางการตรวจสอบประสิทธิภาพการทำงาน

คุณมีตัวเลือกในการใช้ปลายทางการตรวจสอบประสิทธิภาพการทำงานสำหรับแอปพลิเคชัน Node.js Apigee จะใช้ปลายทางนี้เมื่อ แอปพลิเคชัน Node.js เริ่มทำงานเพื่อตรวจสอบว่าแอปพลิเคชันทำงานอยู่ในคอนเทนเนอร์

โดยค่าเริ่มต้น ปลายทางที่ Apigee คาดหวังคือ /health คุณสามารถเปลี่ยนปลายทางเริ่มต้น ได้โดยระบุปลายทางในตัวแปรสภาพแวดล้อมที่ชื่อ HOSTED_TARGET_HEALTH_CHECK_PATH คุณตั้งค่าตัวแปรนี้ได้ในไฟล์ Manifest ของแอปพลิเคชัน ดูรายละเอียดได้ที่หัวข้อองค์ประกอบไฟล์ Manifest

คุณไม่จำเป็นต้องใช้ปลายทางการตรวจสอบประสิทธิภาพการทำงาน อย่างไรก็ตาม หากใช้ปลายทางการตรวจสอบประสิทธิภาพการทำงาน ปลายทาง โปรดทราบสิ่งต่อไปนี้

  • หากแอปพลิเคชันออกเมื่อ Apigee เข้าถึงปลายทาง แอปพลิเคชันจะไม่เริ่มทำงานตามที่คาดไว้
  • ปลายทางจะแสดงรหัสสถานะ HTTP 404 Not Found ก็ได้ ระบบจะใช้ /health หรือ HOSTED_TARGET_HEALTH_CHECK_PATH เพื่อตรวจสอบว่าแอปพลิเคชันทำงานอยู่หรือไม่เท่านั้น ระบบจะละเว้นการตอบสนองจริง

เปลี่ยนตำแหน่งแคช NPM

Node.js เวอร์ชันใหม่กว่าจะใช้ NPM เวอร์ชันที่ใช้ /root/.npm สำหรับแคช NPM ตำแหน่งนี้ทำให้เกิดปัญหาสำหรับ Hosted Targets เนื่องจากตำแหน่งไดเรกทอรีดังกล่าวเป็นแบบอ่านอย่างเดียว เนื่องจากรันไทม์ Hosted Target ใช้ระบบไฟล์ tmpfs ซึ่งมีเพียง /tmp เท่านั้นที่เขียนได้ หากต้องการหลีกเลี่ยงปัญหานี้ คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม npm_config_cache ในไฟล์ app.yaml (ไฟล์ Manifest) ของแอปพลิเคชันเป็นไดเรกทอรีภายใน /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 ซึ่งเขียนไม่ได้และทำให้ Hosted Target เริ่มทำงานไม่สำเร็จ แม้ว่างานก่อนหน้านี้จะช่วยแก้ปัญหานี้ได้ แต่คุณก็สามารถเลือกที่จะเรียกใช้แอปพลิเคชันโดยไม่ใช้ NPM ได้ หากต้องการทำเช่นนี้ คุณสามารถใช้ค่า command และ args ในไฟล์ app.yaml (ไฟล์ Manifest) ของแอปพลิเคชันเพื่อเรียกใช้ Hosted Target โดยตรงโดยใช้ 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 เป็นเพียงตัวอย่าง