Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Edge Microgateway v. 3.1.5 dan yang lebih baru
Topik ini membahas cara mengelola dan mengonfigurasi Edge Microgateway.
Mengupgrade Edge Microgateway jika Anda memiliki koneksi internet
Bagian ini menjelaskan cara mengupgrade penginstalan Edge Microgateway yang ada. Jika Anda beroperasi tanpa koneksi internet, lihat Dapatkah saya menginstal Edge Microgateway tanpa koneksi internet?.
Apigee merekomendasikan agar Anda menguji konfigurasi yang ada dengan versi baru sebelum mengupgrade lingkungan produksi.
- Jalankan perintah
npmberikut untuk mengupgrade ke Edge Microgateway versi terbaru:npm upgrade edgemicro -g
Untuk mengupgrade ke versi Edge Microgateway tertentu, Anda harus menentukan nomor versi dalam perintah upgrade. Jika Anda tidak menentukan nomor versi, versi terbaru akan diinstal. Misalnya, untuk mengupgrade ke versi 3.1.0, gunakan perintah berikut:
npm upgrade edgemicro@3.1.0 -g
- Lihat nomor versi aplikasi. Misalnya, jika Anda menginstal versi 3.1.0:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.1.0 - Terakhir, upgrade ke proxy edgemicro-auth versi terbaru:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
Melakukan perubahan konfigurasi
File konfigurasi yang perlu Anda ketahui meliputi:
- File konfigurasi sistem default
- File konfigurasi default untuk instance Edge Microgateway yang baru diinisialisasi
- File konfigurasi dinamis untuk instance yang sedang berjalan
Bagian ini membahas file tersebut dan hal-hal yang perlu Anda ketahui tentang cara mengubahnya.
File konfigurasi sistem default
Saat Anda menginstal Edge Microgateway, file konfigurasi sistem default akan ditempatkan di sini:
prefix/lib/node_modules/edgemicro/config/default.yaml
Dengan prefix adalah direktori awalan npm. Lihat
Di mana Edge Microgateway diinstal jika Anda tidak dapat menemukan direktori ini.
Jika Anda mengubah file konfigurasi sistem, Anda harus menginisialisasi ulang, mengonfigurasi ulang, dan memulai ulang Edge Microgateway:
edgemicro initedgemicro configure [params]edgemicro start [params]
File konfigurasi default untuk instance Edge Microgateway yang baru diinisialisasi
Saat Anda menjalankan edgemicro init, file konfigurasi sistem (dijelaskan di atas), default.yaml, akan ditempatkan di direktori ~/.edgemicro.
Jika Anda mengubah file konfigurasi di ~/.edgemicro, Anda harus mengonfigurasi ulang dan memulai ulang
Edge Microgateway:
edgemicro stopedgemicro configure [params]edgemicro start [params]
File konfigurasi dinamis untuk instance yang sedang berjalan
Saat Anda menjalankan edgemicro configure [params], file konfigurasi
dinamis dibuat di ~/.edgemicro. File diberi nama sesuai dengan pola ini: org-env-config.yaml, dengan org dan env adalah nama organisasi dan lingkungan Apigee Edge Anda. Anda dapat menggunakan file ini untuk membuat perubahan konfigurasi, lalu memuat ulang perubahan tersebut tanpa waktu henti. Misalnya, jika Anda menambahkan dan mengonfigurasi plugin,
Anda dapat memuat ulang konfigurasi tanpa menimbulkan waktu nonaktif, seperti yang dijelaskan di bawah.
Jika Edge Microgateway sedang berjalan (opsi tanpa periode nonaktif):
- Muat ulang konfigurasi Edge Microgateway:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
Dengan:
- $ORG adalah nama organisasi Edge Anda (Anda harus menjadi administrator organisasi).
- $ENV adalah lingkungan di organisasi Anda (seperti "test" atau "prod").
- $KEY adalah kunci yang sebelumnya ditampilkan oleh perintah configure.
- $SECRET adalah kunci yang sebelumnya ditampilkan oleh perintah configure.
Contoh:
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
Jika Edge Microgateway dihentikan:
- Mulai ulang Edge Microgateway:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Dengan:
- $ORG adalah nama organisasi Edge Anda (Anda harus menjadi administrator organisasi).
- $ENV adalah lingkungan di organisasi Anda (seperti "test" atau "prod").
- $KEY adalah kunci yang sebelumnya ditampilkan oleh perintah configure.
- $SECRET adalah kunci yang sebelumnya ditampilkan oleh perintah configure.
Contoh:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
Berikut adalah contoh file konfigurasi. Untuk mengetahui detail tentang setelan file konfigurasi, lihat Referensi konfigurasi Edge Microgateway.
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
Menyetel variabel lingkungan
Perintah antarmuka command line yang memerlukan nilai untuk organisasi dan lingkungan Edge Anda, serta kunci dan rahasia yang diperlukan untuk memulai Edge Microgateway dapat disimpan dalam variabel lingkungan ini:
EDGEMICRO_ORGEDGEMICRO_ENVEDGEMICRO_KEYEDGEMICRO_SECRET
Setelan variabel ini bersifat opsional. Jika Anda menyetelnya, Anda tidak perlu menentukan nilainya saat menggunakan antarmuka command line (CLI) untuk mengonfigurasi dan memulai Edge Microgateway.
Mengonfigurasi SSL di server Edge Microgateway
Tonton video berikut untuk mempelajari cara mengonfigurasi TLS di Apigee Edge Microgateway:
| Video | Deskripsi |
|---|---|
| Mengonfigurasi TLS Northbound 1 arah | Pelajari cara mengonfigurasi TLS di Apigee Edge Microgateway. Video ini memberikan Ringkasan TLS dan kepentingannya, memperkenalkan TLS di Edge Microgateway, dan menunjukkan cara mengonfigurasi TLS Satu Arah Northbound. |
| Mengonfigurasi TLS Northbound 2 arah | Ini adalah video kedua tentang mengonfigurasi TLS di Apigee Edge Microgateway. Video ini menjelaskan cara mengonfigurasi TLS 2 arah ke utara. |
| Mengonfigurasi TLS Southbound 1 arah dan 2 arah | Video ketiga tentang mengonfigurasi TLS di Apigee Edge Microgateway ini menjelaskan cara mengonfigurasi TLS 1 arah dan 2 arah di selatan. |
Anda dapat mengonfigurasi server Microgateway untuk menggunakan SSL. Misalnya, dengan SSL yang dikonfigurasi, Anda dapat memanggil API melalui Edge Microgateway dengan protokol "https", seperti ini:
https://localhost:8000/myapi
Untuk mengonfigurasi SSL di server Microgateway, ikuti langkah-langkah berikut:
- Buat atau dapatkan sertifikat dan kunci SSL menggunakan utilitas openssl atau metode apa pun yang Anda inginkan.
- Tambahkan atribut
edgemicro:sslke file konfigurasi Edge Microgateway. Untuk daftar lengkap opsi, lihat tabel di bawah. Contoh:
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- Mulai ulang Edge Microgateway. Ikuti langkah-langkah yang diuraikan dalam Melakukan perubahan konfigurasi, bergantung pada file konfigurasi yang Anda edit: file default atau file konfigurasi runtime.
Berikut adalah contoh bagian edgemicro dari file konfigurasi, dengan SSL yang dikonfigurasi:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
Berikut adalah daftar semua opsi server yang didukung:
| Opsi | Deskripsi |
|---|---|
key |
Jalur ke file ca.key (dalam format PEM). |
cert |
Jalur ke file ca.cert (dalam format PEM). |
pfx |
Jalur ke file pfx yang berisi kunci pribadi, sertifikat, dan sertifikat CA
klien dalam format PFX. |
passphrase |
String yang berisi frasa sandi untuk kunci pribadi atau PFX. |
ca |
Jalur ke file yang berisi daftar sertifikat tepercaya dalam format PEM. |
ciphers |
String yang menjelaskan sandi yang akan digunakan, dipisahkan dengan ":". |
rejectUnauthorized |
Jika benar (true), sertifikat server akan diverifikasi berdasarkan daftar CA yang diberikan. Jika verifikasi gagal, error akan ditampilkan. |
secureProtocol |
Metode SSL yang akan digunakan. Misalnya, SSLv3_method untuk memaksa SSL ke versi 3. |
servername |
Nama server untuk ekstensi TLS SNI (Server Name Indication). |
requestCert |
true untuk SSL 2 arah; false untuk SSL 1 arah |
Menggunakan opsi SSL/TLS klien
Anda dapat mengonfigurasi Edge Microgateway agar menjadi klien TLS atau SSL saat terhubung ke endpoint target. Di file konfigurasi Microgateway, gunakan elemen target untuk menyetel opsi SSL/TLS.
Contoh ini memberikan setelan yang akan diterapkan ke semua host:
edgemicro:
...
targets:
ssl:
client:
key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueDalam contoh ini, setelan hanya diterapkan ke host yang ditentukan:
edgemicro:
...
targets:
- host: 'myserver.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueBerikut contoh untuk TLS:
edgemicro:
...
targets:
- host: 'myserver.example.com'
tls:
client:
pfx: /Users/myname/twowayssl/ssl/client.pfx
passphrase: admin123
rejectUnauthorized: trueBerikut adalah daftar semua opsi klien yang didukung:
| Opsi | Deskripsi |
|---|---|
pfx |
Jalur ke file pfx yang berisi kunci pribadi, sertifikat, dan sertifikat CA
klien dalam format PFX. |
key |
Jalur ke file ca.key (dalam format PEM). |
passphrase |
String yang berisi frasa sandi untuk kunci pribadi atau PFX. |
cert |
Jalur ke file ca.cert (dalam format PEM). |
ca |
Jalur ke file yang berisi daftar sertifikat tepercaya dalam format PEM. |
ciphers |
String yang menjelaskan sandi yang akan digunakan, dipisahkan dengan ":". |
rejectUnauthorized |
Jika benar (true), sertifikat server akan diverifikasi berdasarkan daftar CA yang diberikan. Jika verifikasi gagal, error akan ditampilkan. |
secureProtocol |
Metode SSL yang akan digunakan. Misalnya, SSLv3_method untuk memaksa SSL ke versi 3. |
servername |
Nama server untuk ekstensi TLS SNI (Server Name Indication). |
Menyesuaikan proxy edgemicro-auth
Secara default, Edge Microgateway menggunakan proxy yang di-deploy di Apigee Edge untuk autentikasi OAuth2.
Proxy ini di-deploy saat Anda menjalankan edgemicro configure untuk pertama kalinya. Anda dapat mengubah
konfigurasi default proxy ini untuk menambahkan dukungan bagi klaim kustom ke Token Web JSON
(JWT), mengonfigurasi masa berlaku token, dan membuat token refresh. Untuk mengetahui detailnya, lihat halaman edgemicro-auth di GitHub.
Menggunakan layanan autentikasi kustom
Secara default, Edge Microgateway menggunakan proxy yang di-deploy di Apigee Edge untuk autentikasi OAuth2.
Proxy ini di-deploy saat Anda menjalankan edgemicro configure untuk pertama kalinya. Secara default, URL
proxy ini ditentukan dalam file konfigurasi Edge Microgateway sebagai berikut:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
Jika Anda ingin menggunakan layanan kustom Anda sendiri untuk menangani autentikasi, ubah
nilai authUri dalam file konfigurasi agar mengarah ke layanan Anda. Misalnya, Anda mungkin memiliki
layanan yang menggunakan LDAP untuk memverifikasi identitas.
Mengelola file log
Edge Microgateway mencatat informasi tentang setiap permintaan dan respons. File log memberikan informasi yang berguna untuk proses debug dan pemecahan masalah.
Lokasi penyimpanan file log
Secara default, file log disimpan di /var/tmp.
Cara mengubah direktori file log default
Direktori tempat file log disimpan ditentukan dalam file konfigurasi Edge Microgateway. Lihat juga Melakukan perubahan konfigurasi.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Ubah nilai dir untuk menentukan direktori file log yang berbeda.
Mengirim log ke konsol
Anda dapat mengonfigurasi logging sehingga informasi log dikirim ke output standar, bukan ke
file log. Tetapkan flag to_console ke benar (true) sebagai berikut:
edgemicro:
logging:
to_console: trueDengan setelan ini, log akan dikirim ke output standar. Saat ini, Anda tidak dapat mengirim log ke stdout dan file log secara bersamaan.
Cara menetapkan tingkat logging
Anda dapat menyetel level log berikut: info, warn, dan error. Sebaiknya gunakan tingkat info. Mencatat semua permintaan dan respons API, dan merupakan setelan default.
Cara mengubah interval log
Anda dapat mengonfigurasi interval ini dalam file konfigurasi Edge Microgateway. Lihat juga Melakukan perubahan konfigurasi.
Atribut yang dapat dikonfigurasi adalah:
- stats_log_interval: (default: 60) Interval, dalam detik, saat catatan statistik ditulis ke file log API.
- rotate_interval: (default: 24) Interval, dalam jam, saat file log dirotasi. Contoh:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Praktik pemeliharaan file log yang baik
Seiring waktu, data file log akan bertambah. Apigee merekomendasikan agar Anda menerapkan praktik berikut:
- Karena file log bisa menjadi sangat besar, pastikan direktori file log memiliki ruang yang cukup. Lihat bagian berikut Tempat file log disimpan dan Cara mengubah direktori file log default.
- Hapus atau pindahkan file log ke direktori arsip terpisah setidaknya seminggu sekali.
- Jika kebijakan Anda adalah menghapus log, Anda dapat menggunakan perintah CLI
edgemicro log -cuntuk menghapus (membersihkan) log yang lebih lama.
Konvensi penamaan file log
Setiap instance Edge Microgateway menghasilkan tiga jenis file log:
- api - Mencatat semua permintaan dan respons yang mengalir melalui Edge Microgateway. Penghitung (statistik) dan error API juga dicatat ke file ini.
- err - Mencatat semua yang dikirim ke stderr.
- out - Mencatat semua yang dikirim ke stdout.
Berikut konvensi penamaannya:
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
Contoh:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
Tentang konten file log
Ditambahkan di: v2.3.3
Secara default, layanan logging menghilangkan JSON proxy, produk, dan Token Web JSON (JWT) yang didownload. Jika Anda ingin menampilkan objek ini ke file log, tetapkan
DEBUG=* saat Anda memulai Edge Microgateway. Contoh:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
Isi file log "api"
File log "api" berisi informasi mendetail tentang alur permintaan dan respons melalui Edge Microgateway. File log "api" diberi nama seperti ini:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Untuk setiap permintaan yang dibuat ke Edge Microgateway, empat peristiwa dicatat dalam file log "api":
- Permintaan masuk dari klien
- Permintaan keluar dibuat ke target
- Respons masuk dari target
- Respons keluar untuk klien
Setiap entri terpisah ini ditampilkan dalam notasi singkat untuk membantu membuat file log lebih ringkas. Berikut adalah empat contoh entri yang mewakili keempat peristiwa tersebut. Dalam file log, error akan terlihat seperti ini (nomor baris hanya untuk referensi dalam dokumen, tidak muncul dalam file log).
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
Mari kita lihat satu per satu:
1. Contoh permintaan masuk dari klien:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - Stempel tanggal Unix
- info - Tergantung pada konteksnya. Dapat berupa info, peringatan, atau error, bergantung pada tingkat log. Dapat berupa stats untuk rekaman statistik, warn untuk peringatan, atau error untuk error.
- req - Mengidentifikasi peristiwa. Dalam hal ini, permintaan dari klien.
- m - Kata kerja HTTP yang digunakan dalam permintaan.
- u - Bagian URL setelah basepath.
- h - Host dan nomor port tempat Edge Microgateway memproses.
- r - Host dan port jarak jauh tempat permintaan klien berasal.
- i - ID permintaan. Keempat entri peristiwa akan berbagi ID ini. Setiap permintaan diberi ID permintaan unik. Menghubungkan catatan log berdasarkan ID permintaan dapat memberikan insight berharga tentang latensi target.
- d - Durasi dalam milidetik sejak permintaan diterima oleh Edge Microgateway. Dalam contoh di atas, respons target untuk permintaan 0 diterima setelah 7 milidetik (baris 3), dan respons dikirim ke klien setelah 4 milidetik tambahan (baris 4). Dengan kata lain, total latensi permintaan adalah 11 milidetik, dengan 7 milidetik digunakan oleh target dan 4 milidetik oleh Edge Microgateway itu sendiri.
2. Contoh permintaan keluar yang dibuat ke target:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - Stempel tanggal Unix
- info - Tergantung pada konteksnya. Dapat berupa info, peringatan, atau error, bergantung pada tingkat log. Dapat berupa stats untuk rekaman statistik, warn untuk peringatan, atau error untuk error.
- treq - Mengidentifikasi peristiwa. Dalam hal ini, targetkan permintaan.
- m - Kata kerja HTTP yang digunakan dalam permintaan target.
- u - Bagian URL setelah basepath.
- h - Host dan nomor port target backend.
- i - ID entri log. Keempat entri peristiwa akan berbagi ID ini.
3. Contoh respons masuk dari target
1436403888672 info tres s=200, d=7, i=0
1436403888651 - Stempel tanggal Unix
- info - Tergantung pada konteksnya. Dapat berupa info, peringatan, atau error, bergantung pada tingkat log. Dapat berupa stats untuk rekaman statistik, warn untuk peringatan, atau error untuk error.
- tres - Mengidentifikasi peristiwa. Dalam hal ini, respons target.
- s - Status respons HTTP.
- d - Durasi dalam milidetik. Waktu yang diperlukan untuk panggilan API oleh target.
- i - ID entri log. Keempat entri peristiwa akan berbagi ID ini.
4. Contoh respons keluar ke klien
1436403888676 info res s=200, d=11, i=0
1436403888651 - Stempel tanggal Unix
- info - Tergantung pada konteksnya. Dapat berupa info, peringatan, atau error, bergantung pada tingkat log. Dapat berupa stats untuk rekaman statistik, warn untuk peringatan, atau error untuk error.
- res - Mengidentifikasi peristiwa. Dalam hal ini, respons terhadap klien.
- s - Status respons HTTP.
- d - Durasi dalam milidetik. Ini adalah total waktu yang dibutuhkan oleh panggilan API, termasuk waktu yang dibutuhkan oleh target API dan waktu yang dibutuhkan oleh Edge Microgateway itu sendiri.
- i - ID entri log. Keempat entri peristiwa akan berbagi ID ini.
Jadwal file log
File log dirotasi pada interval yang ditentukan oleh rotate_interval . Entri akan terus ditambahkan ke file log yang sama hingga interval rotasi berakhir. Namun, setiap kali Edge Microgateway dimulai ulang, Edge Microgateway akan menerima UID baru dan membuat kumpulan file log baru dengan UID ini. Lihat juga Praktik pemeliharaan file log yang baik.
Pesan error
Beberapa entri log akan berisi pesan error. Untuk membantu mengidentifikasi lokasi dan penyebab terjadinya error, lihat referensi error Edge Microgateway.
Referensi konfigurasi Edge Microgateway
Lokasi file konfigurasi
Atribut konfigurasi yang dijelaskan di bagian ini berada dalam file konfigurasi Edge Microgateway. Lihat juga Melakukan perubahan konfigurasi.
Atribut edge_config
Setelan ini digunakan untuk mengonfigurasi interaksi antara instance Edge Microgateway dan Apigee Edge.
- bootstrap: (default: none) URL yang mengarah ke layanan khusus Edge
Microgateway yang berjalan di Apigee Edge. Edge Microgateway menggunakan layanan ini untuk
berkomunikasi dengan Apigee Edge. URL ini ditampilkan saat Anda menjalankan perintah untuk membuat
pasangan kunci publik/pribadi:
edgemicro genkeys. Lihat Menyiapkan dan mengonfigurasi Edge Microgateway untuk mengetahui detailnya. - jwt_public_key: (default: none) URL yang mengarah ke proxy Edge Microgateway yang di-deploy di Apigee Edge. Proxy ini berfungsi sebagai endpoint autentikasi untuk menerbitkan token akses bertanda tangan kepada klien. URL ini ditampilkan saat Anda menjalankan perintah untuk men-deploy proxy: edgemicro configure. Lihat Menyiapkan dan mengonfigurasi Edge Microgateway untuk mengetahui detailnya.
- quotaUri: Tetapkan properti
konfigurasi ini jika Anda ingin mengelola kuota melalui proxy
edgemicro-authyang di-deploy ke organisasi Anda. Jika properti ini tidak ditetapkan, endpoint kuota akan ditetapkan secara default ke endpoint Edge Microgateway internal.edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
Atribut edgemicro
Setelan ini mengonfigurasi proses Edge Microgateway.
- port: (default: 8000) Nomor port yang digunakan untuk memproses Edge Microgateway.
- max_connections: (default: -1) Menentukan jumlah maksimum
koneksi masuk serentak yang dapat diterima Edge Microgateway. Jika jumlah ini terlampaui, status berikut akan ditampilkan:
res.statusCode = 429; // Too many requests
- max_connections_hard: (default: -1) Jumlah maksimum permintaan serentak yang dapat diterima Edge Microgateway sebelum menutup koneksi. Setelan ini ditujukan untuk mencegah serangan penolakan layanan. Biasanya, tetapkan ke angka yang lebih besar daripada max_connections.
-
logging:
-
level: (default: error)
- info - Mencatat semua permintaan dan respons yang mengalir melalui instance Edge Microgateway.
- warn - Hanya mencatat pesan peringatan.
- error - Hanya mencatat pesan error.
- dir: (default: /var/tmp) Direktori tempat file log disimpan.
- stats_log_interval: (default: 60) Interval, dalam detik, saat catatan statistik ditulis ke file log API.
- rotate_interval: (default: 24) Interval, dalam jam, saat file log dirotasi.
-
level: (default: error)
- plugin: Plugin menambahkan fungsi ke Edge Microgateway. Untuk mengetahui detail tentang pengembangan plugin, lihat Mengembangkan plugin kustom.
- dir: Jalur relatif dari direktori ./gateway ke direktori ./plugins, atau jalur absolut.
- sequence: Daftar modul plugin yang akan ditambahkan ke instance Edge Microgateway Anda. Modul akan dieksekusi sesuai urutan yang ditentukan di sini.
-
debug: Menambahkan proses debug jarak jauh ke proses Edge Microgateway.
- port: Nomor port yang harus diproses. Misalnya, setel debugger IDE Anda untuk memproses permintaan pada port ini.
- args: Argumen untuk proses debug. Contoh:
args --nolazy
- config_change_poll_interval: (default: 600 detik) Edge Microgateway
memuat konfigurasi baru secara berkala dan menjalankan pemuatan ulang jika ada perubahan. Polling
mengambil perubahan apa pun yang dilakukan di Edge (perubahan pada produk, proxy yang kompatibel dengan microgateway, dll.) serta
perubahan yang dilakukan pada file konfigurasi lokal.
- disable_config_poll_interval: (default: false) Setel ke true untuk menonaktifkan polling perubahan otomatis.
- request_timeout: Menetapkan waktu tunggu untuk permintaan target. Waktu tunggu ditetapkan dalam detik. Jika terjadi waktu tunggu habis, Edge Microgateway akan merespons dengan kode status 504. (Ditambahkan v2.4.x)
- keep_alive_timeout: Properti ini memungkinkan Anda menetapkan waktu tunggu Edge Microgateway (dalam milidetik). (Default: 5 detik) (Ditambahkan v3.0.6)
- headers_timeout: Atribut ini membatasi jumlah waktu (dalam milidetik)
parser HTTP akan menunggu untuk menerima
header HTTP lengkap.
Contoh:
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
Secara internal, parameter ini menetapkan atribut
Server.headersTimeoutNode.js pada permintaan. (Default: 5 detik lebih lama dari waktu yang ditetapkan denganedgemicro.keep_alive_timeout. Setelan default ini mencegah load balancer atau proxy menghentikan koneksi secara keliru.) (Ditambahkan v3.1.1) - noRuleMatchAction: (String) Tindakan yang akan dilakukan (izinkan atau tolak akses) jika
aturan kecocokan yang ditentukan dalam plugin
accesscontroltidak diselesaikan (tidak cocok). Nilai yang valid:ALLOWatauDENYDefault:ALLOW(Ditambahkan: v3.1.7) - enableAnalytics: (default: true) Tetapkan atribut ke false untuk
mencegah plugin Analytics
dimuat. Dalam hal ini, tidak ada panggilan ke analisis Apigee Edge yang akan dilakukan. Jika disetel ke true, atau jika
atribut ini tidak diberikan, plugin analisis akan berfungsi seperti biasa. Lihat
atribut edgemicro untuk
detailnya. (Ditambahkan di v3.1.8).
Contoh:
edgemicro enableAnalytics=false|true
atribut header
Setelan ini mengonfigurasi cara header HTTP tertentu diperlakukan.
- x-forwarded-for: (default: true) Tetapkan ke false untuk mencegah header x-forwarded-for diteruskan ke target. Perhatikan bahwa jika header x-forwarded-for ada dalam permintaan, nilainya akan ditetapkan ke nilai client-ip di Edge Analytics.
- x-forwarded-host: (default: true) Tetapkan ke false untuk mencegah header x-forwarded-host diteruskan ke target.
- x-request-id: (default: true) Tetapkan ke false untuk mencegah header x-request-id diteruskan ke target.
- x-response-time: (default: benar) Tetapkan ke salah agar header x-response-time tidak diteruskan ke target.
- via: (default: true) Setel ke false untuk mencegah header via diteruskan ke target.
atribut oauth
Setelan ini mengonfigurasi cara autentikasi klien diterapkan oleh Edge Microgateway.
- allowNoAuthorization: (default: false) Jika disetel ke benar, panggilan API diizinkan untuk melewati Edge Microgateway tanpa header Otorisasi sama sekali. Setel ini ke false untuk mewajibkan header Otorisasi (default).
- allowInvalidAuthorization: (default: false) Jika disetel ke true, panggilan API diizinkan untuk diteruskan jika token yang diteruskan di header Otorisasi tidak valid atau telah habis masa berlakunya. Setel ini ke false untuk mewajibkan token yang valid (default).
- authorization-header: (default: Authorization: Bearer) Header yang digunakan untuk mengirim token akses ke Edge Microgateway. Anda mungkin ingin mengubah default dalam kasus saat target perlu menggunakan header Otorisasi untuk tujuan lain.
- api-key-header: (default: x-api-key) Nama header atau parameter kueri yang digunakan untuk meneruskan kunci API ke Edge Microgateway. Lihat juga Menggunakan kunci API.
- keep-authorization-header: (default: false) Jika disetel ke true, header Otorisasi yang dikirim dalam permintaan akan diteruskan ke target (dipertahankan).
- allowOAuthOnly -- Jika disetel ke benar (true), setiap API harus membawa header Authorization dengan Token Akses Bearer. Memungkinkan Anda mengizinkan hanya model keamanan OAuth (sambil mempertahankan kompatibilitas mundur). (Ditambahkan 2.4.x)
- allowAPIKeyOnly -- Jika disetel ke benar (true), setiap API harus menyertakan header x-api-key (atau lokasi kustom) dengan Kunci API.Memungkinkan Anda mengizinkan hanya model keamanan kunci API (sambil mempertahankan kompatibilitas mundur). (Ditambahkan pada 2.4.x)
- gracePeriod -- Parameter ini membantu mencegah error yang disebabkan oleh sedikit perbedaan antara jam sistem Anda dan waktu Not Before (nbf) atau Issued At (iat) yang ditentukan dalam token otorisasi JWT. Tetapkan parameter ini ke jumlah detik yang diizinkan untuk perbedaan tersebut. (Ditambahkan 2.5.7)
Atribut khusus plugin
Lihat Menggunakan plugin untuk mengetahui detail tentang atribut yang dapat dikonfigurasi untuk setiap plugin.
Memfilter proxy
Anda dapat memfilter proxy yang kompatibel dengan microgateway yang akan diproses oleh instance Edge Microgateway.
Saat dimulai, Edge Microgateway akan mendownload semua proxy yang kompatibel dengan microgateway di organisasi yang terkait dengannya. Gunakan konfigurasi berikut untuk membatasi proxy yang akan diproses microgateway. Misalnya, konfigurasi ini membatasi jumlah proxy yang akan diproses microgateway menjadi tiga: edgemicro_proxy-1, edgemicro_proxy-2, dan edgemicro_proxy-3:
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Memfilter produk menurut nama
Gunakan konfigurasi berikut untuk membatasi jumlah produk API yang didownload dan diproses oleh Edge Microgateway. Untuk memfilter produk yang didownload, tambahkan parameter kueri productnamefilter
ke API /products yang tercantum dalam file *.config.yaml
Edge Microgateway. Contoh:
edge_config:
bootstrap: >-
https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
managementUri: 'https://api.enterprise.apigee.com'
vaultName: microgateway
authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
baseUri: >-
https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
bootstrapMessage: Please copy the following property to the edge micro agent config
keySecretMessage: The following credentials are required to start edge micro
products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'
Perhatikan bahwa nilai parameter kueri harus ditentukan dalam format ekspresi reguler dan dienkode URL. Misalnya, regex ^[Ee]dgemicro.*$ mencakup nama seperti:
"edgemicro-test-1", "edgemicro_demo", dan "Edgemicro_New_Demo". Nilai yang dienkode ke URL, yang cocok untuk
digunakan dalam parameter kueri, adalah: %5E%5BEe%5Ddgemicro.%2A%24.
Output debug berikut menunjukkan bahwa hanya produk yang difilter yang didownload:
...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
"apiProduct":[
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590549037549,
"createdBy":"k***@g********m",
"displayName":"test upper case in name",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590549037549,
"lastModifiedBy":"k***@g********m",
"name":"Edgemicro_New_Demo",
"proxies":[
"catchall"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590548328998,
"createdBy":"k***@g********m",
"displayName":"edgemicro test 1",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590548328998,
"lastModifiedBy":"k***@g********m",
"name":"edgemicro-test-1",
"proxies":[
"Lets-Encrypt-Validation-DoNotDelete"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
"/",
"/**"
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1558182193472,
"createdBy":"m*********@g********m",
"displayName":"Edge microgateway demo product",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1569077897465,
"lastModifiedBy":"m*********@g********m",
"name":"edgemicro_demo",
"proxies":[
"edgemicro-auth",
"edgemicro_hello"
],
"quota":"600",
"quotaInterval":"1",
"quotaTimeUnit":"minute",
"scopes":[
]
}
]
}Memfilter produk menurut atribut kustom
Untuk memfilter produk berdasarkan atribut kustom:
- Di Edge UI, pilih proxy edgemicro_auth di organisasi/lingkungan tempat Anda mengonfigurasi Edge Microgateway.
- Di tab Develop, buka kebijakan JavaCallout di editor.
- Tambahkan atribut kustom dengan kunci
products.filter.attributesdengan daftar nama atribut yang dipisahkan koma. Hanya produk yang berisi salah satu nama atribut kustom yang akan ditampilkan ke Edge Microgateway. - Anda dapat menonaktifkan pemeriksaan secara opsional
untuk melihat apakah produk diaktifkan untuk lingkungan saat ini dengan menetapkan
atribut kustom
products.filter.env.enablekefalse. (Defaultnya adalah benar.) - (Khusus Private Cloud) Jika Anda menggunakan Edge untuk Private Cloud, tetapkan properti
org.noncpsketrueuntuk menarik produk bagi lingkungan non-CPS.
Contoh:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
<DisplayName>JavaCallout</DisplayName>
<FaultRules/>
<Properties>
<Property name="products.filter.attributes">attrib.one, attrib.two</Property>
<Property name="products.filter.env.enable">false</Property>
<Property name="org.noncps">true</Property>
</Properties>
<ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
<ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
</JavaCallout>Mengonfigurasi frekuensi push analisis
Gunakan parameter konfigurasi ini untuk mengontrol frekuensi pengiriman data analisis oleh Edge Microgateway ke Apigee:
- bufferSize (Opsional): Jumlah maksimum data analisis yang dapat ditampung buffer sebelum mulai menghapus data terlama. Default: 10000
- batchSize (Opsional): Ukuran maksimum batch rekaman analisis yang dikirim ke Apigee. Default: 500
- flushInterval (Opsional): Jumlah milidetik di antara setiap flush batch rekaman analisis yang dikirim ke Apigee. Default: 5000
Contoh:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Menyamarkan data analisis
Konfigurasi berikut mencegah informasi jalur permintaan muncul di analisis Edge. Tambahkan kode berikut ke konfigurasi microgateway untuk menyamarkan URI permintaan dan/atau jalur permintaan. Perhatikan bahwa URI terdiri dari bagian nama host dan jalur permintaan.
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
Memisahkan panggilan API di Edge Analytics
Anda dapat mengonfigurasi plugin analisis untuk memisahkan jalur API tertentu sehingga muncul sebagai proxy terpisah di dasbor Edge Analytics. Misalnya, Anda dapat memisahkan API health check di dasbor untuk menghindari kebingungan dengan panggilan proxy API sebenarnya. Di dasbor Analytics, proxy yang dipisahkan mengikuti pola penamaan ini:
edgemicro_proxyname-health
Gambar berikut menunjukkan dua proxy yang dipisahkan di dasbor Analytics: edgemicro_hello-health dan
edgemicro_mock-health:

