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

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

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

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

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

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

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

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

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

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

  1. ไปที่ apigee.com/edge
  2. ป้อนข้อมูลเข้าสู่ระบบ แล้วคลิกลงชื่อเข้าใช้
  3. เลือกพัฒนา > พร็อกซี 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 ไปยังเป้าหมายที่โฮสต์ รวมถึงไฟล์ในเครื่อง/ไฟล์ส่วนตัวที่อยู่ในอาร์เรย์ Dependencies ใน 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 ของโหนดเซิร์ฟเวอร์การจัดการ
    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 ในส่วน 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 แบบกลุ่มในสภาพแวดล้อมเป้าหมายที่โฮสต์ไว้ อย่างไรก็ตาม หากต้องการใช้ NPM เวอร์ชันอื่น คุณสามารถระบุไว้ในตัวแปรสภาพแวดล้อม NPM_VERSION คุณสามารถตั้งค่าตัวแปรนี้ได้ในไฟล์ Manifest ของแอปพลิเคชัน ดูรายละเอียดได้ที่องค์ประกอบไฟล์ Manifest

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

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

ดูตัวอย่างที่แสดงฟีเจอร์การพึ่งพาแบบรวมกลุ่มกับเป้าหมายที่โฮสต์ได้ที่วิธีสร้างแอปพลิเคชัน 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.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

โดยค่าเริ่มต้น เป้าหมายที่โฮสต์จะใช้ 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 เป็นเพียงตัวอย่างเดียวเท่านั้น