Service Extensions memungkinkan Load Balancer Aplikasi yang didukung menggunakan plugin untuk menyisipkan pemrosesan kustom di jalur pemrosesan. Ekstensi Edge berjalan di jalur pemrosesan permintaan saat load balancer menerima header permintaan dan sebelum mengevaluasi peta URL atau memanggil Cloud CDN, yang memungkinkan Anda memengaruhi caching dan perutean. Halaman ini menjelaskan cara mengonfigurasi ekstensi edge.
Untuk mengetahui ringkasan tentang ekstensi Load Balancer Aplikasi, lihat Ringkasan ekstensi Cloud Load Balancing.
Ekstensi untuk Load Balancer Aplikasi mengarah ke resource berikut:
- Aturan penerusan yang akan dilampirkan
- Plugin
Ekstensi mereferensikan aturan penerusan load balancer yang akan dilampirkan. Setelah Anda mengonfigurasi resource, load balancer akan mulai mengirim permintaan yang cocok ke layanan ekstensi. Anda hanya dapat melampirkan satu ekstensi tepi ke aturan penerusan dan menyertakan hanya satu plugin dalam rantai ekstensi tepi.
Untuk mengetahui informasi tentang batas yang terkait dengan ekstensi Load Balancer Aplikasi, lihat halaman Kuota dan batas.
Mengonfigurasi menggunakan plugin
Bagian ini menggunakan contoh untuk menunjukkan cara mengonfigurasi ekstensi edge dengan
menggunakan plugin yang menulis ulang header permintaan :host menjadi
service-extensions.com saat jalur cocok dengan /extensions. Host sebelumnya
dan host yang baru dikonfigurasi dipetakan ke layanan backend di berbagai
region, yang menunjukkan perilaku perutean.
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 edge.
Ikuti petunjuk di halaman Menyiapkan Load Balancer Aplikasi eksternal global dengan backend grup instance VM untuk semua langkah, kecuali langkah berikut:
- Beri nama layanan backend sebagai
service-one. - Arahkan
service-oneke instance virtual machine (VM) di regionA. - Arahkan
gl7-gxlb-url-mapkeservice-onesecara default.
- Beri nama layanan backend sebagai
Siapkan layanan backend tambahan,
service-two, dan arahkan ke VM di regionB.Ke peta URL, tambahkan pencocok jalur yang mengarah ke
service-two. Gunakan perintahgcloud compute url-maps add-path-matcherdengan nilai sampel berikut:gcloud compute url-maps add-path-matcher gl7-gxlb-url-map \ --path-matcher-name=rewrite-host \ --default-service=service-two \ --new-hosts=service-extensions.com \ --location=globalSiapkan cara untuk mengirim permintaan pengujian ke layanan Anda (misalnya, dengan menjalankan curl).
Mengonfigurasi ekstensi edge menggunakan plugin
Periksa perilaku sebelum ekstensi dikonfigurasi.
Verifikasi bahwa permintaan tanpa jalur eksplisit akan menuju region
A:curl FORWARDING_RULE_IP
Ganti
FORWARDING_RULE_IPdengan alamat IP aturan penerusan. Untuk menemukan alamat IP, gunakan perintahgcloud compute forwarding-rules describe.Outputnya mirip dengan berikut ini dan menunjukkan bahwa halaman ditayangkan dari VM di
region A:Page served from region-A-vmPastikan tidak ada kecocokan untuk
/extensionsdi peta URL:curl FORWARDING_RULE_IP/extensions
Ganti
FORWARDING_RULE_IPdengan alamat IP aturan penerusan. Untuk menemukan alamat IP, gunakan perintahgcloud compute forwarding-rules describe.Output menunjukkan bahwa tidak ada kecocokan untuk
/extensionsdalam peta URL. Outputnya mirip dengan hal berikut ini:<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> ...
Konfigurasi ekstensi edge.
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 Load Balancer Aplikasi yang didukung akan muncul.
Untuk jenis load balancer, pilih Load Balancer Aplikasi eksternal global. Kemudian, klik Lanjutkan.
Untuk jenis ekstensi, pilih Ekstensi Edge, lalu klik Lanjutkan.
Untuk membuka formulir Buat ekstensi, klik Lanjutkan.
Di formulir Buat ekstensi, perhatikan bahwa pilihan sebelumnya 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 maksimum 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 Aturan penerusan, pilih satu atau beberapa aturan penerusan untuk dikaitkan dengan ekstensi—misalnya,
cr-xlb-forwarding-rule.Aturan penerusan yang sudah dikaitkan dengan ekstensi lain tidak dapat dipilih dan tampak dinonaktifkan.
Untuk Rantai ekstensi, tambahkan satu atau beberapa rantai ekstensi untuk dieksekusi untuk permintaan yang cocok.
Untuk menambahkan rangkaian ekstensi, lakukan langkah-langkah berikut, lalu klik Selesai:
Untuk Rantai ekstensi baru, tentukan nama unik.
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.
Untuk mencocokkan permintaan yang rantai ekstensinya dieksekusi, untuk Kondisi kecocokan, tentukan ekspresi Common Expression Language (CEL) —misalnya,
request.path.startsWith("/extensions").Ekstensi Edge memungkinkan Anda menggunakan hanya satu ekspresi reguler per ekspresi CEL.
Untuk mengetahui informasi selengkapnya tentang ekspresi CEL, klik Dapatkan bantuan sintaksis atau lihat referensi bahasa pencocokan CEL.
Tambahkan ekstensi yang akan dieksekusi untuk permintaan yang cocok. Untuk ekstensi edge, Anda hanya dapat menentukan satu ekstensi.
Di bagian Ekstensi, lakukan tindakan berikut, lalu klik Selesai:
Untuk Programmability type, pilih Plugins.
Untuk Nama ekstensi, tentukan nama unik.
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 berupa huruf atau angka.
Untuk Plugin, pilih plugin yang dibuat menggunakan Ekstensi Layanan untuk produk dan jenis ekstensi yang sama.
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: Untuk Fail open, jika Anda ingin ekstensi gagal terbuka, pilih Aktif. Dalam hal ini, jika panggilan ke ekstensi gagal atau waktunya habis, pemrosesan permintaan atau respons akan berlanjut tanpa error. Ekstensi berikutnya dalam rantai ekstensi juga dijalankan.
Secara default, kolom Fail open tidak dipilih. Dalam kasus ini, jika header respons belum dikirimkan ke klien hilir, kode status HTTP
500umum akan dikembalikan ke klien. Jika header respons telah dikirimkan, aliran HTTP ke klien downstream akan direset.
Klik Buat ekstensi.
gcloud
Tentukan plugin dalam file YAML dan kaitkan dengan aturan penerusan global—misalnya,
cr-xlb-forwarding-rule.cat >edge-plugin.yaml <<EOF name: edge-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/global/forwardingRules/cr-xlb-forwarding-rule loadBalancingScheme: EXTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.path.startsWith("/extensions")' extensions: - name: 'ext1' service: projects/PROJECT_ID/locations/global/wasmPlugins/WASM_PLUGIN failOpen: false supportedEvents: - REQUEST_HEADERS EOFGanti kode berikut:
PROJECT_ID: project IDWASM_PLUGIN: ID atau nama plugin yang sepenuhnya memenuhi syarat
Ekstensi Edge memungkinkan Anda menggunakan hanya satu ekspresi reguler per ekspresi CEL.
Impor ekstensi edge. Gunakan perintah
gcloud service-extensions lb-edge-extensions importdengan nilai sampel berikut:gcloud service-extensions lb-edge-extensions import edge-ext \ --source=edge-plugin.yaml \ --location=global
Setelah ekstensi tepi 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 edge berfungsi seperti yang diharapkan, gunakan perintah
curlyang sama:curl FORWARDING_RULE_IP/extensions
Outputnya mirip dengan berikut ini dan menunjukkan bahwa halaman ditayangkan dari VM di
region B:Page served from region-B-vmUntuk memverifikasi bahwa plugin hanya berjalan untuk permintaan dengan awalan jalur
/extension, ulangi perintahcurltanpa jalur.curl FORWARDING_RULE_IP
Outputnya mirip dengan hal berikut ini:
Page served from region-A-vm
Batasan untuk ekstensi Edge
- Anda hanya dapat melampirkan satu ekstensi tepi ke aturan penerusan.
- Ekstensi Edge tidak mendukung pemrosesan isi HTTP.
- Ekstensi Edge memungkinkan Anda menggunakan hanya satu ekspresi reguler per ekspresi CEL.
Untuk batasan yang berlaku untuk semua ekstensi, lihat Batasan untuk ekstensi.
Langkah berikutnya
- Lihat contoh plugin Rust, Go, dan C++ serta alat pengujian di repositori GitHub Service Extensions untuk plugin.
- Mengelola ekstensi