ข้อมูลอ้างอิงเป้าหมายที่โฮสต์ไว้

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

ขีดจำกัดของตัวแปรสภาพแวดล้อม

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

  • 1000: ความยาวสูงสุดของตัวแปรสภาพแวดล้อมเดียว
  • 100: จำนวนตัวแปรสภาพแวดล้อมสูงสุดที่ตั้งค่าได้

ดูข้อมูลเกี่ยวกับการตั้งค่าตัวแปรสภาพแวดล้อมได้ที่ไฟล์ Manifest

ตัวแปรสภาพแวดล้อมที่ตั้งค่าไว้ในรันไทม์ของแอปพลิเคชัน

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

  • APIGEE_ENVIRONMENT - สภาพแวดล้อมที่ทำให้พร็อกซีเป้าหมายที่โฮสต์ใช้งานได้
  • APIGEE_ORGANIZATION - องค์กรที่ใช้พร็อกซีเป้าหมายที่โฮสต์
  • PORT - พอร์ตที่แอปพลิเคชันเป้าหมายที่โฮสต์ต้องรับคำสั่ง

การจัดสรรทรัพยากรระบบ

อินสแตนซ์เป้าหมายที่โฮสต์แต่ละรายการจะได้รับทรัพยากรต่อไปนี้

  • หน่วยความจำ 256 MB
  • CPU 1.2 GHz

การปรับสเกล

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

ไฟล์ Manifest

Edge จะหาไฟล์ Manifest ชื่อ app.yaml ในไดเรกทอรี resources/โฮสต์ เพื่อรวบรวมข้อมูลรันไทม์เพื่อสร้างและทำให้แอปพลิเคชันที่โฮสต์ใช้งานได้ ไฟล์นี้มีข้อมูลที่จำเป็นสำหรับการสร้างและทำให้แอปพลิเคชันเป้าหมายที่โฮสต์ใช้งานได้

ไวยากรณ์ของไฟล์ Manifest

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

องค์ประกอบไฟล์ Manifest

