Démarrage rapide d'Envoy Gateway : faites passer votre première requête en 10 minutes
Le but de cet article est simple : laisser de côté la philosophie et faire tourner Envoy Gateway tout de suite. Si vous atteignez le service d'exemple avec succès, vous aurez déjà fait plus que tous ceux qui sont encore bloqués sur la page d'accueil de la documentation.
Prérequis
Vous avez besoin d'au moins un cluster Kubernetes fonctionnel, par exemple :
- En local :
kind,minikube,k3d - Dans le cloud : EKS, GKE, AKS
- Homelab : K3s + MetalLB fonctionne aussi
Il vous faudra également :
kubectlhelm- Un cluster capable de provisionner une adresse
LoadBalancer, ou un cluster où l'utilisation deport-forwardvous convient
⚠️ Si votre cluster ne prend pas en charge
LoadBalancer, la documentation officielle recommande de l'associer à MetalLB. Ne pas avoir d'adresse externe n'est pas la fin du monde : vous testerez simplement viaport-forward.
Étape 1 : installer Envoy Gateway
Installez le plan de contrôle :
helm install eg oci://docker.io/envoyproxy/gateway-helm \
--version v1.7.0 \
-n envoy-gateway-system \
--create-namespaceAttendez qu'il soit prêt :
kubectl wait --timeout=5m -n envoy-gateway-system \
deployment/envoy-gateway \
--for=condition=AvailableUne fois cette étape terminée, le contrôleur Envoy Gateway tourne dans votre cluster. Il peut désormais lire les ressources Gateway API et générer la configuration Envoy correspondante.
Étape 2 : appliquer les ressources officielles du quickstart
Le dépôt officiel fournit un exemple groupé qui inclut :
GatewayClassGatewayHTTPRoute- Une application backend d'exemple
Appliquez-le directement :
kubectl apply -f \
https://github.com/envoyproxy/gateway/releases/download/v1.7.0/quickstart.yaml \
-n defaultVoyez cela comme l'équipe officielle qui vous prépare une scène de démonstration complète. Faites-la d'abord fonctionner, puis démontez-la ensuite pour comprendre les détails.
Étape 3 : vérifier que le trafic circule
Option A : le cluster possède un LoadBalancer
Récupérez l'adresse du Gateway :
export GATEWAY_HOST=$(kubectl get gateway/eg -o jsonpath='{.status.addresses[0].value}')Envoyez une requête :
curl --verbose \
--header "Host: www.example.com" \
http://$GATEWAY_HOST/getSi vous obtenez un HTTP 200, cela signifie :
- Le Gateway sert correctement d'entrée
- Le HTTPRoute a bien été attaché
- Le service backend est correctement ciblé par le routage
Option B : pas de LoadBalancer — utiliser port-forward
Trouvez le service Envoy :
export ENVOY_SERVICE=$(kubectl get svc -n envoy-gateway-system \
--selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg \
-o jsonpath='{.items[0].metadata.name}')Redirigez le port local 8888 vers le port 80 du Gateway :
kubectl -n envoy-gateway-system port-forward service/${ENVOY_SERVICE} 8888:80Dans un autre terminal :
curl --verbose \
--header "Host: www.example.com" \
http://localhost:8888/getC'est le chemin de test local. Cela donne un peu l'impression d'entrer par la porte de derrière, mais si cela valide le routage, c'est très bien ; parfois, l'ingénierie consiste d'abord à "faire marcher", puis à rendre ça élégant.
Où regarder quand ça casse
Les problèmes les plus courants ne viennent pas du fait qu'Envoy Gateway serait cassé, mais du fait qu'un maillon de la chaîne ne s'est pas connecté :
| Symptôme | À vérifier en premier |
|---|---|
gateway/eg n'a pas d'adresse |
Le cluster dispose-t-il d'une implémentation LoadBalancer ? |
curl renvoie 404 ou 503 |
État de HTTPRoute, Service et des Pods backend |
kubectl wait reste bloqué |
Les Pods de envoy-gateway-system sont-ils en cours d'exécution ? |
Commandes utiles :
kubectl get pods -n envoy-gateway-system
kubectl get gatewayclass
kubectl get gateway -A
kubectl get httproute -A
kubectl get svc,pod -n defaultPour creuser le status du Gateway :
kubectl get gateway/eg -o yamlLes points clés à vérifier :
status.addresses- Les conditions du listener
- Si les routes ont été acceptées
Ce que vous venez réellement de faire
Vous n'avez exécuté que quelques commandes, mais vous avez complété toute une chaîne de bout en bout :
- Installation de
Envoy Gateway - Création d'un
GatewayClasspour indiquer au cluster quel contrôleur de gateway utiliser - Création d'un
Gatewayqui déclare le port et le protocole d'entrée - Création d'un
HTTPRoutequi route le trafic vers le service backend - Envoy Gateway a traduit ces déclarations en configuration que Envoy Proxy peut exécuter
C'est exactement pour cela que Gateway API vaut la peine d'être utilisé. Vous écrivez des ressources Kubernetes, vous ne maintenez pas à la main une pile de fichiers de configuration proxy.
Étape suivante
Maintenant que votre première requête circule, l'article suivant explique ce que chacune de ces ressources fait réellement, afin de construire le bon modèle mental : 👉 Concepts de base