Service Extensions memungkinkan Load Balancer Aplikasi yang didukung menggunakan plugin atau mengirimkan callout ke layanan backend untuk menyisipkan pemrosesan kustom di jalur pemrosesan. Ekstensi traffic dijalankan terakhir di jalur pemrosesan permintaan dan pertama di jalur pemrosesan respons untuk mengubah header dan payload tanpa memengaruhi pilihan layanan backend. Halaman ini menjelaskan cara mengonfigurasi ekstensi info lalu lintas.
Untuk mengetahui ringkasan tentang ekstensi Load Balancer Aplikasi, lihat Ringkasan ekstensi Cloud Load Balancing.
Ekstensi traffic untuk Load Balancer Aplikasi mengarah ke resource berikut:
- Aturan penerusan yang akan dilampirkan
- Plugin atau layanan backend callout yang backend-nya menjalankan gRPC API
ext_proc
Ekstensi traffic mengelompokkan layanan ekstensi terkait ke dalam satu atau beberapa rantai. Anda dapat mengonfigurasi plugin dan info dalam rantai ekstensi yang sama. Setiap rantai ekstensi memilih traffic yang akan ditindaklanjuti menggunakan kondisi kecocokan Common Expression Language (CEL). Load balancer mengevaluasi permintaan terhadap kondisi kecocokan setiap rantai secara berurutan. Jika permintaan cocok dengan kondisi yang ditentukan oleh rantai, semua ekstensi dalam rantai akan bertindak berdasarkan permintaan tersebut. Hanya ada satu rantai yang cocok dengan permintaan tertentu.
Setiap ekstensi dalam rantai dapat memiliki serangkaian peristiwa yang didukungnya sendiri. Modifikasi yang dilakukan oleh ekstensi pada konten permintaan dan respons terlihat oleh ekstensi lainnya dalam rantai. Untuk ekstensi yang dikonfigurasi untuk mendukung peristiwa respons, urutan ekstensi dibalik pada jalur respons.
Ekstensi traffic mereferensikan aturan penerusan load balancer yang akan dilampirkan. Setelah Anda mengonfigurasi resource, load balancer akan mulai mengirim permintaan yang cocok ke layanan ekstensi.
Untuk mengetahui informasi tentang batas yang terkait dengan ekstensi, lihat halaman Kuota dan batas.
Mengonfigurasi menggunakan plugin
Bagian ini menunjukkan cara mengonfigurasi ekstensi traffic menggunakan plugin.
Semua resource ekstensi yang mereferensikan plugin tertentu harus memiliki jenis yang sama. Ekstensi juga harus memiliki skema load balancing yang sama. Anda tidak dapat mengonfigurasi ekstensi Cloud Load Balancing dengan plugin yang sudah digunakan dalam ekstensi Media CDN.
Sebelum memulai
Buat plugin yang berisi kode kustom Anda.
Buat dan konfigurasi Load Balancer Aplikasi yang mendukung plugin ekstensi traffic.
Misalnya, menyiapkan Load Balancer Aplikasi eksternal global dengan backend grup instance VM.
Siapkan cara untuk mengirim permintaan pengujian ke layanan Anda—misalnya, dengan menjalankan curl. Jika Anda menggunakan load balancer internal, buat VM klien untuk pengujian.
Mengonfigurasi ekstensi traffic menggunakan plugin
Contoh berikut membantu Anda mengonfigurasi ekstensi traffic menggunakan plugin
yang menambahkan header respons, hello: service-extensions, saat host cocok dengan
example.com.
Periksa apakah ada kecocokan untuk
example.comdi peta URL.Jalankan perintah
curlberikut terhadap aturan penerusan di VM klien:curl -D - -H "host: example.com" FORWARDING_RULE_IP
Ganti
FORWARDING_RULE_IPdengan alamat IP aturan penerusan. Untuk menemukan alamat IP, gunakan perintahgcloud compute forwarding-rules describe.Outputnya mirip dengan hal berikut ini:
HTTP/1.1 200 OK ... content-length: 46 content-type: text/html via: 1.1 google
Konfigurasi ekstensi traffic.
Konsol
Di konsol Google Cloud , buka halaman Service Extensions.
Klik Buat ekstensi.
Wizard akan terbuka untuk memandu Anda melalui beberapa langkah awal.
Untuk produk, pilih Load Balancing. Kemudian, klik Lanjutkan.
Daftar Application Load Balancer yang didukung akan muncul.
Untuk jenis load balancer, pilih Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi internal lintas-region. Kemudian, klik Lanjutkan.
Untuk jenis ekstensi, pilih Ekstensi lalu lintas, lalu klik Lanjutkan.
Untuk membuka formulir Buat ekstensi, klik Lanjutkan.
Di formulir Buat ekstensi, perhatikan bahwa pilihan sebelumnya, yang muncul di bagian atas halaman, tidak dapat diedit.
Di bagian Dasar-Dasar, lakukan hal berikut:
Tentukan nama unik untuk ekstensi.
Nama harus dimulai dengan huruf kecil, diikuti dengan maksimal 62 huruf kecil, angka, atau tanda hubung, dan tidak boleh diakhiri dengan tanda hubung.
Opsional: Masukkan deskripsi singkat tentang ekstensi menggunakan hingga 1.024 karakter.
Opsional: Di bagian Labels, klik Add label. Kemudian, di baris yang muncul, lakukan hal berikut:
- Untuk Key, masukkan nama kunci.
- Untuk Nilai, masukkan nilai untuk kunci.
Untuk menambahkan lebih banyak pasangan nilai kunci, klik Tambahkan label. Anda dapat menambahkan maksimum 64 pasangan nilai kunci.
Untuk mengetahui informasi selengkapnya tentang label, lihat Membuat dan memperbarui label untuk project.
Untuk Forwarding rules, pilih satu atau beberapa aturan penerusan untuk dikaitkan dengan ekstensi—misalnya,
http-content-rule.Aturan penerusan yang sudah dikaitkan dengan ekstensi lain tidak dapat dipilih dan akan tampak tidak tersedia.
Untuk Extension, guna menambahkan ekstensi yang akan dieksekusi untuk permintaan yang cocok, lakukan hal berikut:
Untuk mencocokkan permintaan yang rantai ekstensinya dieksekusi, untuk Kondisi kecocokan, tentukan ekspresi Common Expression Language (CEL) —misalnya,
request.host == "example.com".Untuk mengetahui informasi selengkapnya tentang ekspresi CEL, klik Dapatkan bantuan sintaksis atau lihat referensi bahasa pencocokan CEL.
Untuk Programmability type, pilih Plugins.
Untuk Plugin, pilih plugin yang dibuat menggunakan Service Extensions untuk produk dan jenis ekstensi yang sama.
Untuk Events, pilih satu atau beberapa jenis peristiwa HTTP yang memanggil ekstensi.
Untuk Forward attributes, pilih atribut permintaan, koneksi, dan lokasi yang ingin Anda teruskan oleh load balancer ke plugin Wasm Anda. Anda dapat mengonfigurasi maksimal 16 atribut untuk setiap ekstensi. Untuk mengetahui informasi selengkapnya, lihat Atribut yang didukung.
Untuk Teruskan header, klik Tambahkan header, lalu tambahkan header HTTP untuk diteruskan ke ekstensi (dari klien atau backend). Jika header tidak ditentukan, semua header akan dikirim.
Opsional: Jika waktu tunggu ekstensi habis atau gagal dan Anda ingin pemrosesan permintaan atau respons dilanjutkan, untuk Buka jika gagal, pilih Diaktifkan. Ekstensi berikutnya dalam rantai juga dieksekusi.
Secara default, opsi Fail open tidak dipilih. Dalam kasus ini, jika terjadi error, pemrosesan permintaan atau respons berhenti. Jika header respons belum dikirimkan ke klien hilir, kode status HTTP
500umum akan ditampilkan ke klien. Jika header respons telah dikirimkan, aliran HTTP ke klien akan direset.Opsi default untuk membiarkan Fail open tidak dipilih lebih disukai saat memprioritaskan keamanan atau integritas. Mengaktifkan Fail open, terutama untuk operasi non-kritis, akan membantu saat memprioritaskan ketersediaan.
Jika Anda ingin menentukan lebih dari satu ekstensi atau rangkaian ekstensi, bukan satu ekstensi, klik tombol Beralih ke mode lanjutan di akhir formulir dan tentukan ekstensi dan rangkaian yang diperlukan. Ekstensi dijalankan sesuai urutan pencantumannya.
Tentukan nama unik untuk setiap ekstensi dan rangkaian ekstensi. Nama harus sesuai dengan RFC-1034, hanya menggunakan huruf kecil, angka, dan tanda hubung, serta memiliki panjang maksimum 63 karakter. Selain itu, karakter pertama harus berupa huruf dan karakter terakhir harus berupa huruf atau angka.
Klik Buat ekstensi.
gcloud
Tentukan plugin dalam file YAML dan kaitkan dengan aturan penerusan—misalnya,
http-content-rule.cat >traffic-plugin.yaml <<EOF name: traffic-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/http-content-rule loadBalancingScheme: EXTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.host == "example.com"' extensions: - name: 'ext1' service: projects/PROJECT_ID/locations/LOCATION/wasmPlugins/WASM_PLUGIN failOpen: false supportedEvents: - RESPONSE_HEADERS forwardAttributes: - request.host - request.path EOFGanti kode berikut:
PROJECT_ID: Project ID.REGION: region aturan penerusan. Nilai harus cocok dengan nilai yang ditentukan untuk lokasi plugin.LOCATION: lokasi plugin sebagaiglobalatau region.WASM_PLUGIN: ID atau nama plugin yang sepenuhnya memenuhi syarat.
Untuk mengetahui informasi selengkapnya tentang kolom dalam file YAML, lihat ExtensionChain dalam dokumentasi API.
Kolom
forwardAttributesmemungkinkan Anda menentukan atribut permintaan, koneksi, dan lokasi yang dapat Anda teruskan ke plugin Wasm. Anda dapat mengonfigurasi maksimal 16 atribut untuk setiap ekstensi. Untuk mengetahui informasi selengkapnya tentang atribut yang didukung, lihat Atribut yang didukung.Impor ekstensi traffic. Gunakan perintah
gcloud service-extensions lb-traffic-extensions importdengan nilai contoh berikut.gcloud service-extensions lb-traffic-extensions import traffic-ext \ --source=traffic-plugin.yaml \ --location=global
Setelah ekstensi traffic dibuat, perlu waktu beberapa saat agar plugin baru didistribusikan ke semua lokasi. Waktu dapat bervariasi di berbagai lokasi karena plugin tidak dikirimkan ke semua lokasi secara bersamaan.
Untuk memverifikasi bahwa ekstensi traffic berfungsi seperti yang diharapkan, gunakan perintah
curlyang sama:curl -D - -H "host: example.com" FORWARDING_RULE_IP
Output mencakup header respons
hello: service-extensions.HTTP/1.1 200 OK ... content-length: 46 content-type: text/ hello: service-extensions via: 1.1 googleUntuk memvalidasi bahwa ekstensi hanya menargetkan traffic
example.com, ulangi perintahcurltanpa headerhost.curl -D - FORWARDING_RULE_IP
Outputnya mirip dengan hal berikut ini:
HTTP/1.1 200 OK ... content-length: 46 content-type: text/html via: 1.1 google
Mengonfigurasi ekstensi traffic ke layanan yang dikelola pengguna menggunakan info
Bagian ini menunjukkan cara mengonfigurasi ekstensi traffic ke layanan backend teks promosi yang dikelola pengguna menggunakan teks promosi.
Sebelum memulai
Buat resource yang diperlukan seperti yang dijelaskan dalam Mengonfigurasi layanan backend teks singkat.
Mengonfigurasi ekstensi info lalu lintas menggunakan info
Contoh berikut membantu Anda mengonfigurasi ekstensi traffic menggunakan
callout yang akan dipanggil saat host cocok dengan example.com. Server ekstensi traffic
di callout-vm menambahkan header respons, hello: service-extensions,
ke permintaan yang cocok.
Periksa apakah ada kecocokan untuk
example.comdi peta URL.Jalankan perintah
curlberikut terhadap aturan penerusan di VM klien:curl -D - -H "host: example.com" FORWARDING_RULE_IP
Ganti
FORWARDING_RULE_IPdengan alamat IP aturan penerusan. Untuk menemukan alamat IP, gunakan perintahgcloud compute forwarding-rules describe.Outputnya mirip dengan hal berikut ini:
HTTP/1.1 200 OK ... content-length: 46 content-type: text/html via: 1.1 google Page served from: l7-ilb-backend-example-1c7t
Konfigurasi ekstensi traffic.
Konsol
Di konsol Google Cloud , buka halaman Service Extensions.
Klik Buat ekstensi.
Wizard akan terbuka untuk memandu Anda melalui beberapa langkah awal.
Untuk produk, pilih Load Balancing. Kemudian, klik Lanjutkan.
Daftar Application Load Balancer yang didukung akan muncul.
Pilih jenis load balancer. Untuk load balancer regional, tentukan juga region. Klik Lanjutkan.
Untuk jenis ekstensi, pilih Ekstensi lalu lintas, lalu klik Lanjutkan.
Untuk membuka formulir Buat ekstensi, klik Lanjutkan.
Di formulir Buat ekstensi, perhatikan bahwa pilihan sebelumnya, yang muncul di bagian atas halaman, tidak dapat diedit.
Di bagian Dasar-Dasar, lakukan hal berikut:
Tentukan nama unik untuk ekstensi.
Nama harus dimulai dengan huruf kecil, diikuti dengan maksimal 62 huruf kecil, angka, atau tanda hubung, dan tidak boleh diakhiri dengan tanda hubung.
Opsional: Masukkan deskripsi singkat tentang ekstensi menggunakan hingga 1.024 karakter.
Opsional: Di bagian Labels, klik Add label. Kemudian, di baris yang muncul, lakukan hal berikut:
- Untuk Key, masukkan nama kunci.
- Untuk Nilai, masukkan nilai untuk kunci.
Untuk menambahkan lebih banyak pasangan nilai kunci, klik Tambahkan label. Anda dapat menambahkan maksimum 64 pasangan nilai kunci.
Untuk mengetahui informasi selengkapnya tentang label, lihat Membuat dan memperbarui label untuk project.
Untuk Forwarding rules, pilih satu atau beberapa aturan penerusan untuk dikaitkan dengan ekstensi—misalnya,
l7-ilb-forwarding-rule.Aturan penerusan yang sudah dikaitkan dengan ekstensi lain tidak dapat dipilih dan akan tampak tidak tersedia.
Untuk Extension, guna menambahkan ekstensi yang akan dieksekusi untuk permintaan yang cocok, lakukan hal berikut:
Untuk Jenis kemampuan pemrograman, pilih Info tambahan.
Untuk mencocokkan permintaan yang rantai ekstensinya dieksekusi, untuk Kondisi kecocokan, tentukan ekspresi Common Expression Language (CEL) —misalnya,
request.host == "example.com".Untuk mengetahui informasi selengkapnya tentang ekspresi CEL, klik Dapatkan bantuan sintaksis atau lihat referensi bahasa pencocokan CEL.
Untuk Otoritas, masukkan header
authoritydari permintaan gRPC yang dikirim dari load balancer ke layanan ekstensi.Untuk Backend service, pilih layanan backend yang dibuat dengan mengikuti petunjuk di Mengonfigurasi layanan backend callout.
Untuk Waktu tunggu, tentukan nilai antara 10 dan 1.000 milidetik setelah pesan di streaming berakhir.
Untuk Events, pilih satu atau beberapa jenis peristiwa HTTP yang memanggil ekstensi.
Untuk Teruskan atribut, pilih atribut permintaan, koneksi, dan lokasi yang ingin Anda teruskan oleh load balancer ke layanan info Anda. Anda dapat mengonfigurasi maksimal 16 atribut untuk setiap ekstensi. Untuk mengetahui informasi selengkapnya, lihat Atribut yang didukung.
Untuk Teruskan header, klik Tambahkan header, lalu tambahkan header HTTP untuk diteruskan ke ekstensi (dari klien atau backend). Jika header tidak ditentukan, semua header akan dikirim.
Opsional: Jika waktu tunggu ekstensi habis atau gagal dan Anda ingin pemrosesan permintaan atau respons dilanjutkan, untuk Buka jika gagal, pilih Diaktifkan. Ekstensi berikutnya dalam rantai juga dieksekusi.
Secara default, opsi Fail open tidak dipilih. Dalam kasus ini, jika terjadi error, pemrosesan permintaan atau respons berhenti. Jika header respons belum dikirimkan ke klien hilir, kode status HTTP
500umum akan ditampilkan ke klien. Jika header respons telah dikirimkan, aliran HTTP ke klien akan direset.Opsi default untuk membiarkan Fail open tidak dipilih lebih disukai saat memprioritaskan keamanan atau integritas. Mengaktifkan Fail open, terutama untuk operasi non-kritis, akan membantu saat memprioritaskan ketersediaan.
Untuk Metadata, klik Tambahkan metadata dan tentukan nilai contoh seperti yang disarankan. Untuk Key, tentukan
key, dan untuk Value, tentukanvalue.Klik Tambahkan metadata untuk menambahkan pasangan nilai kunci lainnya. Untuk Key, tentukan
fr, dan untuk Value, tentukanforwarding_rule_id.Kolom Metadata memungkinkan Anda meneruskan informasi tambahan dari load balancer ke server ekstensi. Metadata dikirim dalam pesan
ProcessingRequestdan dienkode sebagaiprotobuf.Struct. Teks apa pun dalam metadata yang cocok dengan ID aturan penerusan yang ditentukan akan diganti dengan URL resource yang sepenuhnya memenuhi syarat dari aturan penerusan yang terkait dengan permintaan klien.Total ukuran metadata harus kurang dari 1 KiB. Jumlah total kunci dalam metadata tidak boleh lebih dari 20. Panjang setiap kunci harus kurang dari 64 karakter. Panjang setiap nilai harus kurang dari 1.024 karakter. Semua nilai harus berupa string.
Jika Anda ingin menentukan lebih dari satu ekstensi atau rangkaian ekstensi, bukan satu ekstensi, klik tombol Beralih ke mode lanjutan di akhir formulir dan tentukan ekstensi dan rangkaian yang diperlukan. Ekstensi dijalankan sesuai urutan pencantumannya.
Tentukan nama unik untuk setiap ekstensi dan rangkaian ekstensi. Nama harus sesuai dengan RFC-1034, hanya menggunakan huruf kecil, angka, dan tanda hubung, serta memiliki panjang maksimum 63 karakter. Selain itu, karakter pertama harus berupa huruf dan karakter terakhir harus berupa huruf atau angka.
Klik Buat ekstensi.
gcloud
Tentukan balon teks dalam file YAML dan kaitkan dengan aturan penerusan. Gunakan nilai sampel yang diberikan.
cat >traffic.yaml <<EOF name: traffic-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule loadBalancingScheme: INTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.host == "example.com"' extensions: - name: 'ext11' authority: ext11.com service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-callout-service failOpen: false timeout: 0.1s metadata: "key": "value" "fr": "forwarding_rule_id" supportedEvents: - RESPONSE_HEADERS forwardAttributes: - request.host - request.path EOFGanti
PROJECT_IDdengan project ID.Kolom
metadatadalam konfigurasi ekstensi memungkinkan Anda meneruskan informasi tambahan dari load balancer ke server ekstensi. Metadata dikirim dalam pesanProcessingRequestdan dienkode sebagaiprotobuf.Struct. Teks apa pun dalam metadata yang cocok dengan ID aturan penerusan yang ditentukan diganti dengan URL resource yang sepenuhnya memenuhi syarat dari aturan penerusan yang terkait dengan permintaan klien.Ukuran total
metadataharus kurang dari 1 KiB. Jumlah total kunci dalam metadata harus kurang dari 16. Panjang setiap kunci harus kurang dari 64 karakter. Panjang setiap nilai harus kurang dari 1.024 karakter. Semua nilai harus berupa string.Untuk mengetahui informasi selengkapnya tentang kolom dalam file YAML, lihat ExtensionChain dalam dokumentasi API.
Kolom
forwardAttributesmemungkinkan Anda menentukan atribut permintaan, koneksi, dan lokasi untuk diteruskan ke layanan info promo Anda. Anda dapat mengonfigurasi maksimal 16 atribut untuk setiap ekstensi. Untuk mengetahui informasi selengkapnya tentang atribut yang didukung, lihat Atribut yang didukung.Impor ekstensi traffic. Gunakan perintah
gcloud service-extensions lb-traffic-extensions importdengan nilai contoh berikut.gcloud service-extensions lb-traffic-extensions import traffic-ext \ --source=traffic.yaml \ --location=us-west1
Pastikan ekstensi traffic berfungsi seperti yang diharapkan. Gunakan perintah
curlyang sama:curl -D - -H "host: example.com" FORWARDING_RULE_IP
Output mencakup header respons
hello: service-extensions.HTTP/1.1 200 OK ... content-length: 46 content-type: text/ hello: service-extensions via: 1.1 google Page served from: l7-ilb-backend-example-1c7tUntuk memvalidasi bahwa ekstensi hanya menargetkan traffic
example.com, ulangi perintahcurltanpa headerhost.curl -D - FORWARDING_RULE_IP
Outputnya mirip dengan hal berikut ini:
HTTP/1.1 200 OK ... content-length: 46 content-type: text/html via: 1.1 google Page served from: l7-ilb-backend-example-1c7t
Langkah berikutnya
- Lihat contoh plugin Rust, Go, dan C++ serta alat pengujian di repositori GitHub Service Extensions untuk plugin.
- Lihat contoh server
ext_procPython dan Go di repositori GitHub Service Extensions untuk info tambahan. - Mengonfigurasi ekstensi rute
- Mengelola ekstensi
- Mengelola plugin
- Mengonfigurasi ekstensi ke layanan Google