Ringkasan plugin

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:

  1. Siapkan kode plugin sebagai berikut:

    1. Buat kode kustom menggunakan salah satu SDK Proxy-Wasm:

    2. Kompilasi kode Anda ke dalam modul Wasm.

    3. Upload kode plugin yang dikompilasi ke repositori Artifact Registry.

  2. Buat plugin yang berisi kode plugin yang diupload.

  3. 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, atau X-user-IP.
    • Header yang dimulai dengan: x-forwarded, x-goog-,x-google, x-gfe, atau x-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, atau x-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-, atau x-gproxy-.

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.

Langkah berikutnya