La passerelle avec Inference Extension s'appuie sur Envoy Gateway. Pour ajuster les paramètres d'exécution (nombre de réplicas, ressources CPU et mémoire, type de service et comportement de mise à l'échelle), modifiez la ressource personnalisée EnvoyProxy et associez-la à une ressource Gateway ou GatewayClass.
Fonctionnement
Deux niveaux de configuration sont disponibles :
| Niveau | Méthode d'association | Effet |
|---|---|---|
| Niveau Gateway | Référencez la ressource EnvoyProxy depuis le champ infrastructure.parametersRef d'une ressource Gateway |
Seule cette Gateway utilise les paramètres personnalisés |
| Niveau GatewayClass | Référencez la ressource EnvoyProxy depuis le champ parametersRef d'une ressource GatewayClass |
Toutes les Gateways de cette classe héritent des paramètres, sauf si elles définissent leurs propres valeurs |
Lorsque les deux niveaux sont configurés, les paramètres définis au niveau de la Gateway priment.
Quand utiliser chaque niveau :
Utilisez la configuration au niveau Gateway lorsque différentes Gateways appartenant à la même classe nécessitent des profils de ressources distincts (par exemple, un nombre de réplicas différent pour la production et pour l'environnement de préproduction).
Optez pour la configuration au niveau GatewayClass afin d'appliquer une base commune à toutes les Gateways d'une classe, tout en permettant aux Gateways individuelles de ne remplacer que les champs qui diffèrent.
Prérequis
Avant de configurer la passerelle, tenez compte des contraintes suivantes :
Une ressource
Gatewayne peut référencer une ressourceEnvoyProxysituée dans le même namespace.Si vous configurez à la fois
envoyDeployment.replicasetenvoyHpa, omettez le champreplicassousenvoyDeployment. Le Horizontal Pod Autoscaler (HPA) gère alors le nombre de réplicas.
Configurer une seule Gateway
Référencez une ressource EnvoyProxy depuis le champ infrastructure.parametersRef de la ressource Gateway :
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: eg
spec:
gatewayClassName: eg
infrastructure:
parametersRef:
group: gateway.envoyproxy.io
kind: EnvoyProxy
name: custom-proxy-config
listeners:
- name: http
protocol: HTTP
port: 80
---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: custom-proxy-config
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2
container:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
Configurer toutes les Gateways d'une GatewayClass
Référencez une ressource EnvoyProxy depuis le champ parametersRef de la ressource GatewayClass :
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: eg
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
parametersRef:
group: gateway.envoyproxy.io
kind: EnvoyProxy
name: custom-proxy-config
namespace: default
---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: custom-proxy-config
namespace: default
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2
container:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
Toutes les ressources Gateway associées à cette GatewayClass héritent de ces paramètres. Une ressource Gateway qui référence sa propre ressource EnvoyProxy remplace ces valeurs définies au niveau de la classe, mais uniquement pour cette Gateway spécifique.
Référence des champs EnvoyProxy
L'exemple suivant présente l'ensemble complet des champs couramment utilisés :
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: custom-proxy-config
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2 # Omit if envoyHpa is also configured.
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
pod:
affinity: ...
tolerations: ...
nodeSelector: ...
container:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
envoyService:
annotations:
key: value
labels:
key: value
type: LoadBalancer
loadBalancerClass: ...
externalTrafficPolicy: Cluster # or Local
envoyHpa:
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
envoyPDB:
minAvailable: 1
Le tableau suivant décrit les champs de premier niveau sous kubernetes :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
envoyDeployment |
KubernetesDeploymentSpec | Non | Configuration de la charge de travail pour la passerelle personnalisée. |
envoyService |
KubernetesServiceSpec | Non | Configuration du service pour la passerelle personnalisée. |
envoyHpa |
KubernetesHorizontalPodAutoscalerSpec | Non | Configuration HPA pour la passerelle personnalisée. |
envoyPDB |
KubernetesPodDisruptionBudgetSpec | Non | Configuration PodDisruptionBudget (PDB) pour la passerelle personnalisée. |
Pour consulter la spécification complète de l'API EnvoyProxy, voir la documentation EnvoyProxy.