Mengonfigurasi Perutean Berbasis Isi

Pelajari cara mengonfigurasi Perutean Berbasis Isi, kemampuan GKE Inference Gateway yang memungkinkan Anda merutekan permintaan inferensi dengan mengekstrak nama model langsung dari isi permintaan HTTP.

Hal ini sangat berguna untuk aplikasi yang mematuhi spesifikasi seperti OpenAI API, yang ID modelnya sering kali disematkan dalam payload permintaan, bukan di header atau jalur URL.

Cara kerja perutean berbasis isi

GKE Inference Gateway menerapkan Perutean Berbasis Isi sebagai ekstensi ext_proc dari proxy Envoy. Alur permintaan dirancang untuk berintegrasi secara lancar dengan konfigurasi Gateway API yang ada:

  1. Penerimaan permintaan: load balancer Lapisan 7 menerima permintaan inferensi masuk.
  2. Ekstraksi parameter isi: load balancer Lapisan 7 meneruskan permintaan ke ekstensi Isi ke Header. Ekstensi ini mengekstrak parameter model standar dari isi permintaan HTTP.
  3. Penyisipan header: nilai parameter model yang diekstrak kemudian disisipkan sebagai header permintaan baru (dengan kunci X-Gateway-Model-Name).
  4. Keputusan perutean: dengan nama model yang kini tersedia di header permintaan, GKE Inference Gateway dapat menggunakan konstruksi Gateway API HTTPRoute yang ada untuk membuat keputusan perutean. Misalnya, aturan HTTPRoute dapat cocok dengan header yang disisipkan untuk mengarahkan traffic ke InferencePool yang sesuai.
  5. Pemilihan endpoint: load balancer Lapisan 7 memilih InferencePool (BackendService) dan grup endpoint yang sesuai. Kemudian, load balancer meneruskan informasi permintaan dan endpoint ke ekstensi Pemilih Endpoint untuk pemilihan endpoint yang lebih mendetail dalam pool yang dipilih.
  6. Perutean akhir: permintaan dirutekan ke replika model tertentu yang dipilih oleh ekstensi Pemilih Endpoint.

Proses ini membantu memastikan bahwa meskipun informasi model berada jauh di dalam isi permintaan, GKE Inference Gateway Anda dapat merutekan traffic secara cerdas ke layanan backend yang benar.

Mengonfigurasi perutean berbasis isi

Ekstensi Perutean Berbasis Isi (BBR) untuk GKE Inference Gateway berjalan sebagai layanan yang Anda kelola dalam cluster Kubernetes. Dari perspektif load balancer Lapisan 7, ekstensi BBR adalah server gRPC eksternal. Saat load balancer perlu memeriksa isi permintaan untuk menentukan nama model, load balancer akan melakukan panggilan gRPC ke layanan BBR. Layanan BBR kemudian memproses permintaan dan menampilkan informasi ke load balancer, seperti header yang akan disisipkan untuk perutean.

Untuk mengaktifkan perutean berbasis isi, deploy ekstensi BBR sebagai Pod dan integrasikan menggunakan resource GCPRoutingExtension dan HTTPRoute.

Prasyarat

Men-deploy router berbasis isi

Ekstensi perutean berbasis isi di-deploy sebagai Deployment dan Layanan Kubernetes, bersama dengan resource GCPRoutingExtension dalam cluster Anda. Anda dapat menggunakan Helm untuk penginstalan yang lebih sederhana.

Untuk men-deploy resource yang diperlukan untuk router berbasis isi, jalankan perintah berikut:

helm install body-based-router oci://registry.k8s.io/gateway-api-inference-extension/charts/body-based-routing \
    --set provider.name=gke \
    --set inferenceGateway.name=GATEWAY_NAME

Ganti GATEWAY_NAME dengan nama resource Gateway Anda.

Perintah ini men-deploy resource berikut:

  • Layanan dan Deployment untuk ekstensi Perutean Berbasis Isi.
  • Resource GCPRoutingExtension dan resource GCPHealthCheckPolicy untuk melampirkan ekstensi Perutean Berbasis Isi ke resource GKE Gateway Anda.

Mengonfigurasi HTTPRoute untuk perutean yang mendukung model

Setelah ekstensi di-deploy dan dikonfigurasi, Anda dapat menentukan resource HTTPRoute yang menggunakan header yang disisipkan (X-Gateway-Model-Name) untuk keputusan perutean.

Berikut adalah contoh manifes HTTPRoute untuk perutean yang mendukung model:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: routes-to-llms
spec:
  parentRefs:
  - name: GATEWAY_NAME
  rules:
  - matches:
    - headers:
      - type: Exact
        name: X-Gateway-Model-Name
        value: chatbot # Matches the extracted model name
      path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: gemma # Target InferencePool for 'chatbot' model
      kind: InferencePool
      group: "inference.networking.k8s.io"
  - matches:
    - headers:
      - type: Exact
        name: X-Gateway-Model-Name
        value: sentiment # Matches another extracted model name
      path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: llama # Target InferencePool for 'sentiment' model
      kind: InferencePool
      group: "inference.networking.k8s.io"

Untuk menerapkan manifes ini ke cluster Anda, simpan sebagai httproute-for-models.yaml dan jalankan perintah berikut:

kubectl apply -f httproute-for-models.yaml

Pertimbangan dan batasan

Saat merencanakan penerapan Perutean Berbasis Isi, pertimbangkan hal berikut:

  • Perilaku gagal-tutup: ekstensi Perutean Berbasis Isi dirancang untuk beroperasi dalam mode "gagal-tutup". Jika ekstensi tidak tersedia atau gagal memproses permintaan, ekstensi akan menghasilkan error (misalnya, kode respons 404 atau 503 jika tidak ada backend default yang dikonfigurasi), bukan merutekan secara salah. Pastikan deployment Anda memiliki ketersediaan tinggi untuk mempertahankan keandalan layanan.

  • Ukuran isi permintaan dan streaming: memproses isi permintaan HTTP yang besar, terutama dengan streaming yang diaktifkan, dapat menimbulkan kompleksitas. Jika proxy Envoy dipaksa untuk melakukan streaming isi permintaan (biasanya untuk isi yang lebih besar dari 250 KB), proxy mungkin tidak dapat menyisipkan header baru. Hal ini dapat menyebabkan kegagalan perutean (misalnya, error 404 jika aturan pencocokan header tidak dapat diterapkan).

  • Pemeliharaan jangka panjang: ekstensi Perutean Berbasis Isi berjalan sebagai komponen dalam cluster GKE Anda. Anda bertanggung jawab atas pengelolaan siklus prosesnya, termasuk upgrade, patch keamanan, dan memastikan operasinya terus berlanjut.

Langkah berikutnya