Mengonfigurasi ekstensi tepi

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

  1. Buat plugin yang berisi kode kustom Anda.

  2. 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-one ke instance virtual machine (VM) di region A.
    • Arahkan gl7-gxlb-url-map ke service-one secara default.
  3. Siapkan layanan backend tambahan, service-two, dan arahkan ke VM di region B.

  4. Ke peta URL, tambahkan pencocok jalur yang mengarah ke service-two. Gunakan perintah gcloud compute url-maps add-path-matcher dengan 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=global
    
  5. Siapkan cara untuk mengirim permintaan pengujian ke layanan Anda (misalnya, dengan menjalankan curl).

Mengonfigurasi ekstensi edge menggunakan plugin

  1. Periksa perilaku sebelum ekstensi dikonfigurasi.

    1. Verifikasi bahwa permintaan tanpa jalur eksplisit akan menuju region A:

      curl FORWARDING_RULE_IP
      

      Ganti FORWARDING_RULE_IP dengan alamat IP aturan penerusan. Untuk menemukan alamat IP, gunakan perintah gcloud compute forwarding-rules describe.

      Outputnya mirip dengan berikut ini dan menunjukkan bahwa halaman ditayangkan dari VM di region A:

      Page served from region-A-vm
      
    2. Pastikan tidak ada kecocokan untuk /extensions di peta URL:

      curl FORWARDING_RULE_IP/extensions
      

      Ganti FORWARDING_RULE_IP dengan alamat IP aturan penerusan. Untuk menemukan alamat IP, gunakan perintah gcloud compute forwarding-rules describe.

      Output menunjukkan bahwa tidak ada kecocokan untuk /extensions dalam 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>
      ...
      
  2. Konfigurasi ekstensi edge.

    Konsol

    1. Di konsol Google Cloud , buka halaman Service Extensions.

      Buka Ekstensi Layanan

    2. Klik Buat ekstensi.

      Wizard akan terbuka untuk memandu Anda melalui beberapa langkah awal.

    3. Untuk produk, pilih Load Balancing. Kemudian, klik Lanjutkan.

      Daftar Load Balancer Aplikasi yang didukung akan muncul.

    4. Untuk jenis load balancer, pilih Load Balancer Aplikasi eksternal global. Kemudian, klik Lanjutkan.

    5. Untuk jenis ekstensi, pilih Ekstensi Edge, lalu klik Lanjutkan.

    6. Untuk membuka formulir Buat ekstensi, klik Lanjutkan.

      Di formulir Buat ekstensi, perhatikan bahwa pilihan sebelumnya tidak dapat diedit.

    7. Di bagian Dasar-Dasar, lakukan hal berikut:

      1. 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.

      2. Opsional: Masukkan deskripsi singkat tentang ekstensi menggunakan maksimum 1.024 karakter.

      3. 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.

    8. 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.

    9. 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 500 umum akan dikembalikan ke klien. Jika header respons telah dikirimkan, aliran HTTP ke klien downstream akan direset.

    10. Klik Buat ekstensi.

    gcloud

    1. 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
      EOF
      

      Ganti kode berikut:

      • PROJECT_ID: project ID
      • WASM_PLUGIN: ID atau nama plugin yang sepenuhnya memenuhi syarat

      Ekstensi Edge memungkinkan Anda menggunakan hanya satu ekspresi reguler per ekspresi CEL.

    2. Impor ekstensi edge. Gunakan perintah gcloud service-extensions lb-edge-extensions import dengan 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.

  3. Untuk memverifikasi bahwa ekstensi edge berfungsi seperti yang diharapkan, gunakan perintah curl yang 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-vm
    

    Untuk memverifikasi bahwa plugin hanya berjalan untuk permintaan dengan awalan jalur /extension, ulangi perintah curl tanpa 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