Tugas Target yang Dihosting

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

Membatalkan deployment proxy Target yang Dihosting

Saat Anda membatalkan deployment proxy Edge yang menyertakan aplikasi Hosted Targets, aplikasi Hosted Targets terkait akan dibatalkan deployment-nya, tetapi image aplikasi yang mendasarinya tidak akan dihapus. Jika Anda men-deploy ulang proxy, aplikasi Hosted Targets akan di-deploy ulang.

Menghapus proxy Hosted Targets

Setelah Anda menghapus proxy Target yang Dihosting, instance runtime yang mendasarinya akan berhenti berjalan dalam jangka waktu tertentu. Namun, kode aplikasi akan tetap ada.

Mengakses file log

File log berguna untuk proses debug dan pemecahan masalah. Anda dapat melihat dua jenis file log untuk deployment Target yang Dihosting:

  • Build log - Menampilkan output yang terkait dengan men-deploy dan mem-build aplikasi Hosted Targets.
  • Log runtime - Menampilkan output yang terkait dengan aplikasi Hosted Targets yang sedang berjalan. Log runtime dibatasi ke lingkungan dan menampilkan informasi log untuk revisi proxy yang saat ini di-deploy.

Mengakses log dari UI Edge

  1. Buka: apigee.com/edge
  2. Masukkan kredensial login Anda, lalu klik Login.
  3. Pilih Develop > API Proxies di menu navigasi samping.
  4. Pilih proxy yang lognya ingin Anda lihat.
  5. Klik tab Mengembangkan.
  6. Untuk melihat log build, klik Build Logs.
  7. Untuk melihat log runtime, klik Runtime Logs.

Mengakses log dengan API

Anda juga dapat menggunakan Edge API untuk mengambil log Target yang Dihosting. Untuk mengetahui detailnya, lihat Mendapatkan Log Node.js yang Di-cache.

Menggunakan repositori npm pribadi

Bagian ini menjelaskan cara men-deploy proxy Node.js ke Target yang Dihosting jika Anda menggunakan repositori NPM pribadi di lingkungan pengembangan.

Yang perlu Anda ketahui tentang penggunaan repositori pribadi

Saat Anda men-deploy aplikasi Node.js ke Edge, semua dependensi project Anda akan diimpor secara otomatis sebagai bagian dari proses deployment. Pada dasarnya, Target yang Dihosting menjalankan npm install pada kode Anda saat kode di-deploy. Namun, jika Anda menggunakan repositori NPM pribadi di lingkungan pengembangan, dependensi pribadi tidak dapat diselesaikan di Cloud. Dalam hal ini, solusinya adalah menggunakan opsi --bundled-dependencies saat Anda menggunakan utilitas deployment apigeetool. Lihat juga Men-deploy Node.js dari sistem Anda ke Edge.

Saat Anda menggunakan tanda --bundled-dependencies pada apigeetool, aplikasi Node.js Anda akan diupload ke Target yang Dihosting dan semua file lokal/pribadi yang tercantum dalam array bundledDependencies di package.json akan di-zip dan diupload dengan paket.

Meskipun bukan situasi yang umum, perlu diketahui bahwa jika Anda mencerminkan repositori NPM publik secara internal, deployment Anda akan gagal jika paket deployment Anda menyertakan file .npmrc atau package-lock.json yang mengarah ke cermin pribadi Anda. Dalam hal ini, pastikan untuk menghapus .npmrc atau package-lock.json dari paket proxy yang ingin Anda deploy.

Men-deploy dengan repositori NPM pribadi

Untuk menggunakan modul yang disediakan dari repositori NPM pribadi, ikuti langkah-langkah berikut:

  1. Login ke npm:
    npm login
  2. Dapatkan token autentikasi npm:
    1. Cari .npmrc (seharusnya ada di ~/.npmrc).
    2. Di .npmrc, perhatikan token di akhir baris yang terlihat seperti ini:

      //registry.npmjs.org/:_authToken=****
    3. Atau gunakan perintah npm token <list | create | revoke> untuk mencantumkan, membuat, atau mencabut token autentikasi. Lihat dokumentasi npm-token untuk mengetahui detail selengkapnya.
  3. Akses halaman konfigurasi Key Value Maps, seperti yang dijelaskan di bawah.

    Edge

    Untuk mengakses halaman konfigurasi Peta Nilai Kunci menggunakan UI Edge:

    1. Login ke apigee.com/edge.
    2. Pilih Admin > Environments > Key Value Maps di menu navigasi sebelah kiri.

    Classic Edge (Private Cloud)

    Untuk mengakses halaman konfigurasi Key Value Maps menggunakan UI Edge Klasik:

    1. Login ke http://ms-ip:9000, dengan ms-ip adalah alamat IP atau nama DNS node Server Pengelolaan.
    2. Pilih APIs > Environment Configuration > Key Value Maps di panel navigasi atas.
  4. Klik + Key Value Map.
  5. Dalam dialog New Key Value Map, masukkan nama dan pilih Encrypted.
  6. Klik Tambahkan.
  7. Tambahkan token autentikasi yang sebelumnya Anda temukan atau buat sebagai entri baru di setiap KVM yang baru saja Anda buat.
  8. Dalam file app.yaml, tambahkan entri yang mereferensikan KVM dan kunci yang terkait dengan token autentikasi npm. Ini akan terlihat seperti berikut:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    Dengan:

    • Atribut name tingkat teratas sesuai dengan nama variabel lingkungan yang akan dibuat.
    • name di bagian valueRef sesuai dengan KVM yang Anda buat sebelumnya.
    • Atribut key sesuai dengan kunci yang memetakan ke token npm yang Anda tambahkan ke KVM.
  10. Buat file .npmrc di direktori yang sama dengan package.json Anda. File ini akan terlihat seperti ini:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    atau jika Anda tidak menggunakan registry.npmjs.org, Anda dapat menetapkan cakupan dalam file .npmrc  dengan menambahkan baris seperti ini @myscope:registry=https://mycustomregistry.example.org Lihat juga dokumentasi npmrc.
  11. Upload atau perbarui proxy Node.js Anda dengan menyertakan file .npmrc dan app.yaml.
  12. Pastikan proxy baru atau yang diupdate di-deploy dan berfungsi dengan modul repositori pribadi yang diinginkan.
  13. Jika proxy tidak di-deploy, periksa log build untuk melihat apakah proxy gagal menginstal modul npm pribadi. Jika demikian:
    1. Di tab develop, pastikan .npmrc ada.
    2. Pastikan token Anda valid (coba instal modul secara lokal dengan token yang ada di kvm).
    3. Jika Anda menggunakan cakupan kustom, pastikan cakupan tersebut ditetapkan.

