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 penyimpanan cache 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 ini 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 edge ke aturan penerusan dan hanya menyertakan satu plugin dalam rantai ekstensi edge.

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 menggunakan plugin yang menulis ulang header permintaan :host ke service-extensions.com saat jalur cocok dengan /extensions. Host sebelumnya dan host yang baru dikonfigurasi dipetakan ke layanan backend di region yang berbeda, 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 di 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-matcherdengan nilai contoh 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. Pastikan permintaan tanpa jalur eksplisit masuk ke 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 yang 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 di peta URL. Outputnya mirip dengan yang 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 Google Cloud konsol, buka halaman Service Extensions.

      Buka Service Extensions

    2. Klik Create extension.

      Wizard akan terbuka untuk memandu Anda melalui beberapa langkah awal.

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

      Daftar Load Balancer Aplikasi yang didukung akan muncul.

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

    5. Untuk jenis ekstensi, pilih Edge extensions, lalu klik Continue.

    6. Untuk membuka formulir Create extension, klik Continue.

      Di formulir Create extension, perhatikan bahwa pilihan sebelumnya tidak dapat diedit.

    7. Di bagian Basics, 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 maksimal 1.024 karakter.

    8. Opsional: Di bagian Labels, klik Add label. Kemudian, di baris yang muncul, lakukan hal berikut:

      • Untuk Key, masukkan nama kunci.
      • Untuk Value, masukkan nilai untuk kunci.

      Untuk menambahkan pasangan nilai kunci lainnya, klik Add label. Anda dapat menambahkan maksimal 64 pasangan nilai kunci.

      Untuk mengetahui informasi selengkapnya tentang label, lihat Membuat dan memperbarui label untuk project.

    9. Untuk Forwarding rules, pilih satu atau beberapa aturan penerusan yang akan dikaitkan dengan ekstensi—misalnya, cr-xlb-forwarding-rule.

      Aturan penerusan yang sudah dikaitkan dengan ekstensi lain tidak dapat dipilih dan akan dinonaktifkan.

    10. Untuk Extension, guna menambahkan ekstensi yang akan dijalankan untuk permintaan yang cocok, lakukan hal berikut:

      • Untuk mencocokkan permintaan yang akan menjalankan rantai ekstensi, untuk Match condition, tentukan ekspresi Common Expression Language (CEL) expression—misalnya, request.path.startsWith("/extensions").

        Ekstensi edge memungkinkan Anda menggunakan hanya satu ekspresi reguler untuk setiap ekspresi CEL.

        Untuk mengetahui informasi selengkapnya tentang ekspresi CEL, klik Get syntax help atau lihat Referensi bahasa pencocok CEL.

      • Untuk Programmability type, pilih Plugins.

      • Untuk Plugin, pilih plugin yang dibuat menggunakan Service Extensions atau jenis produk dan ekstensi yang sama. Anda hanya dapat menyertakan satu plugin dalam ekstensi edge.

      • Untuk Forward attributes, pilih atribut permintaan, koneksi, dan lokasi yang ingin Anda teruskan oleh load balancer ke plugin atau callout Wasm. Anda dapat mengonfigurasi maksimal 16 atribut untuk setiap ekstensi. Untuk mengetahui informasi selengkapnya, lihat Atribut yang didukung.

      • Untuk Forward headers, klik Add header, lalu tambahkan header HTTP yang akan 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 Enabled. Dalam hal ini, jika panggilan ke ekstensi gagal atau waktu tunggu habis, pemrosesan permintaan atau respons akan berlanjut tanpa error.

        Secara default, kolom Fail open tidak dipilih. Dalam hal ini, jika header respons belum dikirimkan ke klien hilir, kode status HTTP 500 generik akan ditampilkan ke klien. Jika header respons telah dikirimkan, aliran HTTP ke klien hilir akan direset.

      Untuk ekstensi edge, Anda hanya dapat menentukan satu ekstensi untuk setiap rantai ekstensi.

      Jika Anda ingin menentukan lebih dari satu ekstensi atau rantai ekstensi, bukan satu ekstensi, klik tombol Switch to advanced mode di akhir formulir dan tentukan ekstensi dan rantai yang diperlukan. Ekstensi berjalan dalam urutan yang tercantum.

      Tentukan nama unik untuk setiap ekstensi dan rantai 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.

    11. Klik Create extension.

    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
              forwardAttributes:
              - request.host
              - request.path
      EOF
      

      Ganti kode berikut:

      • PROJECT_ID: ID project
      • WASM_PLUGIN: ID atau nama lengkap plugin

      Ekstensi edge memungkinkan Anda menggunakan hanya satu ekspresi reguler untuk setiap ekspresi CEL.

      Untuk mengetahui informasi selengkapnya tentang kolom dalam file YAML, lihat ExtensionChain dalam dokumentasi API.

      Kolom forwardAttributes memungkinkan Anda menentukan atribut permintaan, koneksi, dan lokasi yang dapat Anda teruskan ke plugin Wasm atau layanan callout. Anda dapat mengonfigurasi maksimal 16 atribut untuk setiap ekstensi. Untuk mengetahui informasi selengkapnya tentang atribut yang didukung , lihat Atribut yang didukung.

    2. Impor ekstensi edge. Gunakan gcloud service-extensions lb-edge-extensions import perintah dengan nilai contoh berikut:

      gcloud service-extensions lb-edge-extensions import edge-ext \
          --source=edge-plugin.yaml \
          --location=global
      

    Setelah ekstensi edge dibuat, plugin baru memerlukan waktu beberapa saat untuk didistribusikan ke semua lokasi. Waktu dapat bervariasi di setiap 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 yang 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 yang berikut ini:

    Page served from region-A-vm
    

Batasan untuk ekstensi edge

  • Anda hanya dapat melampirkan satu ekstensi edge ke aturan penerusan.
  • Ekstensi edge tidak mendukung pemrosesan isi HTTP.
  • Ekstensi edge memungkinkan Anda menggunakan hanya satu ekspresi reguler untuk setiap ekspresi CEL.

Untuk batasan yang berlaku untuk semua ekstensi, lihat Batasan untuk ekstensi.

Langkah berikutnya