Inicio Rápido de Envoy Gateway: Haz Pasar Tu Primera Solicitud en 10 Minutos
El objetivo de este post es simple: omite la filosofía, simplemente pon Envoy Gateway en marcha. Si logras llegar al servicio de ejemplo con éxito, ya has hecho más que todos los que siguen atascados en la página de inicio de la documentación.
Requisitos Previos
Necesitas al menos un clúster de Kubernetes funcionando, como:
- Local:
kind,minikube,k3d - Cloud: EKS, GKE, AKS
- Laboratorio casero: K3s + MetalLB también funciona
También necesitarás:
kubectlhelm- Un clúster que pueda aprovisionar una dirección
LoadBalancer, o uno donde estés bien usandoport-forward
⚠️ Si tu clúster no tiene soporte de
LoadBalancer, la documentación oficial recomienda combinarlo con MetalLB. No tener una dirección externa no es el fin del mundo — simplemente harás las pruebas víaport-forward.
Paso 1: Instalar Envoy Gateway
Instala el plano de control:
helm install eg oci://docker.io/envoyproxy/gateway-helm \
--version v1.7.0 \
-n envoy-gateway-system \
--create-namespaceEspera a que esté listo:
kubectl wait --timeout=5m -n envoy-gateway-system \
deployment/envoy-gateway \
--for=condition=AvailableUna vez que esto se complete, el controlador de Envoy Gateway está corriendo en tu clúster. Ahora puede leer recursos de Gateway API y generar la configuración de Envoy correspondiente.
Paso 2: Aplicar los Recursos de Inicio Rápido Oficiales
El repositorio oficial proporciona un ejemplo empaquetado que incluye:
GatewayClassGatewayHTTPRoute- Una aplicación de backend de muestra
Aplícalo directamente:
kubectl apply -f \
https://github.com/envoyproxy/gateway/releases/download/v1.7.0/quickstart.yaml \
-n defaultPiensa en esto como el equipo oficial preparando una escena de demostración completa para ti. Ponlo en marcha primero, luego desármalo después.
Paso 3: Verificar Que el Tráfico Fluye
Opción A: El Clúster Tiene un LoadBalancer
Obtén la dirección del Gateway:
export GATEWAY_HOST=$(kubectl get gateway/eg -o jsonpath='{.status.addresses[0].value}')Envía una solicitud:
curl --verbose \
--header "Host: www.example.com" \
http://$GATEWAY_HOST/getSi obtienes un HTTP 200, significa que:
- El Gateway está funcionando como ingreso activo
- El HTTPRoute se ha adjuntado correctamente
- El servicio de backend está siendo enrutado correctamente
Opción B: Sin LoadBalancer — Usa Port-Forward
Encuentra el servicio de 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}')Reenvía el puerto local 8888 al puerto 80 del Gateway:
kubectl -n envoy-gateway-system port-forward service/${ENVOY_SERVICE} 8888:80En otra terminal:
curl --verbose \
--header "Host: www.example.com" \
http://localhost:8888/getEste es el camino de prueba local. Se siente un poco como entrar por la puerta trasera, pero si valida el enrutamiento, está bien — a veces la ingeniería es "hacer que funcione primero, luego hacerlo elegante."
Dónde Mirar Cuando Algo Falla
Los problemas más comunes no son que Envoy Gateway esté roto — es que un segmento de la cadena no se conectó:
| Síntoma | Verificar Primero |
|---|---|
gateway/eg no tiene dirección |
¿Tiene el clúster una implementación de LoadBalancer? |
curl devuelve 404 o 503 |
Estado de HTTPRoute, Service y Pod de backend |
kubectl wait está bloqueado |
¿Están corriendo los Pods en envoy-gateway-system? |
Comandos útiles:
kubectl get pods -n envoy-gateway-system
kubectl get gatewayclass
kubectl get gateway -A
kubectl get httproute -A
kubectl get svc,pod -n defaultPara profundizar en el estado del Gateway:
kubectl get gateway/eg -o yamlCosas clave a verificar:
status.addresses- Condiciones del Listener
- Si las rutas fueron aceptadas
Lo Que Acabas de Hacer Realmente
Solo ejecutaste unos pocos comandos, pero completaste toda una cadena de extremo a extremo:
- Instalaste
Envoy Gateway - Creaste un
GatewayClasspara indicarle al clúster qué controlador de gateway usar - Creaste un
Gatewaydeclarando el puerto y protocolo de ingreso - Creaste un
HTTPRouteenrutando el tráfico al servicio de backend - Envoy Gateway tradujo estas declaraciones en configuración que Envoy Proxy puede ejecutar
Esto es exactamente por qué Gateway API vale la pena usar. Escribes recursos de Kubernetes — no mantienes un montón de archivos de configuración de proxy a mano.
Siguiente Paso
Ahora que tienes tu primera solicitud fluyendo, el próximo post cubre qué hace cada uno de estos recursos en realidad — construyendo el modelo mental: 👉 Core Concepts