Menentukan versi NPM untuk dependensi yang di-bundle

Secara default, NPM v4 digunakan untuk menginstal dependensi yang di-bundle di lingkungan Target yang Dihosting. Namun, jika ingin menggunakan versi NPM yang berbeda, Anda dapat menentukannya di variabel lingkungan NPM_VERSION. Anda dapat menetapkan variabel ini dalam file manifes aplikasi. Lihat Elemen file manifes untuk mengetahui detailnya.

Jika Anda menggunakan dependensi yang di-bundle, dan jika Anda tidak menentukan NPM_VERSION, Target yang Dihosting menggunakan NPM v4 secara default. Jika Anda tidak menggunakan dependensi yang di-bundle, versi NPM yang disertakan dalam runtime Node.js yang Anda tentukan akan digunakan.

Contoh dependensi yang di-bundle

Untuk contoh yang menunjukkan fitur dependensi yang di-bundle dengan Target yang Dihosting, lihat Cara membuat aplikasi Node.js dengan Hosted Functions menggunakan modul kustom.

Menambahkan endpoint health check

Anda memiliki opsi untuk menerapkan endpoint health check untuk aplikasi Node.js Anda. Apigee menggunakan endpoint ini saat aplikasi Node.js Anda mulai memeriksa apakah aplikasi sudah aktif dan berjalan di container.

Secara default, endpoint yang diharapkan Apigee adalah /health. Anda dapat mengubah endpoint default dengan menentukan endpoint dalam variabel lingkungan bernama HOSTED_TARGET_HEALTH_CHECK_PATH. Anda dapat menetapkan variabel ini dalam file manifes aplikasi. Lihat Elemen file manifes untuk mengetahui detailnya.

Endpoint health check tidak wajib diterapkan. Namun, jika Anda menerapkan endpoint health check, perhatikan hal berikut:

  • Jika aplikasi Anda keluar saat Apigee mencapai endpoint, aplikasi tidak akan dimulai seperti yang diharapkan.
  • Tidak masalah jika endpoint Anda menampilkan status HTTP 404 Not Found. /health atau HOSTED_TARGET_HEALTH_CHECK_PATH hanya digunakan untuk memeriksa apakah aplikasi Anda sedang berjalan. Respons sebenarnya diabaikan.

Mengubah lokasi cache NPM

Node.js versi yang lebih baru menggunakan versi NPM yang menggunakan /root/.npm untuk cache NPM. Lokasi ini menimbulkan masalah bagi Target yang Dihosting karena lokasi direktori tersebut bersifat hanya baca karena runtime Target yang Dihosting menggunakan sistem file tmpfs yang hanya dapat ditulis oleh /tmp. Untuk mengatasi masalah ini, Anda dapat menetapkan variabel lingkungan npm_config_cache di file app.yaml aplikasi Anda (file manifes) ke direktori dalam /tmp. Contoh:

  runtime: node
  application: my-express-app
  env:
    - name: npm_config_cache
      value: /tmp/.npm
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  

Menjalankan aplikasi tanpa NPM

Secara default, Target yang Dihosting menggunakan npm start untuk menjalankan aplikasi Target yang Dihosting. Namun, dalam tugas sebelumnya, kita membahas masalah penggunaan NPM karena versi yang lebih baru akan mencoba menggunakan /root/.npm untuk cache NPM, yang tidak dapat ditulis dan menyebabkan Target yang Dihosting gagal dimulai. Meskipun tugas sebelumnya akan mengatasi masalah ini, opsi lain adalah menjalankan aplikasi tanpa NPM. Untuk melakukannya, Anda dapat menggunakan nilai command dan args dalam file app.yamlaplikasi (file manifes) untuk menjalankan Target yang Dihosting secara langsung menggunakan node index.js. Contoh:

  runtime: node
  application: my-express-app
  command: node
  args:
    - index.js
  env:
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  
Tentu saja, Anda dapat menggunakan perintah apa pun yang Anda anggap sesuai dan node index.js hanyalah contoh.