Referensi Target yang Dihosting

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Batas variabel lingkungan

Target yang Dihosting membatasi ukuran dan jumlah variabel lingkungan yang dapat Anda tetapkan di lingkungan runtime Target yang Dihosting.

  • 1000: Panjang maksimum satu variabel lingkungan.
  • 100: Jumlah maksimum variabel lingkungan yang dapat Anda tetapkan.

Untuk mengetahui informasi tentang cara menyetel variabel lingkungan, lihat File manifes.

Variabel lingkungan yang ditetapkan di runtime aplikasi

Saat Anda men-deploy aplikasi Target yang Dihosting, variabel lingkungan berikut ditetapkan dan tersedia untuk aplikasi Anda saat runtime:

  • APIGEE_ENVIRONMENT - Lingkungan tempat proxy Target yang Dihosting di-deploy.
  • APIGEE_ORGANIZATION - Organisasi tempat proxy Target yang Dihosting di-deploy.
  • PORT - Port tempat aplikasi Target yang Dihosting harus memproses.

Alokasi resource sistem

Setiap instance Target yang Dihosting menerima resource berikut:

  • Memori 256 MB
  • CPU 1,2 GHz

Penskalaan

Bagian ini menjelaskan cara menskalakan aplikasi Target yang Dihosting, bergantung pada jenis akun Edge yang Anda miliki.
  • Versi Uji Coba Apigee Edge dibatasi hingga satu instance Target yang Dihosting per proxy.
  • Akun Apigee Edge berbayar menerima penskalaan otomatis berdasarkan rasio permintaan, latensi respons, dan metrik aplikasi lainnya per proxy.
  • Aplikasi Hosted Targets yang di-deploy ke Apigee Edge versi berbayar dan uji coba akan diskalakan ke nol pada periode tidak aktif. Dalam hal ini, Anda mungkin melihat waktu respons yang lebih lambat untuk jangka waktu singkat. Lihat juga Masalah umum

File manifes

Untuk mengumpulkan informasi runtime untuk membangun dan men-deploy aplikasi yang dihosting, Edge mencari file manifes bernama app.yaml di direktori resources/hosted. File ini berisi informasi yang diperlukan untuk membangun dan men-deploy aplikasi Hosted Targets.

Sintaksis file manifes

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

Elemen file manifes

File manifes app.yaml mencakup elemen berikut:

  • runtime - (Wajib) Menentukan jenis aplikasi yang Anda deploy. Anda harus menentukan node.
  • runtimeVersion - (Opsional) Versi runtime yang digunakan aplikasi Anda. Default: Node.js LTS (v10.x). Lihat repositori resmi Docker untuk Node untuk opsi lainnya.
  • command - (Opsional) Memungkinkan Anda menentukan perintah untuk menjalankan selain perintah default yang digunakan untuk memulai aplikasi Anda. Default: Node.js=npm
  • args - (Opsional) Array argumen command line yang akan diteruskan ke aplikasi (ditentukan dalam sintaksis array YAML standar). Biasanya, perintah ini ditambahkan ke perintah default. Defaultnya adalah start. Misalnya, secara default, aplikasi Node.js akan menerima perintah npm start.
  • env - (Opsional) Array variabel lingkungan (pasangan nama/nilai) untuk ditetapkan di lingkungan runtime Target yang Dihosting. Variabel ini tersedia untuk aplikasi Hosted Target yang di-deploy.
    • name - Nama variabel.
    • value | valueRef - Anda memiliki dua opsi. Anda dapat menetapkan nilai literal atau merujuk ke nilai yang disimpan dalam Peta Nilai Kunci. Peta Nilai Kunci harus sudah ada di lingkungan Edge Anda. Lihat Bekerja dengan Peta Nilai Kunci
      • Jika Anda menggunakan value, Anda harus menentukan variabel name dan literal value. Contoh:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • Jika Anda menggunakan valueRef, maka Anda harus memberikan name dari Key Value Map (KVM) yang sebelumnya Anda buat di Edge dan key. Contoh:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    Contoh file manifes

    Bagian ini berisi contoh file manifes untuk aplikasi Node.js. File manifes diperlukan untuk men-deploy aplikasi Target yang Dihosting, dan harus berada di direktori apiproxy/resources/hosted, dan nama filenya harus app.yaml.

    Berikut adalah contoh file app.yaml (manifes) untuk aplikasi Node.js.

    Contoh yang menentukan variabel lingkungan literal:

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

    Contoh dengan perintah mulai, argumen command line, dan variabel lingkungan.

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


    Contoh yang menentukan referensi Peta Nilai Kunci (KVM):

    Untuk mengetahui informasi selengkapnya tentang akses KVM, lihat File Manifest.

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

    Contoh aplikasi Hosted Targets di GitHub

    Apigee menyediakan proxy contoh di GitHub dengan aplikasi Target yang Dihosting yang ditulis di Node.js. Anda dapat meng-clone repo ini dan mengikuti petunjuk README untuk men-deploy salah satu proxy.

    Prasyarat

    Untuk men-deploy sampel, Anda harus menginstal dua alat di sistem Anda:

    • apigeetool -- Alat command line untuk men-deploy proxy Edge.
    • get_token - Alat command line untuk mendapatkan token otorisasi yang diperlukan oleh apigeetool.

    Jika ingin menguji contoh secara lokal, Anda juga harus menginstal Node.js.

    Mendapatkan repo contoh

    1. Di browser, buka https://github.com/apigee/api-platform-samples.
    2. Klik Clone or download dan tarik repo ke sistem lokal Anda, menggunakan metode pilihan Anda.
    3. cd ke <your install dir>/api-platform-samples/doc-samples/hosted-targets
    4. Setelah repo didownload, Anda dapat melakukan cd ke salah satu direktori contoh dan mengikuti petunjuk README untuk men-deploy proxy contoh ke Edge. Perintah deployment ditampilkan di bawah. Cukup ganti parameter yang ditunjukkan dengan parameter untuk akun Apigee Anda:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    Contoh: Mengeksekusi aplikasi contoh

    Clone repositori contoh

    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

    Menguji aplikasi secara lokal

    Anda harus menginstal Node.js untuk melakukan pengujian lokal ini.

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

    Contoh output:

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

    Men-deploy proxy

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

    Melakukan pengujian deployment

    Proses deployment dapat memerlukan waktu beberapa menit. Jika Anda mendapatkan error deployment, jalankan kembali perintah deployment.

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

    Contoh output:

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

    Masalah Umum

    • Latensi Jaringan - Sekarang aplikasi Node.js tidak lagi berjalan di JVM MP, sehingga ada hop jaringan antara MP dan deployment. Tentu saja ada biaya yang harus dikeluarkan, tetapi tolok ukur awal menunjukkan bahwa biaya tersebut masih dalam jumlah yang wajar
    • Respons API Lambat - Infrastruktur yang menjalankan aplikasi Anda akan otomatis diskalakan berdasarkan kebutuhan. Artinya, aplikasi Anda dapat benar-benar diperkecil skalanya ke nol instance dan jika demikian, permintaan API berikutnya akan memerlukan waktu sedikit lebih lama daripada permintaan API biasa karena infrastruktur sedang menjalankan instance untuk memproses permintaan.
    • Error deployment - Jika Anda menerima error deployment saat men-deploy proxy Target yang Dihosting, coba deploy ulang proxy. Dalam beberapa kasus, deployment dapat mengalami waktu tunggu habis dan jika Anda men-deploy ulang, masalah akan teratasi dengan sendirinya.