Cette page explique comment migrer votre configuration de passerelle GKE Inference de l'API v1alpha2
en preview vers l'API v1
disponible de manière générale.
Ce document est destiné aux administrateurs de plate-forme et aux spécialistes de la mise en réseau qui utilisent la version v1alpha2
de GKE Inference Gateway et souhaitent passer à la version 1 pour profiter des dernières fonctionnalités.
Avant de commencer la migration, assurez-vous de bien connaître les concepts et le déploiement de la passerelle d'inférence GKE. Nous vous recommandons de consulter Déployer GKE Inference Gateway.
Avant de commencer
Avant de commencer la migration, déterminez si vous devez suivre ce guide.
Rechercher les API v1alpha2 existantes
Pour vérifier si vous utilisez l'API v1alpha2
GKE Inference Gateway, exécutez les commandes suivantes :
kubectl get inferencepools.inference.networking.x-k8s.io --all-namespaces
kubectl get inferencemodels.inference.networking.x-k8s.io --all-namespaces
Le résultat de ces commandes détermine si vous devez migrer :
- Si l'une ou l'autre commande renvoie une ou plusieurs ressources
InferencePool
ouInferenceModel
, vous utilisez l'APIv1alpha2
et devez suivre ce guide. - Si les deux commandes renvoient
No resources found
, vous n'utilisez pas l'APIv1alpha2
. Vous pouvez procéder à une nouvelle installation de la passerelle d'inférencev1
.
Chemins de migration
Deux options s'offrent à vous pour migrer de v1alpha2
vers v1
:
- Migration simple (avec temps d'arrêt) : ce chemin est plus rapide et plus simple, mais entraîne un bref temps d'arrêt. Il s'agit de la méthode recommandée si vous n'avez pas besoin d'une migration sans temps d'arrêt.
- Migration sans temps d'arrêt : ce chemin est destiné aux utilisateurs qui ne peuvent pas se permettre d'interrompre le service. Il s'agit d'exécuter les piles
v1alpha2
etv1
côte à côte et de déplacer progressivement le trafic.
Migration simple (avec temps d'arrêt)
Cette section explique comment effectuer une migration simple avec temps d'arrêt.
Supprimer les ressources
v1alpha2
existantes : pour supprimer les ressourcesv1alpha2
, choisissez l'une des options suivantes :Option 1 : Désinstaller à l'aide de Helm
helm uninstall HELM_PREVIEW_INFERENCEPOOL_NAME
Option 2 : Supprimer manuellement les ressources
Si vous n'utilisez pas Helm, supprimez manuellement toutes les ressources associées à votre déploiement
v1alpha2
:- Modifiez ou supprimez
HTTPRoute
pour supprimerbackendRef
qui pointe versv1alpha2
InferencePool
. - Supprimez le
InferencePool
, toutes les ressourcesInferenceModel
qui y font référence, ainsi que le déploiement et le service EPP (Endpoint Picker) correspondants.v1alpha2
Une fois toutes les ressources personnalisées
v1alpha2
supprimées, supprimez les définitions de ressources personnalisées (CRD) de votre cluster :kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/download/v0.3.0/manifests.yaml
- Modifiez ou supprimez
Installez les ressources v1 : après avoir nettoyé les anciennes ressources, installez la passerelle d'inférence GKE Inference.
v1
Ce processus implique les actions suivantes :- Installez les nouvelles définitions de ressources personnalisées (CRD)
v1
. - Créez une
v1
InferencePool
et les ressourcesInferenceObjective
correspondantes. La ressourceInferenceObjective
est toujours définie dans l'APIv1alpha2
. - Créez un
HTTPRoute
qui redirige le trafic vers votre nouveauv1
InferencePool
.
- Installez les nouvelles définitions de ressources personnalisées (CRD)
Vérifiez le déploiement : après quelques minutes, vérifiez que votre nouvelle pile
v1
diffuse correctement le trafic.Vérifiez que l'état de la passerelle est
PROGRAMMED
:kubectl get gateway -o wide
Le résultat devrait ressembler à ceci :
NAME CLASS ADDRESS PROGRAMMED AGE inference-gateway gke-l7-regional-external-managed <IP_ADDRESS> True 10m
Vérifiez le point de terminaison en envoyant une requête :
IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}') PORT=80 curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{"model": "<var>YOUR_MODEL</var>","prompt": "<var>YOUR_PROMPT</var>","max_tokens": 100,"temperature": 0}'
Assurez-vous de recevoir une réponse positive avec un code de réponse
200
.
Migration sans temps d'arrêt
Ce chemin de migration est conçu pour les utilisateurs qui ne peuvent pas se permettre d'interrompre le service. Le schéma suivant illustre comment GKE Inference Gateway facilite la diffusion de plusieurs modèles d'IA générative, un aspect clé d'une stratégie de migration sans temps d'arrêt.

Distinguer les versions d'API avec kubectl
Lors de la migration sans temps d'arrêt, les CRD v1alpha2
et v1
sont installés sur votre cluster. Cela peut créer une ambiguïté lors de l'utilisation de kubectl
pour interroger les ressources InferencePool
. Pour vous assurer d'interagir avec la bonne version, vous devez utiliser le nom complet de la ressource :
Pour
v1alpha2
:kubectl get inferencepools.inference.networking.x-k8s.io
Pour
v1
:kubectl get inferencepools.inference.networking.k8s.io
L'API v1
fournit également un nom court pratique, infpool
, que vous pouvez utiliser pour interroger spécifiquement les ressources v1
:
kubectl get infpool
Étape 1 : Déploiement côte à côte de la version 1
À cette étape, vous déployez la nouvelle pile InferencePool v1 aux côtés de la pile v1alpha2 existante, ce qui permet une migration sûre et progressive.
Une fois toutes les étapes de cette phase terminées, vous disposez de l'infrastructure suivante, illustrée dans le diagramme ci-dessous :

Installez les définitions de ressources personnalisées (CRD) nécessaires dans votre cluster GKE :
- Pour les versions GKE antérieures à
1.34.0-gke.1626000
, exécutez la commande suivante pour installer les CRD v1InferencePool
et alphaInferenceObjective
:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/download/v1.0.0/manifests.yaml
- Pour les versions
1.34.0-gke.1626000
ou ultérieures de GKE, n'installez que la CRD alphaInferenceObjective
en exécutant la commande suivante :
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/v1.0.0/config/crd/bases/inference.networking.x-k8s.io_inferenceobjectives.yaml
- Pour les versions GKE antérieures à
Installez
v1 InferencePool
.Utilisez Helm pour installer un nouveau
v1 InferencePool
avec un nom de version distinct, tel quevllm-llama3-8b-instruct-ga
. LeInferencePool
doit cibler les mêmes pods Model Server que leInferencePool
alpha à l'aide deinferencePool.modelServers.matchLabels.app
.Pour installer
InferencePool
, utilisez la commande suivante :helm install vllm-llama3-8b-instruct-ga \ --set inferencePool.modelServers.matchLabels.app=MODEL_SERVER_DEPLOYMENT_LABEL \ --set provider.name=gke \ --version RELEASE \ oci://registry.k8s.io/gateway-api-inference-extension/charts/inferencepool
Créez des ressources
v1alpha2 InferenceObjective
.Dans le cadre de la migration vers la version 1.0 de l'extension d'inférence de l'API Gateway, nous devons également migrer de l'API alpha
InferenceModel
vers la nouvelle APIInferenceObjective
.Appliquez le fichier YAML suivant pour créer les ressources
InferenceObjective
:kubectl apply -f - <<EOF --- apiVersion: inference.networking.x-k8s.io/v1alpha2 kind: InferenceObjective metadata: name: food-review spec: priority: 2 poolRef: group: inference.networking.k8s.io name: vllm-llama3-8b-instruct-ga --- apiVersion: inference.networking.x-k8s.io/v1alpha2 kind: InferenceObjective metadata: name: base-model spec: priority: 2 poolRef: group: inference.networking.k8s.io name: vllm-llama3-8b-instruct-ga --- EOF
Étape 2 : Transfert du trafic
Une fois les deux piles en cours d'exécution, vous pouvez commencer à transférer le trafic de v1alpha2
vers v1
en mettant à jour HTTPRoute
pour répartir le trafic. Cet exemple montre une répartition à 50/50.
Mettez à jour HTTPRoute pour la répartition du trafic.
Pour mettre à jour
HTTPRoute
pour la répartition du trafic, exécutez la commande suivante :kubectl apply -f - <<EOF --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: llm-route spec: parentRefs: - group: gateway.networking.k8s.io kind: Gateway name: inference-gateway rules: - backendRefs: - group: inference.networking.x-k8s.io kind: InferencePool name: vllm-llama3-8b-instruct-preview weight: 50 - group: inference.networking.k8s.io kind: InferencePool name: vllm-llama3-8b-instruct-ga weight: 50 --- EOF
Vérifiez et surveillez.
Après avoir appliqué les modifications, surveillez les performances et la stabilité de la nouvelle pile
v1
. Vérifiez que la passerelleinference-gateway
a l'étatPROGRAMMED
TRUE
.
Étape 3 : Finalisation et nettoyage
Une fois que vous avez vérifié que v1 InferencePool
est stable, vous pouvez y rediriger tout le trafic et mettre hors service les anciennes ressources v1alpha2
.
Redirigez 100 % du trafic vers
v1 InferencePool
.Pour transférer 100 % du trafic vers
v1 InferencePool
, exécutez la commande suivante :kubectl apply -f - <<EOF --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: llm-route spec: parentRefs: - group: gateway.networking.k8s.io kind: Gateway name: inference-gateway rules: - backendRefs: - group: inference.networking.k8s.io kind: InferencePool name: vllm-llama3-8b-instruct-ga weight: 100 --- EOF
Effectuez la validation finale.
Après avoir redirigé tout le trafic vers la pile
v1
, vérifiez qu'elle gère tout le trafic comme prévu.Vérifiez que l'état de la passerelle est
PROGRAMMED
:kubectl get gateway -o wide
Le résultat devrait ressembler à ceci :
NAME CLASS ADDRESS PROGRAMMED AGE inference-gateway gke-l7-regional-external-managed <IP_ADDRESS> True 10m
Vérifiez le point de terminaison en envoyant une requête :
IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}') PORT=80 curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{ "model": "YOUR_MODEL, "prompt": YOUR_PROMPT, "max_tokens": 100, "temperature": 0 }'
Assurez-vous de recevoir une réponse positive avec un code de réponse
200
.
Nettoyez les ressources v1alpha2.
Après avoir confirmé que la pile
v1
est entièrement opérationnelle, supprimez les anciennes ressourcesv1alpha2
en toute sécurité.Vérifiez s'il reste des ressources
v1alpha2
.Maintenant que vous avez migré vers l'API
v1
InferencePool
, vous pouvez supprimer les anciens CRD sans risque. Vérifiez s'il existe des API v1alpha2 pour vous assurer que vous n'utilisez plus de ressourcesv1alpha2
. S'il vous en reste, vous pouvez poursuivre le processus de migration pour ceux-ci.Supprimez les CRD
v1alpha2
.Une fois toutes les ressources personnalisées
v1alpha2
supprimées, supprimez les définitions de ressources personnalisées (CRD) de votre cluster :kubectl delete -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/download/v0.3.0/manifests.yaml
Une fois toutes les étapes terminées, votre infrastructure devrait ressembler au diagramme suivant :
Figure : GKE Inference Gateway route les requêtes vers différents modèles d'IA générative en fonction du nom et de la priorité du modèle.
Étapes suivantes
- En savoir plus sur le déploiement de la passerelle d'inférence GKE
- Découvrez d'autres fonctionnalités de mise en réseau GKE.