Gunakan parameter ini untuk memisahkan jalur relatif dan absolut di dasbor Analytics sebagai proxy terpisah:
- relativePath (Opsional): Menentukan jalur relatif untuk memisahkan di
dasbor Analytics. Misalnya, jika Anda menentukan
/healthcheck, semua panggilan API yang berisi jalur/healthcheckakan muncul di dasbor sebagaiedgemicro_proxyname-health. Perhatikan bahwa tanda ini mengabaikan basepath proxy. Untuk memisahkan berdasarkan jalur lengkap, termasuk basepath, gunakan tandaproxyPath. - proxyPath (Opsional): Menentukan jalur proxy API lengkap, termasuk basepath proxy, untuk memisahkan di dasbor analisis. Misalnya, jika Anda menentukan
/mocktarget/healthcheck, dengan/mocktargetadalah jalur dasar proxy, semua panggilan API dengan jalur/mocktarget/healthcheckakan muncul di dasbor sebagaiedgemicro_proxyname-health.
Misalnya, dalam konfigurasi berikut, jalur API apa pun yang berisi /healthcheck akan
dipisahkan oleh plugin analisis. Artinya, /foo/healthcheck dan /foo/bar/healthcheck
akan dipisahkan sebagai proxy terpisah yang disebut edgemicro_proxyname-health di dasbor analisis.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
relativePath: /healthcheckDalam konfigurasi berikut, semua API dengan jalur proxy /mocktarget/healthcheck akan
dipisahkan sebagai proxy terpisah yang disebut edgemicro_proxyname-health di
dasbor analisis.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
proxyPath: /mocktarget/healthcheckMenyiapkan Edge Microgateway di belakang firewall perusahaan
Menggunakan proxy HTTP untuk komunikasi dengan Apigee Edge
Ditambahkan di versi 3.1.2.
Untuk menggunakan proxy HTTP untuk komunikasi antara Edge Microgateway dan Apigee Edge, lakukan hal berikut:
- Tetapkan variabel lingkungan
HTTP_PROXY,HTTPS_PROXY, danNO_PROXY. Variabel ini mengontrol host untuk setiap proxy HTTP yang ingin Anda gunakan untuk berkomunikasi dengan Apigee Edge, atau host mana yang tidak boleh menangani komunikasi dengan Apigee Edge. Contoh:export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
Perhatikan bahwa
NO_PROXYdapat berupa daftar domain yang dipisahkan koma yang tidak boleh di-proxy oleh Edge Microgateway.Untuk mengetahui informasi selengkapnya tentang variabel ini, lihat https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables
- Mulai ulang Edge Microgateway.
Menggunakan proxy HTTP untuk komunikasi target
Ditambahkan di versi 3.1.2.
Untuk menggunakan proxy HTTP untuk komunikasi antara Edge Microgateway dan target backend, lakukan hal berikut:
- Tambahkan konfigurasi berikut ke file konfigurasi microgateway:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | falseDengan:
- tunnel: (Opsional) Jika benar (true), Edge Microgateway menggunakan metode HTTP CONNECT untuk membuat tunnel permintaan HTTP melalui satu koneksi TCP. (Hal yang sama berlaku jika variabel lingkungan, seperti
yang disebutkan di bawah,
untuk mengonfigurasi proxy diaktifkan TLS). Default:
false - url: URL proxy HTTP.
- bypass: (Opsional) Menentukan satu atau beberapa URL host target yang dipisahkan koma yang harus melewati proxy HTTP. Jika properti ini tidak ditetapkan, gunakan variabel lingkungan NO_PROXY untuk menentukan URL target mana yang akan dilewati.
- enabled: Jika benar (true) dan
proxy.urlditetapkan, gunakan nilaiproxy.urluntuk proxy HTTP. Jika benar (true) danproxy.urltidak disetel, gunakan proxy yang ditentukan dalam variabel lingkungan proxy HTTPHTTP_PROXYdanHTTPS_PROXY, seperti yang dijelaskan dalam Menggunakan proxy HTTP untuk komunikasi dengan Apigee Edge.
Contoh:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true - tunnel: (Opsional) Jika benar (true), Edge Microgateway menggunakan metode HTTP CONNECT untuk membuat tunnel permintaan HTTP melalui satu koneksi TCP. (Hal yang sama berlaku jika variabel lingkungan, seperti
yang disebutkan di bawah,
untuk mengonfigurasi proxy diaktifkan TLS). Default:
- Mulai ulang Edge Microgateway.
Menggunakan karakter pengganti di proxy yang kompatibel dengan Microgateway
Anda dapat menggunakan satu atau beberapa karakter pengganti "*" di jalur dasar
proxy edgemicro_* (yang kompatibel dengan Microgateway). Misalnya, jalur dasar
/team/*/members memungkinkan klien memanggil
https://[host]/team/blue/members dan
https://[host]/team/green/members tanpa Anda perlu membuat proxy API baru
untuk mendukung tim baru. Perhatikan bahwa /**/ tidak didukung.
Penting: Apigee TIDAK mendukung penggunaan karakter pengganti "*" sebagai
elemen pertama jalur dasar. Misalnya, penelusuran /*/ TIDAK didukung.
Merotasi kunci JWT
Beberapa waktu setelah Anda membuat JWT untuk pertama kalinya, Anda mungkin perlu mengubah pasangan kunci publik/pribadi yang disimpan di KVM terenkripsi Edge. Proses pembuatan pasangan kunci baru ini disebut rotasi kunci.
Cara Edge Microgateway menggunakan JWT
JSON Web Token (JWT) adalah standar token yang dijelaskan dalam RFC7519. JWT menyediakan cara untuk menandatangani sekumpulan klaim, yang dapat diverifikasi secara andal oleh penerima JWT.
Anda dapat membuat JWT menggunakan CLI dan menggunakannya di header Otorisasi panggilan API, bukan kunci API. Contoh:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
Untuk mengetahui informasi tentang cara membuat JWT dengan CLI, lihat Membuat token.
Apa itu rotasi kunci?
Beberapa waktu setelah Anda membuat JWT untuk pertama kalinya, Anda mungkin perlu mengubah pasangan kunci publik/pribadi yang disimpan di KVM terenkripsi Edge. Proses pembuatan pasangan kunci baru ini disebut rotasi kunci. Saat Anda merotasi kunci, pasangan kunci pribadi/publik baru akan dibuat dan disimpan di KVM "microgateway" di organisasi/lingkungan Apigee Edge Anda. Selain itu, kunci publik lama dipertahankan bersama dengan nilai ID kunci aslinya.
Untuk membuat JWT, Edge menggunakan informasi yang disimpan di KVM terenkripsi. KVM
bernama microgatewaydibuat dan diisi dengan kunci saat Anda pertama kali menyiapkan (mengonfigurasi)
Edge Microgateway. Kunci di KVM digunakan untuk menandatangani dan mengenkripsi JWT.
Tombol KVM meliputi:
-
private_key - Kunci pribadi RSA terbaru (yang baru saja dibuat) yang digunakan untuk menandatangani JWT.
-
public_key - Sertifikat terbaru (yang baru saja dibuat) yang digunakan untuk memverifikasi JWT yang ditandatangani dengan private_key.
-
private_key_kid - ID kunci pribadi terbaru (yang baru saja dibuat). ID kunci ini dikaitkan dengan nilai private_key dan digunakan untuk mendukung rotasi kunci.
-
public_key1_kid - ID kunci publik terbaru (yang baru saja dibuat). Kunci ini dikaitkan dengan nilai public_key1 dan digunakan untuk mendukung rotasi kunci. Nilai ini sama dengan kid kunci pribadi.
-
public_key1 - Kunci publik terbaru (dibuat baru-baru ini).
Saat Anda melakukan rotasi kunci, nilai kunci yang ada akan diganti dalam peta dan kunci baru akan ditambahkan untuk mempertahankan kunci publik lama. Contoh:
-
public_key2_kid - ID kunci publik lama. Kunci ini dikaitkan dengan nilai public_key2 dan digunakan untuk mendukung rotasi kunci.
-
public_key2 - Kunci publik lama.
JWT yang ditampilkan untuk verifikasi akan diverifikasi menggunakan kunci publik baru. Jika verifikasi gagal, kunci publik lama akan digunakan, hingga JWT berakhir (setelah interval token_expiry*, default 30 menit). Dengan cara ini, Anda dapat "merotasi" kunci tanpa langsung mengganggu traffic API.
Cara melakukan rotasi kunci
Bagian ini menjelaskan cara melakukan rotasi kunci.
- Untuk mengupgrade KVM, gunakan perintah
edgemicro upgradekvm. Untuk mengetahui detail tentang cara menjalankan perintah ini, lihat Mengupgrade KVM. Anda hanya perlu melakukan langkah ini satu kali. - Untuk mengupgrade proxy edgemicro-oauth, gunakan perintah
edgemicro upgradeauth. Untuk mengetahui detail tentang cara menjalankan perintah ini, lihat Mengupgrade proxy edgemicro-auth. Anda hanya perlu melakukan langkah ini satu kali. - Tambahkan baris berikut ke file
~/.edgemicro/org-env-config.yamlAnda, tempat Anda harus menentukan organisasi dan lingkungan yang sama dengan yang Anda konfigurasi untuk digunakan oleh microgateway:jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
Jalankan perintah rotasi kunci untuk merotasi kunci. Untuk mengetahui detail tentang perintah ini, lihat Merotasi kunci.
edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET
Contoh:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
Setelah rotasi kunci, Edge akan menampilkan beberapa kunci ke Edge Microgateway. Perhatikan dalam contoh berikut, setiap kunci memiliki nilai "kid" (ID Kunci) yang unik. Microgateway kemudian menggunakan kunci ini untuk memvalidasi token otorisasi. Jika validasi token gagal, microgateway akan memeriksa apakah ada kunci yang lebih lama dalam set kunci dan mencoba kunci tersebut. Format kunci yang ditampilkan adalah Kunci Web JSON (JWK). Anda dapat membaca tentang format ini di RFC 7517.
{
"keys": [
{
"kty": "RSA",
"n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
"e": "AQAB",
"kid": "2"
},
{
"kty": "RSA",
"n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
"e": "AQAB",
"kid": "1"
}
]
}Mengonfigurasi penundaan "not before"
Untuk versi 3.1.5 dan sebelumnya, kunci pribadi baru yang dibuat oleh perintah rotatekey langsung berlaku, dan token baru yang dibuat ditandatangani dengan kunci pribadi baru. Namun,
kunci publik baru hanya tersedia untuk instance Edge Microgateway setiap 10 menit (secara default)
saat konfigurasi microgateway diperbarui. Karena jeda antara penandatanganan token dan refresh instance microgateway, token yang ditandatangani dengan kunci terbaru akan ditolak hingga semua instance menerima kunci publik terbaru.
Dalam kasus ketika ada beberapa instance microgateway, keterlambatan kunci publik terkadang menyebabkan error runtime terputus-putus dengan status 403, karena validasi token akan berhasil di satu instance, tetapi gagal di instance lain hingga semua instance di-refresh.
Mulai versi 3.1.6, flag baru pada perintah rotatekey memungkinkan Anda menentukan penundaan agar kunci pribadi baru berlaku, sehingga memberikan waktu bagi semua instance microgateway untuk di-refresh dan menerima kunci publik baru. Flag baru adalah --nbf, yang merupakan singkatan dari "not before" (tidak sebelum).
Flag ini mengambil nilai bilangan bulat, yaitu jumlah menit penundaan.
Dalam contoh berikut, penundaan ditetapkan ke 15 menit:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \ --nbf 15
Perhatikan bahwa praktik terbaiknya adalah menyetel penundaan lebih dari setelan konfigurasi config_change_poll_internal,
yang secara default adalah 10 menit. Lihat juga atribut edgemicro.
Memfilter proxy yang didownload
Secara default, Edge Microgateway mendownload semua proxy di organisasi Edge Anda yang dimulai dengan awalan penamaan "edgemicro_". Anda dapat mengubah default ini untuk mendownload proxy yang namanya cocok dengan pola.
- Buka file konfigurasi Edge Micro:
~/.edgemicro/org-env-config.yaml - Tambahkan elemen proxyPattern di bagian edge_config. Misalnya, pola berikut akan
mendownload proxy seperti edgemicro_foo, edgemicro_fast, dan edgemicro_first.
edge_config: … proxyPattern: edgemicro_f*
Menentukan produk tanpa proxy API
Di Apigee Edge, Anda dapat membuat produk API yang tidak berisi proxy API. Konfigurasi produk ini memungkinkan kunci API yang terkait dengan produk tersebut berfungsi untuk proxy apa pun yang di-deploy di organisasi Anda. Mulai versi 2.5.4, Edge Microgateway mendukung konfigurasi produk ini.
Proses debug dan pemecahan masalah
Menghubungkan ke debugger
Anda dapat menjalankan Edge Microgateway dengan debugger, seperti node-inspector. Hal ini berguna untuk memecahkan masalah dan men-debug plugin kustom.
- Mulai ulang Edge Microgateway dalam mode debug. Untuk melakukannya, tambahkan
DEBUG=*ke awal perintahstart:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Untuk mengarahkan output debug ke file, Anda dapat menggunakan perintah ini:
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- Mulai debugger Anda dan setel untuk memproses nomor port untuk proses debug.
- Anda kini dapat menelusuri kode Edge Microgateway, menetapkan titik henti sementara, memantau ekspresi, dan sebagainya.
Anda dapat menentukan flag Node.js standar yang terkait dengan mode debug. Misalnya,
--nolazy membantu proses debug kode asinkron.
Memeriksa file log
Jika Anda mengalami masalah, pastikan untuk memeriksa file log untuk mengetahui detail eksekusi dan informasi error. Untuk mengetahui detailnya, lihat Mengelola file log.
Menggunakan keamanan kunci API
Kunci API menyediakan mekanisme sederhana untuk mengautentikasi klien yang membuat permintaan ke Edge Microgateway. Anda dapat memperoleh kunci API dengan menyalin nilai Consumer Key (juga disebut Client ID) dari produk Apigee Edge yang menyertakan proxy autentikasi Edge Microgateway.
Penyimpanan kunci dalam cache
Kunci API ditukar dengan token pembawa, yang di-cache. Anda dapat menonaktifkan caching dengan menyetel
header Cache-Control: no-cache pada permintaan masuk ke Edge
Microgateway.
Menggunakan kunci API
Anda dapat meneruskan kunci API dalam permintaan API sebagai parameter kueri atau di header. Secara default,
nama header dan parameter kueri adalah x-api-key.
Contoh parameter kueri:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
Contoh header:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Mengonfigurasi nama kunci API
Secara default, x-api-key adalah nama yang digunakan untuk header kunci API dan parameter kueri.
Anda dapat mengubah default ini di file konfigurasi, seperti yang dijelaskan dalam Melakukan perubahan konfigurasi. Misalnya, untuk mengubah
nama menjadi apiKey:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
Dalam contoh ini, nama header dan parameter kueri diubah menjadi apiKey. Nama x-api-key tidak akan berfungsi lagi dalam kedua kasus tersebut. Lihat juga
Melakukan perubahan konfigurasi.
Contoh:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Untuk mengetahui informasi selengkapnya tentang penggunaan kunci API dengan permintaan proxy, lihat Secure Edge Microgateway.
Mengaktifkan kode respons upstream
Secara default, plugin oauth hanya menampilkan kode status error 4xx jika
respons bukan status 200. Anda dapat mengubah perilaku ini sehingga selalu
menampilkan kode 4xx atau 5xx yang tepat, bergantung pada error.
Untuk mengaktifkan fitur ini, tambahkan properti oauth.useUpstreamResponse: true
ke konfigurasi Edge Microgateway Anda. Contoh:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
Menggunakan keamanan token OAuth2
Bagian ini menjelaskan cara mendapatkan token akses dan token refresh OAuth2. Token akses digunakan untuk melakukan panggilan API yang aman melalui microgateway. Token refresh digunakan untuk mendapatkan token akses baru.
Cara mendapatkan token akses
Bagian ini menjelaskan cara menggunakan proxy edgemicro-auth untuk mendapatkan token akses.
Anda juga bisa mendapatkan token akses menggunakan perintah CLI edgemicro token.
Untuk mengetahui detail tentang CLI, lihat Mengelola token.
API 1: Kirim kredensial sebagai parameter isi
Ganti nama organisasi dan lingkungan Anda di URL, dan ganti nilai Consumer Id dan Consumer Secret yang diperoleh dari aplikasi developer di Apigee Edge untuk parameter isi client_id dan client_secret:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2: Mengirim kredensial di header Basic Auth
Kirim kredensial klien sebagai header Otentikasi Dasar dan
grant_type sebagai parameter formulir. Bentuk perintah ini juga dibahas dalam
RFC 6749: The OAuth 2.0 Authorization Framework.
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
Contoh output
API menampilkan respons JSON. Perhatikan bahwa tidak ada perbedaan antara propertitoken dan
access_token. Anda dapat menggunakan salah satunya.
{ "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
Cara mendapatkan token refresh
Untuk mendapatkan token refresh, lakukan panggilan API ke endpoint /token dari
proxy edgemicro-auth. Anda HARUS melakukan panggilan API ini dengan jenis pemberian password. Langkah-langkah berikut akan memandu Anda menyelesaikan prosesnya.
- Dapatkan token akses dan token refresh dengan
/tokenAPI. Perhatikan bahwa jenis pemberiannya adalahpassword:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'API menampilkan token akses dan token refresh. Responsnya akan terlihat seperti ini:
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" } - Anda kini dapat menggunakan token refresh untuk mendapatkan token akses baru dengan memanggil
endpoint
/refreshdari API yang sama. Contoh:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'API akan menampilkan token akses baru. Responsnya akan terlihat seperti ini:
{ "token": "your-new-access-token" }
Pemantauan selamanya
Forever adalah alat Node.js yang secara otomatis memulai ulang aplikasi Node.js jika prosesnya berhenti atau mengalami error. Edge Microgateway memiliki file forever.json yang dapat Anda konfigurasi untuk mengontrol berapa kali dan dengan interval apa Edge Microgateway harus dimulai ulang. File ini mengonfigurasi layanan Forever bernama forever-monitor, yang mengelola Forever secara terprogram.
Anda dapat menemukan file forever.json di direktori penginstalan root Edge Microgateway. Lihat Di mana Edge Microgateway diinstal. Untuk mengetahui detail opsi konfigurasi, lihat dokumentasi forever-monitor.
Perintah edgemicro forever menyertakan tanda yang memungkinkan Anda menentukan lokasi
file forever.json (tanda -f), dan memulai/menghentikan proses pemantauan Forever (tanda -a). Contoh:
edgemicro forever -f ~/mydir/forever.json -a start
Untuk mengetahui informasi selengkapnya, lihat Pemantauan selamanya dalam referensi CLI.
Menentukan endpoint file konfigurasi
Jika menjalankan beberapa instance Edge Microgateway, Anda mungkin ingin mengelola konfigurasinya dari satu lokasi. Anda dapat melakukannya dengan menentukan endpoint HTTP tempat Edge Micro dapat mendownload file konfigurasinya. Anda dapat menentukan endpoint ini saat memulai Edge Micro menggunakan tanda -u.
Contoh:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
dengan endpoint mgconfig menampilkan konten file konfigurasi Anda. Ini adalah file
yang, secara default, terletak di ~/.edgemicro dan memiliki konvensi penamaan:
org-env-config.yaml.
Menonaktifkan buffering data koneksi TCP
Anda dapat menggunakan atribut konfigurasi nodelay untuk menonaktifkan buffering data untuk
koneksi TCP yang digunakan oleh Edge Microgateway.
Secara default, koneksi TCP menggunakan algoritma Nagle untuk mem-buffer data sebelum mengirimkannya. Menetapkan nodelay ke true akan menonaktifkan perilaku ini (data akan segera dikirim setiap kali socket.write() dipanggil). Lihat juga dokumentasi Node.js untuk mengetahui detail selengkapnya.
Untuk mengaktifkan nodelay, edit file konfigurasi Edge Micro sebagai berikut:
edgemicro:
nodelay: true
port: 8000
max_connections: 1000
config_change_poll_interval: 600
logging:
level: error
dir: /var/tmp
stats_log_interval: 60
rotate_interval: 24
Menjalankan Edge Microgateway dalam mode mandiri
Anda dapat menjalankan Edge Microgateway yang sepenuhnya terputus dari dependensi Apigee Edge. Skenario ini, yang disebut mode mandiri, memungkinkan Anda menjalankan dan menguji Edge Microgateway tanpa koneksi Internet.
Dalam mode mandiri, fitur berikut tidak berfungsi karena memerlukan koneksi ke Apigee Edge:
- OAuth dan kunci API
- Kuota
- Analytics
Di sisi lain, plugin kustom dan penahanan lonjakan berfungsi normal, karena tidak
memerlukan koneksi ke Apigee Edge. Selain itu, plugin baru bernama extauth memungkinkan Anda mengizinkan panggilan API ke microgateway dengan JWT saat dalam mode mandiri.
Mengonfigurasi dan memulai gateway
Untuk menjalankan Edge Microgateway dalam mode mandiri:
- Buat file konfigurasi yang diberi nama sebagai berikut:
$HOME/.edgemicro/$ORG-$ENV-config.yamlContoh:
vi $HOME/.edgemicro/foo-bar-config.yaml
- Tempelkan kode berikut ke dalam file:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0 - Ekspor variabel lingkungan berikut dengan nilai "1":
export EDGEMICRO_LOCAL=1
- Jalankan perintah
startberikut, tempat Anda memberikan nilai untuk membuat instance proxy lokal:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
Dengan:
- $ORG adalah nama "org" yang Anda gunakan dalam nama file konfigurasi.
- $ENV adalah nama "env" yang Anda gunakan dalam nama file konfigurasi.
- $LOCAL_PROXY_NAME adalah nama proxy lokal yang akan dibuat. Anda dapat menggunakan nama apa pun yang Anda inginkan.
- $LOCAL_PROXY_VERSION adalah nomor versi untuk proxy.
- $TARGET_URL adalah URL untuk target proxy. (Target adalah layanan yang dipanggil proxy.)
- $BASE_PATH adalah jalur dasar proxy. Nilai ini harus diawali dengan garis miring. Untuk jalur dasar root, cukup tentukan garis miring; misalnya, "/".
Contoh:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Menguji konfigurasi.
curl http://localhost:8000/echo { "error" : "missing_authorization" }Karena plugin
extauthada di filefoo-bar-config.yaml, Anda akan mendapatkan error "missing_authorization". Plugin ini memvalidasi JWT yang harus ada di header Authorization panggilan API. Di bagian berikutnya, Anda akan mendapatkan JWT yang akan memungkinkan panggilan API berhasil tanpa error.
Contoh: Mendapatkan token otorisasi
Contoh berikut menunjukkan cara mendapatkan JWT dari endpoint JWT Edge Microgateway di Apigee Edge (edgemicro-auth/jwkPublicKeys).
Endpoint ini di-deploy saat Anda melakukan penyiapan dan konfigurasi standar Edge Microgateway.
Untuk mendapatkan JWT dari endpoint Apigee, Anda harus melakukan penyiapan Edge Microgateway standar terlebih dahulu, dan
terhubung ke Internet. Endpoint Apigee digunakan di sini hanya untuk tujuan contoh
dan tidak diperlukan. Anda dapat menggunakan endpoint token JWT lain jika diinginkan. Jika ya, Anda harus mendapatkan JWT menggunakan
API yang disediakan untuk endpoint tersebut.
Langkah-langkah berikut menjelaskan cara mendapatkan token menggunakan endpoint edgemicro-auth/jwkPublicKeys:
- Anda harus melakukan penyiapan
dan konfigurasi standar Edge Microgateway untuk men-deploy proxy
edgemicro-authke organisasi/lingkungan Anda di Apigee Edge. Jika Anda telah melakukan langkah ini sebelumnya, Anda tidak perlu mengulanginya. - Jika men-deploy Edge Microgateway ke Apigee Cloud, Anda harus terhubung ke Internet agar dapat memperoleh JWT dari endpoint ini.
-
Hentikan Edge Microgateway:
edgemicro stop
- Dalam file konfigurasi yang Anda buat sebelumnya (
$HOME/.edgemicro/org-env-config.yaml), arahkan atributextauth:publickey_urlke endpointedgemicro-auth/jwkPublicKeysdi organisasi/lingkungan Apigee Edge Anda. Contoh:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
-
Mulai ulang Edge Microgateway seperti yang Anda lakukan sebelumnya, menggunakan nama org/env yang Anda gunakan dalam nama file konfigurasi. Contoh:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
-
Dapatkan token JWT dari endpoint otorisasi. Karena Anda menggunakan endpoint
edgemicro-auth/jwkPublicKeys, Anda dapat menggunakan perintah CLI ini:
Anda dapat membuat JWT untuk Edge Microgateway menggunakan perintah edgemicro token atau
API. Contoh:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Dengan:
- your_org adalah nama organisasi Apigee yang sebelumnya Anda konfigurasi Edge Microgateway-nya.
- your_env adalah lingkungan dalam organisasi.
- Opsi
imenentukan Kunci Konsumen dari aplikasi developer yang memiliki produk yang menyertakan proxyedgemicro-auth. - Opsi
smenentukan Consumer Secret dari aplikasi developer yang memiliki produk yang menyertakan proxyedgemicro-auth.
Perintah ini meminta Apigee Edge untuk membuat JWT yang kemudian dapat digunakan untuk memverifikasi panggilan API.
Lihat juga Membuat token.Menguji konfigurasi mandiri
Untuk menguji konfigurasi, panggil API dengan token yang ditambahkan di header Otorisasi sebagai berikut:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
Contoh:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
Contoh output:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Menggunakan mode proxy lokal
Dalam mode proxy lokal, Edge Microgateway tidak memerlukan proxy yang kompatibel dengan microgateway untuk di-deploy di Apigee Edge. Sebagai gantinya, Anda mengonfigurasi "proxy lokal" dengan memberikan nama proxy lokal, basepath, dan URL target saat Anda memulai microgateway. Panggilan API ke microgateway kemudian dikirim ke URL target proxy lokal. Dalam semua hal lainnya, mode proxy lokal berfungsi persis sama seperti menjalankan Edge Microgateway dalam mode normalnya. Autentikasi berfungsi sama, seperti halnya penghentian lonjakan dan penerapan kuota, plugin kustom, dan sebagainya.
Kasus penggunaan dan contoh
Mode proxy lokal berguna saat Anda hanya perlu mengaitkan satu proxy dengan instance Edge Microgateway. Misalnya, Anda dapat menyuntikkan Edge Microgateway ke Kubernetes sebagai proxy sidecar, dengan microgateway dan layanan masing-masing berjalan dalam satu pod, dan microgateway mengelola traffic ke dan dari layanan pendampingnya. Gambar berikut mengilustrasikan arsitektur ini dengan Edge Microgateway berfungsi sebagai proxy sidecar dalam cluster Kubernetes. Setiap instance microgateway hanya berkomunikasi dengan satu endpoint di layanan pendampingnya:

Manfaat dari gaya arsitektur ini adalah Edge Microgateway menyediakan pengelolaan API untuk setiap layanan yang di-deploy ke lingkungan container, seperti cluster Kubernetes.
Mengonfigurasi mode proxy lokal
Untuk mengonfigurasi Edge Microgateway agar berjalan dalam mode proxy lokal, ikuti langkah-langkah berikut:
- Jalankan
edgemicro inituntuk menyiapkan lingkungan konfigurasi lokal Anda, persis seperti yang Anda lakukan dalam penyiapan Edge Microgateway biasa. Lihat juga Mengonfigurasi Edge Microgateway. - Jalankan
edgemicro configure, seperti yang Anda lakukan dalam prosedur penyiapan Edge Microgateway biasa. Contoh:edgemicro configure -o your_org -e your_env -u your_apigee_username
Perintah ini men-deploy kebijakan edgemicro-auth ke Edge dan menampilkan kunci dan rahasia yang akan Anda perlukan untuk memulai microgateway. Jika Anda memerlukan bantuan, lihat Mengonfigurasi Edge Microgateway.
- Di Apigee Edge, buat produk API dengan persyaratan konfigurasi wajib berikut (Anda dapat mengelola semua konfigurasi lainnya sesuai keinginan):
- Anda harus menambahkan proxy edgemicro-auth ke produk. Proxy ini
di-deploy secara otomatis saat Anda menjalankan
edgemicro configure. - Anda harus memberikan jalur resource. Apigee merekomendasikan penambahan jalur ini ke
produk:
/**. Untuk mempelajari lebih lanjut, lihat Mengonfigurasi perilaku jalur resource. Lihat juga Membuat produk API dalam dokumentasi Edge.
- Anda harus menambahkan proxy edgemicro-auth ke produk. Proxy ini
di-deploy secara otomatis saat Anda menjalankan
Di Apigee Edge, buat developer, atau Anda dapat menggunakan developer yang sudah ada jika Anda mau. Untuk mendapatkan bantuan, lihat Menambahkan developer menggunakan UI pengelolaan Edge.
- Di Apigee Edge, buat aplikasi developer. Anda harus menambahkan produk API yang baru saja Anda buat ke aplikasi. Untuk mendapatkan bantuan, lihat Mendaftarkan aplikasi di UI pengelolaan Edge.
- Di komputer tempat Edge Microgateway diinstal, ekspor variabel lingkungan berikut dengan nilai "1".
export EDGEMICRO_LOCAL_PROXY=1
- Jalankan perintah
startberikut:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathDengan:
- your_org adalah organisasi Apigee Anda.
- your_environment adalah lingkungan di organisasi Anda.
- your_key adalah kunci yang ditampilkan saat Anda menjalankan
edgemicro configure. - your_secret adalah rahasia yang ditampilkan saat Anda menjalankan
edgemicro configure. - local_proxy_name adalah nama proxy lokal yang akan dibuat.
- local_proxy_version adalah nomor versi untuk proxy.
- target_url adalah URL untuk target proxy (layanan yang akan dipanggil proxy).
- base_path adalah jalur dasar proxy. Nilai ini harus diawali dengan garis miring. Untuk jalur dasar root, cukup tentukan garis miring; misalnya, "/".
Contoh:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
Menguji konfigurasi
Anda dapat menguji konfigurasi proxy lokal dengan memanggil endpoint proxy. Misalnya,
jika Anda menentukan basepath /echo, Anda dapat memanggil proxy sebagai berikut:
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}Panggilan API awal ini menghasilkan error karena Anda tidak memberikan kunci API yang valid. Anda dapat menemukan kunci di aplikasi Developer yang Anda buat sebelumnya. Buka aplikasi di UI Edge, salin Kunci Konsumen, dan gunakan kunci tersebut sebagai berikut:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
Contoh:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
Contoh output:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Menggunakan sinkronisasi
Bagian ini menjelaskan cara menggunakan sinkronisasi, fitur opsional yang meningkatkan ketahanan Edge Microgateway dengan memungkinkannya mengambil data konfigurasi dari Apigee Edge dan menuliskannya ke database Redis lokal. Dengan instance sinkronisasi yang berjalan, instance Edge Microgateway lainnya yang berjalan di node yang berbeda dapat mengambil konfigurasinya langsung dari database ini.
Fitur sinkronisasi saat ini didukung untuk bekerja dengan Redis 5.0.x.
Apa itu sinkronisasi?
Sinkronisasi memberikan tingkat ketahanan untuk Edge Microgateway. Hal ini membantu memastikan bahwa setiap instance Edge Microgateway menggunakan konfigurasi yang sama, dan bahwa jika terjadi gangguan internet, instance Edge Microgateway dapat dimulai dan berjalan dengan benar.
Secara default, instance Edge Microgateway harus dapat berkomunikasi dengan Apigee Edge untuk mengambil dan memperbarui data konfigurasinya, seperti konfigurasi produk API dan proxy API. Jika koneksi internet dengan Edge terganggu, instance microgateway dapat terus berfungsi karena data konfigurasi terbaru di-cache. Namun, instance microgateway baru tidak dapat dimulai tanpa koneksi yang jelas. Selain itu, gangguan internet dapat menyebabkan satu atau beberapa instance microgateway berjalan dengan informasi konfigurasi yang tidak sinkron dengan instance lainnya.
Sinkronisasi Edge Microgateway menyediakan mekanisme alternatif bagi instance Edge Microgateway untuk mengambil data konfigurasi yang diperlukan untuk memulai dan memproses traffic proxy API.
Data konfigurasi yang diambil dari panggilan ke Apigee Edge mencakup: panggilan jwk_public_keys,
panggilan jwt_public_key, panggilan bootstrap, dan panggilan produk API.
Sinkronisasi memungkinkan semua instance Edge Microgateway yang berjalan di berbagai node dimulai dengan benar dan tetap disinkronkan meskipun koneksi internet antara Edge Microgateway dan Apigee Edge terganggu.
Sinkronisasi adalah instance Edge Microgateway yang dikonfigurasi secara khusus. Tujuannya hanyalah untuk melakukan polling Apigee Edge (waktunya dapat dikonfigurasi), mengambil data konfigurasi, dan menulisnya ke database Redis lokal. Instance sinkronisasi itu sendiri tidak dapat memproses traffic proxy API. Instance Edge Microgateway lainnya yang berjalan di node yang berbeda dapat dikonfigurasi untuk mengambil data konfigurasi dari database Redis, bukan dari Apigee Edge. Karena semua instance microgateway menarik data konfigurasi dari database lokal, instance tersebut dapat dimulai dan memproses permintaan API meskipun terjadi gangguan internet.
Mengonfigurasi instance sinkronisasi
Tambahkan konfigurasi berikut ke file org-env/config.yaml untuk
penginstalan Edge Microgateway yang ingin Anda gunakan sebagai sinkronisasi:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
Contoh:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
| Opsi | Deskripsi |
|---|---|
redisHost |
Host tempat instance Redis Anda berjalan. Default: 127.0.0.1 |
redisPort |
Port instance Redis. Default: 6379 |
redisDb |
DB Redis yang akan digunakan. Default: 0 |
redisPassword |
Sandi database Anda. |
Terakhir, simpan file konfigurasi dan mulai instance Edge Microgateway. Proses ini akan mulai melakukan polling Apigee Edge dan menyimpan data konfigurasi yang didownload dalam database Redis.
Mengonfigurasi instance Edge Microgateway reguler
Dengan menjalankan sinkronisasi, Anda dapat mengonfigurasi node Edge Microgateway tambahan untuk menjalankan instance microgateway reguler yang memproses traffic proxy API. Namun, Anda mengonfigurasi instance ini untuk mendapatkan data konfigurasi dari database Redis, bukan dari Apigee Edge.
Tambahkan konfigurasi berikut ke file org-env/config.yaml setiap node Edge Microgateway tambahan. Perhatikan bahwa properti synchronizerMode
disetel ke 0. Properti ini menetapkan instance untuk beroperasi sebagai instance
Edge Microgateway normal yang memproses traffic proxy API, dan instance akan mendapatkan
data konfigurasinya dari database Redis.
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Contoh:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Properti konfigurasi
Properti konfigurasi berikut telah ditambahkan untuk mendukung penggunaan sinkronisasi:
| Atribut | Nilai | Deskripsi |
|---|---|---|
edge_config.synchronizerMode |
0 atau 1 | Jika 0 (default), Edge Microgateway beroperasi dalam mode standarnya. Jika 1, mulai instance Edge Microgateway untuk beroperasi sebagai penyinkronisasi. Dalam mode ini, instance akan menarik data konfigurasi dari Apigee Edge dan menyimpannya di database Redis lokal. Instance ini tidak dapat memproses permintaan proxy API; satu-satunya tujuannya adalah melakukan polling Apigee Edge untuk mendapatkan data konfigurasi dan menuliskannya ke database lokal. Kemudian, Anda harus mengonfigurasi instance microgateway lainnya untuk membaca dari database. |
edge_config.redisBasedConfigCache |
benar atau salah | Jika benar (true), instance Edge Microgateway mengambil data konfigurasinya dari
database Redis, bukan dari Apigee Edge. Database Redis harus sama dengan database yang dikonfigurasi untuk ditulis oleh sinkronisasi. Jika database Redis tidak tersedia atau
jika database kosong, microgateway akan mencari file cache-config.yaml yang ada
untuk konfigurasinya.
Jika salah (default), instance Edge Microgateway mengambil data konfigurasi dari Apigee Edge seperti biasa. |
edgemicro.config_change_poll_interval |
Interval waktu, dalam detik | Menentukan interval polling untuk sinkronisasi guna menarik data dari Apigee Edge. |
Mengonfigurasi URL yang dikecualikan untuk plugin
Anda dapat mengonfigurasi microgateway untuk melewati pemrosesan plugin untuk URL tertentu. Anda dapat mengonfigurasi URL "pengecualian" ini secara global (untuk semua plugin) atau untuk plugin tertentu.
Contoh:
...
edgemicro:
...
plugins:
excludeUrls: '/hello,/proxy_one' # global exclude urls
sequence:
- oauth
- json2xml
- quota
json2xml:
excludeUrls: '/hello/xml' # plugin level exclude urls
...
Dalam contoh ini, plugin tidak akan memproses panggilan proxy API masuk dengan
jalur /hello atau /proxy_one. Selain itu, plugin json2xml
akan dilewati untuk API dengan /hello/xml di jalur mereka.
Menetapkan atribut konfigurasi dengan nilai variabel lingkungan
Anda dapat menentukan variabel lingkungan menggunakan tag dalam file konfigurasi. Tag variabel lingkungan yang ditentukan diganti dengan nilai variabel lingkungan sebenarnya. Penggantian hanya disimpan dalam memori dan tidak disimpan dalam file konfigurasi atau cache asli.
Dalam contoh ini, atribut key diganti dengan nilai variabel lingkungan
TARGETS_SSL_CLIENT_KEY, dan seterusnya.
targets:
- ssl:
client:
key: <E>TARGETS_SSL_CLIENT_KEY</E>
cert: <E>TARGETS_SSL_CLIENT_CERT</E>
passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>
Dalam contoh ini, tag <n> digunakan untuk menunjukkan nilai bilangan bulat. Hanya bilangan bulat positif yang didukung.
edgemicro: port: <E><n>EMG_PORT</n></E>
Dalam contoh ini, tag <b> digunakan untuk menunjukkan nilai boolean (
yaitu, benar atau
salah).
quotas: useRedis: <E><b>EMG_USE_REDIS</b></E>