Pelajari cara mengonfigurasi Perutean Berbasis Isi, kemampuan GKE Inference Gateway yang memungkinkan Anda merutekan permintaan inferensi dengan mengekstraksi nama model langsung dari isi permintaan HTTP.
Hal ini sangat berguna untuk aplikasi yang mematuhi spesifikasi seperti OpenAI API, di mana ID model sering disematkan dalam payload permintaan, bukan di header atau jalur URL.
Cara kerja pemilihan rute berbasis tubuh
GKE Inference Gateway menerapkan Perutean Berbasis Isi sebagai ekstensi ext_proc
proxy Envoy. Alur permintaan dirancang untuk terintegrasi
dengan lancar dengan konfigurasi Gateway API yang ada:
- Penerimaan permintaan: load balancer Lapisan 7 menerima permintaan inferensi masuk.
- Ekstraksi parameter isi: load balancer Lapisan 7 meneruskan
permintaan ke ekstensi Isi ke Header. Ekstensi ini mengekstrak parameter
model
standar dari isi permintaan HTTP. - Penyisipan header: nilai parameter model yang diekstrak kemudian disisipkan
sebagai header permintaan baru (dengan kunci
X-Gateway-Model-Name
). - Keputusan pemilihan rute: dengan nama model yang kini tersedia di header permintaan, GKE Inference Gateway dapat menggunakan konstruksi
HTTPRoute
Gateway API yang ada untuk membuat keputusan pemilihan rute. Misalnya, aturanHTTPRoute
dapat mencocokkan header yang disisipkan untuk mengarahkan traffic keInferencePool
yang sesuai. - Pemilihan endpoint: load balancer Layer 7 memilih
InferencePool
(BackendService) dan grup endpoint yang sesuai. Kemudian, Endpoint Picker meneruskan informasi permintaan dan endpoint ke ekstensi Endpoint Picker untuk pemilihan endpoint yang lebih terperinci dalam kumpulan yang dipilih. - Perutean akhir: permintaan dirutekan ke replika model tertentu yang dipilih oleh ekstensi Pemilih Endpoint.
Proses ini memastikan bahwa meskipun informasi model berada jauh di dalam isi permintaan, GKE Inference Gateway Anda dapat secara cerdas merutekan traffic ke layanan backend yang benar.
Mengonfigurasi perutean berbasis isi
Ekstensi Body-Based Routing (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
Pastikan Anda memiliki cluster GKE (versi 1.32 atau yang lebih baru).
Ikuti panduan utama untuk mengonfigurasi GKE Inference Gateway.
Men-deploy router berbasis isi pesan
Ekstensi perutean berbasis isi di-deploy sebagai Deployment dan Layanan Kubernetes, beserta resource GCPRoutingExtension
dalam cluster Anda.
Anda dapat menggunakan Helm untuk penginstalan yang disederhanakan.
Untuk men-deploy resource yang diperlukan untuk router berbasis tubuh, 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:
- Service dan Deployment untuk ekstensi Perutean Berbasis Tubuh.
- Resource
GCPRoutingExtension
dan resourceGCPHealthCheckPolicy
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 Tubuh, pertimbangkan hal berikut:
Perilaku gagal-tutup: ekstensi Perutean Berbasis Tubuh dirancang untuk beroperasi dalam mode "gagal-tutup". Jika ekstensi tidak tersedia atau gagal memproses permintaan, hal ini akan menyebabkan error (misalnya, kode respons 404 atau 503 jika tidak ada backend default yang dikonfigurasi), bukan merutekan dengan tidak benar. Pastikan deployment Anda memiliki ketersediaan tinggi untuk menjaga keandalan layanan.
Ukuran dan streaming isi permintaan: memproses isi permintaan HTTP yang besar, terutama dengan streaming yang diaktifkan, dapat menimbulkan kerumitan. Jika proxy Envoy dipaksa untuk melakukan streaming isi permintaan (biasanya untuk isi yang lebih besar dari 250 KB), proxy tersebut 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 Body-Based Routing berjalan sebagai komponen dalam cluster GKE Anda. Anda bertanggung jawab atas pengelolaan siklus prosesnya, termasuk upgrade, patch keamanan, dan memastikan kelanjutan operasinya.
Langkah berikutnya
- Pelajari cara menyesuaikan GKE Inference Gateway.
- Baca selengkapnya tentang GKE Inference Gateway.
- Pantau resource Gateway Anda.
- Pelajari Gateway API lebih lanjut.