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

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

การยกเลิกการทำให้พร็อกซีเป้าหมายที่โฮสต์ใช้งานได้

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

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

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

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

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

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

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

  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

เมื่อใช้แฟล็ก --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

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

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

    Classic Edge (Private Cloud)

    วิธีเข้าถึงหน้าการกำหนดค่าการแมปค่าคีย์โดยใช้ UI ของ Classic 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 ระดับบนสุดสอดคล้องกับชื่อของตัวแปรสภาพแวดล้อมที่จะสร้างขึ้น
    • name ในส่วน valueRef สอดคล้องกับ KVM ที่สร้างไว้ก่อนหน้านี้
    • แอตทริบิวต์คีย์จะสอดคล้องกับคีย์ที่แมปกับโทเค็น 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 ที่ระบุ

ตัวอย่างการขึ้นต่อกันที่จัดกลุ่มไว้

ลองดูตัวอย่างที่แสดงฟีเจอร์ทรัพยากร 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 ตำแหน่งนี้ทำให้เกิดปัญหาสำหรับเป้าหมายที่โฮสต์เนื่องจากตำแหน่งไดเรกทอรีดังกล่าวเป็นแบบอ่านอย่างเดียวเนื่องจากรันไทม์เป้าหมายที่โฮสต์ใช้ระบบไฟล์ 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 เป็นเพียงตัวอย่างเท่านั้น