Avanzado
Esta sección cubre características avanzadas de Istio, como Ambient Mode, Multi-cluster, EnvoyFilter, compatibilidad con gRPC/WebSocket y más.
Tabla de contenidos
- Ambient Mode
- Multi-cluster
- EnvoyFilter
- Caché DNS
- gRPC
- WebSocket
- Inyección de Sidecar
- Integración con Argo Rollouts
- Argo Rollouts con reconocimiento de zona
- Autoescalado con KEDA
Descripción general
Esta sección cubre características avanzadas de Istio y temas detallados necesarios para entornos de producción.
Temas clave
1. Ambient Mode
Una nueva arquitectura de plano de datos introducida en Istio 1.28+.
Sidecar Mode frente a Ambient Mode
| Característica | Sidecar Mode | Ambient Mode |
|---|---|---|
| Arquitectura | Proxy Envoy inyectado en cada Pod | ztunnel (a nivel de nodo) + waypoint (opcional) |
| Uso de recursos | Alto (un proxy por Pod) | Bajo (un proxy por nodo) |
| Complejidad de Deployment | Alta (se requiere redeployment) | Baja (aplicación transparente) |
| Rendimiento | Ligeramente más lento (salto adicional) | Más rápido (solo L4 cuando se necesita) |
| Características | Se admiten todas las características | L4 de forma predeterminada; L7 requiere waypoint |
Arquitectura de Ambient Mode
Más detalles: Guía detallada de Ambient Mode
2. Multi-cluster
Conecte varios clústeres de Kubernetes como una única service mesh.
Topología Multi-cluster
Casos de uso:
- Deployment multirregión
- Recuperación ante desastres (DR)
- Deployment de clúster Blue/Green
- Aislamiento de entornos (dev/staging/prod)
Más detalles: Guía de configuración Multi-cluster
3. EnvoyFilter
Personalice directamente la configuración del proxy Envoy.
Casos de uso de EnvoyFilter
# Add custom header
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: custom-header
spec:
workloadSelector:
labels:
app: myapp
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_OUTBOUND
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.lua
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
inline_code: |
function envoy_on_request(request_handle)
request_handle:headers():add("x-custom-header", "value")
endCasos de uso clave:
- Limitación de tasa
- Autenticación/autorización personalizada
- Manipulación de encabezados
- Transformación de solicitudes/respuestas
- Plugins WASM
Más detalles: Guía de EnvoyFilter
4. Caché DNS
Optimice el rendimiento almacenando en caché las consultas DNS.
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: dns-cache
spec:
host: external-api.example.com
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
http:
http1MaxPendingRequests: 100Beneficios:
- Latencia reducida en las consultas DNS
- Carga reducida en servidores DNS externos
- Respuestas DNS coherentes
Más detalles: Guía de caché DNS
5. Compatibilidad con gRPC
Proporciona routing y balanceo de carga optimizados para el protocolo gRPC.
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: grpc-service
spec:
hosts:
- grpc-service
http:
- match:
- uri:
prefix: /mypackage.MyService/
route:
- destination:
host: grpc-service
subset: v2Características clave:
- Balanceo de carga basado en HTTP/2
- Comprobaciones de estado de gRPC
- Deadlines y reintentos
- Routing basado en metadatos
Más detalles: Guía de gRPC
6. Compatibilidad con WebSocket
Proporciona manejo especial para conexiones WebSocket.
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: websocket-service
spec:
hosts:
- ws.example.com
http:
- match:
- headers:
upgrade:
exact: websocket
route:
- destination:
host: websocket-serviceCaracterísticas clave:
- Mantenimiento de conexiones de larga duración
- Configuración de Connection Pool
- Gestión de Idle Timeout
Más detalles: Guía de WebSocket
7. Inyección de Sidecar
Cubre los mecanismos de inyección del proxy sidecar y su personalización.
Métodos de inyección
Más detalles: Guía de inyección de Sidecar
8. Integración con Argo Rollouts
Implemente estrategias avanzadas de Deployment integrando Argo Rollouts con Istio.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: myapp
spec:
strategy:
canary:
trafficRouting:
istio:
virtualService:
name: myapp-vsvc
routes:
- primary
steps:
- setWeight: 10
- pause: {duration: 2m}
- setWeight: 50
- pause: {duration: 2m}Características clave:
- Deployment Canary automático basado en métricas
- Análisis y rollback automático
- Deployment Blue/Green
- Progressive Delivery
Más detalles: Guía de integración con Argo Rollouts
9. Argo Rollouts con reconocimiento de zona
Realice Deployments Canary con reconocimiento de zona por zona de disponibilidad.
Más detalles: Guía de Argo Rollouts con reconocimiento de zona
10. Autoescalado con KEDA
Implemente autoescalado basado en métricas de Istio mediante KEDA.
KEDA frente a HPA
| Característica | Kubernetes HPA | KEDA |
|---|---|---|
| Fuentes de métricas | CPU/memoria + métricas personalizadas | Más de 60 scalers (Prometheus, CloudWatch, Kafka, etc.) |
| Escalado a cero | No compatible (mínimo 1) | Compatible (0 Pods posibles) |
| Métricas externas | Requiere Metrics Server | Compatibilidad nativa |
| Consultas complejas | Limitadas | PromQL, CloudWatch Insights |
Arquitectura de KEDA
Estrategias de escalado clave
# RPS-based scaling
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: reviews-rps-scaler
spec:
scaleTargetRef:
name: reviews
triggers:
- type: prometheus
metadata:
query: |
sum(rate(istio_requests_total{
destination_workload="reviews"
}[1m]))
threshold: '100'Métricas de escalado:
- RPS (solicitudes por segundo): Basado en solicitudes por segundo
- Latencia (P50/P95/P99): Basada en percentiles de latencia
- Tasa de errores: Basada en la tasa de errores 5xx
- Circuit Breaker: Basado en el estado de Circuit Breaker
- Métricas compuestas: Combinación de varias métricas
Fuentes de métricas:
- Prometheus: Métricas de Istio/Envoy en tiempo real
- AWS CloudWatch: Métricas de CloudWatch mediante ADOT Collector
Más detalles: Guía de autoescalado con KEDA
Ruta de aprendizaje
- Ambient Mode - Comprensión de la nueva arquitectura
- Multi-cluster - Configuración Multi-cluster
- EnvoyFilter - Personalización avanzada
- Inyección de Sidecar - Mecanismos de inyección
- gRPC - Compatibilidad con el protocolo gRPC
- WebSocket - Compatibilidad con WebSocket
- Caché DNS - Optimización del rendimiento
- Argo Rollouts - Progressive Delivery
- Argo Rollouts con reconocimiento de zona - Deployment basado en zonas
- Autoescalado con KEDA - Autoescalado basado en métricas
Referencias
- Características avanzadas de Istio
- Documentación de Ambient Mode
- Documentación Multi-cluster
- Referencia de EnvoyFilter
Cuestionario
Para comprobar lo que ha aprendido en este capítulo, realice el Cuestionario avanzado de Istio.