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

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

การยกเลิกการทำให้พร็อกซีเป้าหมายที่ฝากบริการใช้งานได้

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

การลบพร็อกซีเป้าหมายที่โฮสต์

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

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

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

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

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

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

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

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

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

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

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

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

เมื่อคุณใช้ Flag --bundled-dependencies ใน apigeetool ระบบจะดำเนินการต่อไปนี้ ระบบจะอัปโหลดแอป Node.js ไปยังเป้าหมายที่โฮสต์และไฟล์ในเครื่อง/ส่วนตัวทั้งหมดที่อยู่ในรายการ ในอาร์เรย์ 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

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

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

    1. ลงชื่อเข้าใช้ http://ms-ip:9000 โดยที่ ms-ip คือ ที่อยู่ IP หรือชื่อ DNS ของโหนดเซิร์ฟเวอร์การจัดการ
    2. เลือก API > การกำหนดค่าสภาพแวดล้อม > Key Value Maps ในแถบนำทางด้านบน
  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. ตรวจสอบว่าโทเค็นของคุณถูกต้อง (ลองติดตั้งโมดูลในเครื่องโดยมีโทเค็นแสดงอยู่ ในหน่วยกิโลวัตต์-ชั่วโมง)
    3. หากใช้ขอบเขตที่กำหนดเอง โปรดตรวจสอบว่าได้กำหนดขอบเขตดังกล่าวแล้ว

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

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

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

ตัวอย่างการ Dependency แบบกลุ่ม

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

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

คุณมีตัวเลือกในการใช้งานปลายทางการตรวจสอบประสิทธิภาพการทำงานสำหรับแอปพลิเคชัน 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 Target ใช้ระบบไฟล์ tmpfs ซึ่งเขียนได้เฉพาะ /tmp คุณตั้งค่าตัวแปรสภาพแวดล้อม npm_config_cache เพื่อหลีกเลี่ยงปัญหานี้ได้ สำหรับแอปพลิเคชันของคุณ app.yamlfile (ไฟล์ 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

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