ไฟล์ Manifest app.yaml มีองค์ประกอบต่อไปนี้

  • runtime - (ต้องระบุ) ระบุประเภทแอปพลิเคชันที่คุณทำให้ใช้งานได้ คุณต้องระบุ node
  • runtimeVersion - (ไม่บังคับ) เวอร์ชันของรันไทม์ที่แอปพลิเคชันใช้ ค่าเริ่มต้น: Node.js LTS (v10.x) โปรดดูตัวเลือกอื่นๆ ในที่เก็บอย่างเป็นทางการของ Docker สำหรับโหนด
  • command - (ไม่บังคับ) ช่วยให้คุณระบุคำสั่งที่จะเรียกใช้อื่นนอกเหนือจากคำสั่งเริ่มต้นที่ใช้ในการเริ่มต้นแอปพลิเคชัน ค่าเริ่มต้น: Node.js=npm
  • args - (ไม่บังคับ) อาร์เรย์ของอาร์กิวเมนต์บรรทัดคำสั่งเพื่อส่งไปยังแอปพลิเคชัน (ที่ระบุในไวยากรณ์อาร์เรย์ YAML มาตรฐาน) โดยปกติ จะเพิ่มลงในคำสั่งเริ่มต้น ค่าเริ่มต้นคือ start เช่น โดยค่าเริ่มต้น แอป Node.js จะได้รับคำสั่ง npm start
  • env - (ไม่บังคับ) อาร์เรย์ของตัวแปรสภาพแวดล้อม (คู่ชื่อ/ค่า) ที่จะตั้งค่าในสภาพแวดล้อมรันไทม์ของเป้าหมายที่โฮสต์ ตัวแปรเหล่านี้จะพร้อมใช้งานในแอปเป้าหมายที่โฮสต์ที่ทำให้ใช้งานได้แล้ว
    • name - ชื่อตัวแปร
    • value | valueRef - คุณมี 2 ตัวเลือก คุณสามารถตั้งค่าค่าตามตัวอักษรหรืออ้างอิงค่าที่เก็บไว้ในแมปค่าคีย์ แมปค่าคีย์ต้องมีอยู่ในสภาพแวดล้อม Edge อยู่แล้ว ดูการทํางานกับการแมปค่าคีย์
      • หากใช้ value คุณต้องระบุตัวแปร name และ value แบบลิเทอรัล เช่น
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • หากใช้ valueRef คุณจะต้องระบุ name ของ Key Value Map (KVM) ที่คุณสร้างไว้ก่อนหน้านี้ใน Edge และคีย์ ตัวอย่างเช่น
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    ตัวอย่างไฟล์ Manifest

    ส่วนนี้ประกอบด้วยไฟล์ Manifest ตัวอย่างสำหรับแอปพลิเคชัน Node.js คุณต้องมีไฟล์ Manifest เพื่อทำให้แอปเป้าหมายที่โฮสต์ใช้งานได้ และจะต้องอยู่ในไดเรกทอรี apiproxy/resources/hosted และชื่อไฟล์ต้องเป็น app.yaml

    ต่อไปนี้เป็นตัวอย่างไฟล์ app.yaml (ไฟล์ Manifest) สำหรับแอป Node.js

    ตัวอย่างที่ระบุตัวแปรสภาพแวดล้อมลิเทอรัล

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

    ตัวอย่างที่มีคําสั่งเริ่มต้น อาร์กิวเมนต์บรรทัดคำสั่ง และตัวแปรสภาพแวดล้อม

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    ตัวอย่างที่ระบุการอ้างอิงแมปค่าคีย์ (KVM) ได้แก่

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึง KVM ได้ที่ไฟล์ Manifest

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    ตัวอย่างแอปพลิเคชันเป้าหมายที่โฮสต์บน GitHub

    Apigee คือตัวอย่างพร็อกซีบน GitHub ที่มีแอปพลิเคชันเป้าหมายที่โฮสต์ซึ่งเขียนใน Node.js คุณโคลนที่เก็บนี้และทำตามคำแนะนำ README เพื่อทำให้พร็อกซีใช้งานได้

    ข้อกำหนดเบื้องต้น

    หากต้องการทำให้ตัวอย่างใช้งานได้ คุณจะต้องติดตั้งเครื่องมือ 2 รายการในระบบของคุณ ดังนี้

    • apigeetool - เครื่องมือบรรทัดคำสั่งสำหรับการทำให้พร็อกซี Edge ใช้งานได้
    • get_token - เครื่องมือบรรทัดคำสั่งสำหรับรับโทเค็นการให้สิทธิ์ที่ apigeetool กำหนด

    หากต้องการทดสอบตัวอย่างในเครื่อง คุณจะต้องติดตั้ง Node.js ด้วย

    การรับที่เก็บตัวอย่าง

    1. ในเบราว์เซอร์ ให้ไปที่ https://github.com/apigee/api-platform-samples
    2. คลิกโคลนหรือดาวน์โหลดและดึงที่เก็บไปยังระบบในเครื่องของคุณโดยใช้วิธีการที่ต้องการ
    3. cd ไปยัง <your install dir>/api-platform-sample/doc-samples/hosted-targets
    4. เมื่อดาวน์โหลดที่เก็บแล้ว คุณสามารถ cd ลงในไดเรกทอรีตัวอย่างและทำตามวิธีการ README เพื่อทำให้พร็อกซีตัวอย่างใช้งานได้ใน Edge คำสั่งทำให้ใช้งานได้แสดงอยู่ด้านล่าง เพียงแทนที่พารามิเตอร์ที่ระบุด้วยพารามิเตอร์สำหรับบัญชี Apigee ของคุณ ดังนี้
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    ตัวอย่าง: การเรียกใช้แอปตัวอย่าง

    โคลนที่เก็บตัวอย่าง

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    ทดสอบแอปพลิเคชันในเครื่อง

    คุณต้องติดตั้ง Node.js เพื่อทำการทดสอบในระบบนี้

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    ตัวอย่างเอาต์พุต

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    ทำให้พร็อกซีใช้งานได้

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    ทดสอบการทำให้ใช้งานได้

    การทำให้ใช้งานได้อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ หากคุณได้รับข้อผิดพลาดเกี่ยวกับการทำให้ใช้งานได้ ให้เรียกใช้คำสั่งทำให้ใช้งานได้อีกครั้ง

    curl http://myorg-test.apigee.net/node-hosted-hello

    ตัวอย่างเอาต์พุต

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    ปัญหาที่ทราบ

    • เวลาในการตอบสนองของเครือข่าย - ตอนนี้แอปพลิเคชัน Node.js ไม่ทำงานใน JVM ของ MP อีกต่อไป จึงมีการรับส่งเครือข่ายระหว่าง MP และการทำให้ใช้งานได้ แน่นอนว่าวิธีนี้มีค่าใช้จ่าย แต่เกณฑ์เปรียบเทียบเริ่มต้นแสดงให้เห็นว่า ราคาอยู่ในเกณฑ์ที่สมเหตุสมผล
    • การตอบสนองของ API ช้า - โครงสร้างพื้นฐานที่เรียกใช้แอปพลิเคชันจะปรับขนาดโดยอัตโนมัติตามความต้องการ ซึ่งหมายความว่าแอปพลิเคชันจะลดขนาดอินสแตนซ์ให้เหลือ 0 ได้ และหากเป็นเช่นนั้น คำขอ API ถัดไปจะใช้เวลานานกว่าคำขอ API ทั่วไปเล็กน้อย เนื่องจากโครงสร้างพื้นฐานจะเป็นผู้กำหนดอินสแตนซ์ให้ประมวลผลคำขอ
    • ข้อผิดพลาดในการทำให้ใช้งานได้ - หากคุณได้รับข้อผิดพลาดในการทำให้ใช้งานได้เมื่อทำให้พร็อกซีเป้าหมายที่โฮสต์ใช้งานได้ ให้ลองทำให้พร็อกซีใช้งานได้อีกครั้ง ในบางกรณี การทำให้ใช้งานได้อาจหมดเวลาและหากคุณทำให้ใช้งานได้อีกครั้ง ปัญหาจะได้รับการแก้ไขเอง