Halaman ini memberikan informasi ringkasan tentang integrasi plugin dengan Load Balancer Aplikasi Cloud Load Balancing dan Media CDN.
Fitur ini berada dalam Pratinjau untuk Media CDN.
Plugin dibuat menggunakan format WebAssembly (Wasm) dan menggunakan API Proxy-Wasm.
Wasm adalah format instruksi biner terbuka dan standar yang memungkinkan host memuat dan menjalankan modul Wasm dengan kode yang disediakan pelanggan. Wasm memiliki sejumlah manfaat untuk mengeksekusi kode pelanggan, termasuk sandboxing untuk keamanan, dukungan untuk beberapa bahasa, portabilitas, dukungan yang luas dan terus berkembang dalam industri, dan peningkatan performa dibandingkan dengan opsi berbasis VM lainnya seperti JavaScript.
Proxy-Wasm adalah project open source yang dimulai oleh Google. API ini menentukan API yang memungkinkan Anda menyesuaikan perilaku proxy jaringan dengan menerapkan callback yang akan dieksekusi selama pemrosesan permintaan dan respons HTTP.
Cara kerja plugin
Anda dapat menggunakan Service Extensions dengan Load Balancer Aplikasi dan Media CDN sebagai berikut:
Siapkan kode plugin sebagai berikut:
Buat plugin yang berisi kode plugin yang diupload.
Konfigurasi plugin di ekstensi Cloud Load Balancing atau ekstensi Media CDN.
Resource plugin
Ekstensi Layanan membantu Anda membuat resource utama berikut yang membantu Anda menambahkan kode kustom di jalur pemrosesan:
Plugin, yang berisi kode kustom yang ingin Anda deploy.
Versi plugin, yang merupakan versi modul Wasm Anda. Anda dapat menunjukkan versi modul Wasm yang akan digunakan plugin sebagai versi utama (aktif).
Batasan
Bagian ini mencantumkan beberapa batasan terkait plugin.
Batasan pada resource
Plugin dibatasi secara ketat dalam jumlah resource yang dapat digunakan:
Plugin dapat menggunakan hingga 1 mdtk vCPU yang dinormalisasi per pemanggilan. Milidetik CPU bergantung pada platform, tetapi platform yang dinormalisasi kira-kira setara dengan prosesor dengan kecepatan clock 4 GHz. Pemanggilan adalah fase eksekusi yang ditagih secara terpisah, yang dapat berupa header permintaan, isi permintaan, header respons, atau isi respons.
Plugin dapat menggunakan memori hingga 16 MiB per instance VM. Instance harus dapat melayani hingga 1.000 permintaan serentak, yang berarti plugin dapat menyimpan hingga 16 KiB memori per streaming. Perlu diingat bahwa total penggunaan memori mencakup alokasi stack dan status global.
Gunakan penguji plugin untuk mengukur karakteristik CPU dan memori plugin.
Batasan pada API
Plugin dapat menggunakan sebagian ABI Proxy-Wasm. Plugin tidak mendukung timer, metrik kustom, data bersama, antrean bersama, atau panggilan jaringan keluar.
Peristiwa trailer HTTP tidak didukung.
Batasan manipulasi header
Ukuran maksimum mutasi (header atau potongan isi) adalah 128 KiB.
Plugin tidak dapat mengganti mode pemrosesan aliran
ext_proc.Manipulasi header melalui plugin tidak didukung untuk beberapa header. Prosesor mengabaikan modifikasi apa pun di header ini, dan terus memproses permintaan.
Untuk plugin Media CDN, berikut tidak didukung:
- Header:
CDN-Loop,connection,keep-alive,proxy-authenticate,proxy-authorization,proxy-connection,te,trailers,transfer-encoding,upgrade, atauX-user-IP. - Header yang dimulai dengan:
x-forwarded,x-goog-,x-google,x-gfe, ataux-amz-.
Untuk plugin Cloud Load Balancing, berikut ini tidak didukung:
Header:
connection,keep-alive,proxy-authenticate,proxy-authorization,proxy-connection,sec-user-ip,te,trailer,transfer-encoding,upgrade,x-dont-count-ads,x-dont-show-ads,x-gr,x-proxyuser-ip, ataux-user-ip.Selain itu, untuk
LbTrafficExtension, header ini juga tidak didukung:method,authority,scheme, atau header host.Header yang dimulai dengan:
sec-gfe-,sec-google-,x-amz-,x-forwarded-,x-gfe-,x-goog-,x-google-, ataux-gproxy-.
- Header:
Batasan dengan klien dan backend HTTP/1.1
Saat Anda mengonfigurasi REQUEST_BODY atau RESPONSE_BODY untuk ekstensi, jika load balancer menerima permintaan yang cocok, load balancer akan menghapus header Content-Length dari respons dan beralih ke encoding isi yang di-chunk.