Glosario de Istio
Versión revisada: Istio 1.31.0 Última actualización: September 13, 2026
Este glosario organiza los términos clave relacionados con Istio y Service Mesh (malla de servicios) en secciones de referencia agrupadas.
Idioma de referencia: los enlaces de las secciones de Arquitectura y DestinationRule que aparecen a continuación apuntan a las guías en inglés, que son las mantenidas. Estos enlaces ofrecen la referencia actual allí donde las traducciones locales aún no se han sincronizado.
Tabla de contenidos
A-C
AuthorizationPolicy
Política de seguridad de Istio que define el comportamiento ALLOW, DENY, CUSTOM o AUDIT para las cargas de trabajo seleccionadas o los recursos de destino. La autenticación y la autorización son independientes; las políticas de waypoint usan targetRefs.
Control Plane
Capa de configuración, descubrimiento y gestión de identidad, implementada por istiod. Las cargas útiles de las aplicaciones circulan por los proxies del data plane, no a través de istiod.
Ambient Mode
Modo de data plane que se lanzó por primera vez como alpha en Istio 1.18 y está disponible de forma general desde Istio 1.24, y que proporciona la funcionalidad de service mesh sin Sidecar Proxies.
Características:
- No requiere contenedores Sidecar
- Usa ztunnel a nivel de nodo
- Mayor eficiencia de recursos
- Separación de las funciones L4 y L7
Documentación relacionada: Ambient Mode
Certificate Authority (CA)
Autoridad que emite y gestiona los certificados para la comunicación mTLS entre servicios.
Función en Istio:
- La función Citadel de Istiod desempeña el papel de CA
- Emite certificados basados en el SPIFFE ID
- Renovación automática de certificados (TTL predeterminado: 24 horas)
Términos relacionados: Citadel, SPIFFE, mTLS
Circuit Breaker
Patrón que bloquea las solicitudes hacia servicios con fallos para evitar la propagación del fallo a todo el sistema.
Cómo funciona:
- Closed: funcionamiento normal
- Open: bloquea las solicitudes tras fallos consecutivos
- Half-Open: permite algunas solicitudes después de cierto tiempo
Implementación en Istio: el corte de circuito del pool de conexiones y la expulsión de endpoints por outlier detection no exponen literalmente esta máquina de tres estados.
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: glossary-example-1
spec:
host: reviews
trafficPolicy:
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
baseEjectionTime: 30sDocumentación relacionada: Circuit Breaker
Citadel
Componente de seguridad que existió de forma independiente hasta Istio 1.4. Actualmente está integrado en Istiod.
Funciones principales:
- Gestión de la Certificate Authority (CA)
- Emisión y gestión de SPIFFE ID
- Generación y renovación de certificados X.509
Estado actual: existe como función interna de Istiod en Istio 1.5+
Términos relacionados: Istiod, Certificate Authority
CDS (Cluster Discovery Service)
Una de las APIs xDS que permite a Envoy recibir dinámicamente la configuración de los servicios upstream (clusters).
Información que proporciona:
- Nombre y tipo de cluster
- Política de balanceo de carga
- Configuración de health check
- Configuración de circuit breaker
- Configuración de TLS
Términos relacionados: xDS, Envoy
D-F
Data Plane
Capa que gestiona el tráfico real en una service mesh.
El Data Plane de Istio:
- Sidecars de Envoy, o ztunnel en ambient más waypoints L7 opcionales
- Gestiona el tráfico de la malla incorporado; se aplican exclusiones y límites de protocolo
- Cifrado/descifrado mTLS
- Recolección de métricas
Términos relacionados: Control Plane, Envoy
DestinationRule
CRD de Istio que define las políticas para el tráfico enrutado por VirtualService.
Funciones principales:
- Definición de subsets (versión, región, etc.)
- Política de balanceo de carga
- Configuración del Connection Pool
- Configuración del Circuit Breaker
- Configuración de TLS
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2Documentación relacionada: DestinationRule
eBPF (Extended Berkeley Packet Filter)
Tecnología que permite ejecutar programas de forma segura dentro del kernel de Linux.
Istio puede coexistir con un CNI principal basado en eBPF, como Cilium. Istio CNI es un plugin encadenado/agente de nodo independiente que configura la redirección; ambient no requiere eBPF y no sustituye al CNI principal.
Ventajas:
- Poca sobrecarga
- Procesamiento a nivel de kernel
- Capacidad de programación dinámica
Términos relacionados: Ambient Mode, iptables
EDS (Endpoint Discovery Service)
Una de las APIs xDS que proporciona dinámicamente los endpoints reales (IPs de los Pods) dentro de un cluster.
Información que proporciona:
- Direcciones IP y puertos de los endpoints
- Estado de salud
- Pesos de balanceo de carga
- Información de localidad
Ejemplo:
{
"cluster_name": "outbound|9080||reviews",
"endpoints": [
{
"lb_endpoints": [
{"endpoint": {"address": {"socket_address": {"address": "10.244.1.5", "port_value": 9080}}}},
{"endpoint": {"address": {"socket_address": {"address": "10.244.2.8", "port_value": 9080}}}}
]
}
]
}Términos relacionados: xDS, CDS
Envoy Proxy
Proxy L7 de alto rendimiento que constituye el Data Plane de Istio.
Historia:
- Desarrollado por Matt Klein en Lyft en 2016
- Proyecto CNCF Incubating en 2017
- Proyecto CNCF Graduated en 2018
Características clave:
- Proxy de alto rendimiento escrito en C++
- Configuración dinámica mediante la API xDS
- Compatibilidad con HTTP/1.1, HTTP/2 y gRPC
- Observabilidad rica
Componentes:
- Listeners: escucha en puertos
- Filters: procesamiento de solicitudes/respuestas
- Routers: decisiones de enrutamiento
- Clusters: servicios upstream
Documentación relacionada: Architecture - Envoy Proxy
G-I
Galley
Componente de validación de configuración que existió de forma independiente hasta Istio 1.4. Actualmente está integrado en Istiod.
Funciones principales:
- Validación de la configuración de Istio
- Procesamiento de recursos de Kubernetes
- Comprobación de errores antes de aplicar la configuración
Estado actual: existe como función interna de Istiod en Istio 1.5+
Términos relacionados: Istiod
Gateway
CRD de Istio que define los puntos de entrada del tráfico externo que llega a la Service Mesh.
Tipos:
- Ingress Gateway: tráfico del exterior hacia el interior
- Egress Gateway: tráfico del interior hacia el exterior
apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
name: my-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "example.com"Documentación relacionada: Gateway and VirtualService
gRPC
Framework RPC (Remote Procedure Call) de alto rendimiento desarrollado por Google.
Relación con Istio:
- La API xDS está basada en gRPC
- Se usa para la comunicación entre Istiod y Envoy
- Basado en HTTP/2 (admite multiplexación)
Ventajas:
- Streaming bidireccional
- Baja latencia
- Usa Protocol Buffers
Términos relacionados: xDS
Identity
Representa la identidad de una carga de trabajo dentro de la Service Mesh.
La identidad en Istio:
- Usa el formato SPIFFE ID
- Se basa en el ServiceAccount de Kubernetes
- Se demuestra mediante certificados X.509
Ejemplo:
spiffe://cluster.local/ns/default/sa/reviewsTérminos relacionados: SPIFFE, mTLS
iptables
Herramienta de firewall que controla el tráfico de red en Linux.
Función en Istio:
- istio-init o el agente de nodo de Istio CNI configura la redirección del tráfico
- Redirige todo el tráfico del Pod a Envoy
- Usa la tabla NAT (cadenas PREROUTING y OUTPUT)
Reglas simplificadas (a modo ilustrativo, no es un script de instalación):
# Outbound: All traffic except Envoy -> 15001
iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner 1337 -j REDIRECT --to-port 15001
# Inbound: All traffic -> 15006
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 15006Alternativa de configuración: Istio CNI realiza la configuración de red privilegiada a nivel de nodo.
Documentación relacionada: Architecture - iptables
Istiod
Componente unificado del Control Plane en Istio 1.5+.
Funciones integradas:
- Pilot: Service Discovery, Traffic Management
- Citadel: Certificate Authority, Identity
- Galley: validación de configuración
Método de ejecución:
- Un único binario de Go:
pilot-discovery - Todas las funciones se ejecutan en un solo proceso
- Puertos predeterminados: 15012 (xDS), 15017 (Webhook)
Ventajas:
- Menor complejidad
- Operación simplificada
- Eficiencia de recursos
Documentación relacionada: Architecture - Istiod
J-L
LDS (Listener Discovery Service)
Una de las APIs xDS que permite a Envoy recibir dinámicamente los puertos en los que escuchar y las cadenas de filtros.
Información que proporciona:
- Dirección y puerto del listener
- Protocolo (HTTP, TCP)
- Configuración de la cadena de filtros
- Configuración de TLS
Listeners predeterminados de Istio:
0.0.0.0:15001: TCP outbound0.0.0.0:15006: TCP inbound0.0.0.0:15021: health check0.0.0.0:15090: métricas de Prometheus
Términos relacionados: xDS, Envoy
Locality-aware Load Balancing
Método de balanceo de carga que tiene en cuenta la información de localidad (Region, Zone).
Prioridad:
- Endpoints en la misma Zone
- Otra Zone en la misma Region
- Otra Region
Ejemplo de configuración:
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: glossary-example-2
spec:
host: reviews
trafficPolicy:
loadBalancer:
localityLbSetting:
enabled: true
distribute:
- from: us-west/zone-1a/*
to:
"us-west/zone-1a/*": 80
"us-west/zone-1b/*": 20Documentación relacionada: Zone Aware Routing
M-O
Mixer
Componente de políticas y telemetría que existió hasta Istio 1.4.
Funciones principales:
- Aplicación de políticas (Rate Limiting, Access Control)
- Recolección de telemetría
Motivos de su eliminación:
- Sobrecarga de rendimiento (una llamada a Mixer por cada solicitud)
- Arquitectura compleja
Estado actual: quedó obsoleto durante la transición a 1.5; la funcionalidad restante de Mixer se eliminó en 1.8
Términos relacionados: Istiod
mTLS (Mutual TLS)
Método de comunicación TLS bidireccional en el que cliente y servidor se autentican mutuamente.
El mTLS de Istio:
- Emisión y renovación automáticas de certificados
- Autenticación basada en SPIFFE ID
- El cifrado TLS se negocia; no está fijado a AES-256-GCM
Modos:
- STRICT: solo se permite mTLS
- PERMISSIVE: se permite mTLS + texto plano (para migraciones)
- DISABLE: deshabilita el mTLS de transporte de Istio en modo sidecar; no está soportado en ambient
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
name: default
spec:
mtls:
mode: STRICTDocumentación relacionada: mTLS
Outlier Detection
Funcionalidad que excluye automáticamente los endpoints que muestran un comportamiento anómalo.
Condiciones de detección:
- Número de errores consecutivos
- Tasa de errores
- Fallos de conexión/timeouts; la latencia por sí sola no es un umbral de expulsión por outlier
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: glossary-example-3
spec:
host: reviews
trafficPolicy:
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
baseEjectionTime: 30s
maxEjectionPercent: 50Documentación relacionada: Outlier Detection
P-R
Downstream
Desde la perspectiva de Envoy, se refiere a la parte que envía las solicitudes. Es decir, el cliente que inicia una conexión hacia Envoy.
El Downstream de Envoy:
- Conexiones que llegan a Envoy (Inbound)
- Cliente que envía las solicitudes
- Conexiones recibidas por el Listener
Flujo de tráfico:
Downstream (Client) -> Envoy Proxy -> Upstream (Backend)Escenarios de ejemplo:
1. Modo Sidecar: solicitud outbound
Perspectiva:
- Desde la vista de Envoy: la aplicación es Downstream (envía solicitudes)
- Desde la vista de Envoy: el servicio backend es Upstream (recibe solicitudes)
2. Ingress Gateway: solicitud externa
Configuración de Envoy relacionada con Downstream:
# Listener - Receive Downstream connections
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: downstream-config
namespace: default
spec:
workloadSelector:
labels:
app: reviews
configPatches:
- applyTo: LISTENER
match:
context: SIDECAR_INBOUND
patch:
operation: MERGE
value:
per_connection_buffer_limit_bytes: 32768 # Downstream bufferMétricas de Downstream:
# Downstream connection count
envoy_listener_downstream_cx_active
# Downstream request count
envoy_http_downstream_rq_total
# Downstream response time
envoy_http_downstream_rq_timeTérminos relacionados: Upstream, Envoy, Listener
Upstream
Desde la perspectiva de Envoy, se refiere a la parte que recibe las solicitudes. Es decir, el servicio backend hacia el que Envoy inicia una conexión.
El Upstream de Envoy:
- Conexiones que salen de Envoy (Outbound)
- Servicio backend que procesa las solicitudes
- Endpoints gestionados por el Cluster
Flujo de tráfico:
Downstream (Client) -> Envoy Proxy -> Upstream (Backend)Componentes de Upstream:
1. Cluster (grupo de Upstream)
# Define Upstream Cluster with DestinationRule
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews # Upstream service
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
connectionPool:
tcp:
maxConnections: 100 # Upstream connection limit
http:
http1MaxPendingRequests: 50
http2MaxRequests: 100
outlierDetection:
consecutive5xxErrors: 5 # Upstream failure detection
interval: 30s2. Endpoint (instancia real de Upstream)
# Check upstream endpoints
istioctl proxy-config endpoints <pod-name> | grep reviews
# Example output:
# ENDPOINT STATUS CLUSTER
# 10.244.1.5:9080 HEALTHY outbound|9080||reviews.default.svc.cluster.local
# 10.244.2.8:9080 HEALTHY outbound|9080||reviews.default.svc.cluster.local
# 10.244.3.12:9080 UNHEALTHY outbound|9080||reviews.default.svc.cluster.localPolítica de tráfico de Upstream:
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: glossary-example-4
spec:
host: reviews
trafficPolicy:
# Upstream load balancing
loadBalancer:
consistentHash:
httpHeaderName: "x-user-id"
# Upstream connection pool
connectionPool:
tcp:
maxConnections: 100
connectTimeout: 30s
http:
h2UpgradePolicy: UPGRADE
# Upstream TLS
tls:
mode: ISTIO_MUTUAL
# Upstream Circuit Breaker
outlierDetection:
consecutive5xxErrors: 5
interval: 10s
baseEjectionTime: 30sComparación entre Upstream y Downstream:
| Elemento | Downstream | Upstream |
|---|---|---|
| Dirección | Entra en Envoy (Inbound) | Sale de Envoy (Outbound) |
| Función | Envía solicitudes (Client) | Recibe solicitudes (Server) |
| Configuración de Envoy | Listener, Filter Chain | Cluster, Endpoint |
| Ejemplos | Usuarios externos, otros servicios | API backend, base de datos |
| Métricas | downstream_cx_*, downstream_rq_* | upstream_cx_*, upstream_rq_* |
Ejemplos del mundo real:
Escenario 1: llamada del Servicio A -> Servicio B
+---------------------------------------------------------+
| Service A Pod |
| |
| App --> Envoy Sidecar |
| | |
| | Downstream: App |
| | Upstream: Service B |
+----------|-------------------------------------------------+
|
v
+---------------------------------------------------------+
| Service B Pod |
| |
| Envoy Sidecar --> App |
| | |
| | Downstream: Service A Envoy |
| | Upstream: Local App (Service B) |
+---------------------------------------------------------+Perspectiva del Envoy del Servicio A:
- Downstream: la aplicación del Servicio A
- Upstream: el Servicio B
Perspectiva del Envoy del Servicio B:
- Downstream: el Envoy del Servicio A
- Upstream: la aplicación del Servicio B (local)
Escenario 2: Ingress Gateway
External Client (Downstream)
|
Ingress Gateway (Envoy)
|
Internal Service (Upstream)Métricas de Upstream:
# Upstream connection count
envoy_cluster_upstream_cx_active
# Upstream request counter; derive success/error rates from response-class counters
envoy_cluster_upstream_rq_total
# Upstream response time
envoy_cluster_upstream_rq_time
# Upstream health check
envoy_cluster_health_check_success
# Upstream Circuit Breaker
envoy_cluster_circuit_breakers_default_remaining_rqDetección pasiva del estado de Upstream: las estadísticas de health check activo requieren una configuración aparte.
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: glossary-example-5
spec:
host: reviews
trafficPolicy:
outlierDetection:
# Upstream health detection
consecutiveGatewayErrors: 5
consecutive5xxErrors: 5
interval: 10s
baseEjectionTime: 30s
maxEjectionPercent: 50Depuración:
# 1. Check upstream cluster
istioctl proxy-config clusters <pod-name> --fqdn reviews.default.svc.cluster.local
# 2. Check upstream endpoint status
istioctl proxy-config endpoints <pod-name> --cluster "outbound|9080||reviews.default.svc.cluster.local"
# 3. Check upstream metrics
kubectl exec <pod-name> -c istio-proxy -- \
curl -s localhost:15000/stats/prometheus | grep upstream
# 4. Check upstream connections
istioctl proxy-config all <pod-name> -o json | \
jq '.configs[] | select(.["@type"] | contains("ClustersConfigDump"))'Términos relacionados: Downstream, Envoy, Cluster, Endpoint
Pilot
Componente de gestión de tráfico que existió de forma independiente hasta Istio 1.4. Actualmente está integrado en Istiod.
Funciones principales:
- Service Discovery
- Gestión de tráfico (procesamiento de VirtualService y DestinationRule)
- Servidor xDS
Estado actual: existe como función interna de Istiod en Istio 1.5+
Términos relacionados: Istiod, xDS
RDS (Route Discovery Service)
Una de las APIs xDS que proporciona dinámicamente las reglas de enrutamiento HTTP.
Información que proporciona:
- Reglas de coincidencia de rutas (path, headers, etc.)
- Enrutamiento basado en pesos
- Reglas de redirección y reescritura
- Configuración de timeout y retry
Relación con VirtualService:
- VirtualService -> convertido por Istiod -> configuración RDS
Términos relacionados: xDS, VirtualService
Rate Limiting
Funcionalidad que limita el número de solicitudes permitidas por unidad de tiempo.
Métodos de implementación:
- Local Rate Limiting: procesado localmente por Envoy
- Global Rate Limiting: usa un servicio externo de Rate Limit
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: filter-local-ratelimit
namespace: default
spec:
workloadSelector:
labels:
app: reviews
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.local_ratelimit
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
stat_prefix: http_local_rate_limiter
token_bucket:
max_tokens: 100
tokens_per_fill: 100
fill_interval: 1s
filter_enabled:
default_value:
numerator: 100
denominator: HUNDRED
filter_enforced:
default_value:
numerator: 100
denominator: HUNDREDDocumentación relacionada: Rate Limiting
S-U
SDS (Secret Discovery Service)
Una de las APIs xDS que proporciona dinámicamente certificados y claves TLS.
Información que proporciona:
- Certificados X.509
- Clave privada (Private Key)
- Certificado raíz de la CA
Ventajas:
- No requiere sistema de archivos
- Renovación automática de certificados
- Renovación sin interrupciones
Términos relacionados: xDS, mTLS
Service Entry
CRD de Istio que registra en la malla servicios externos a la Service Mesh.
Casos de uso:
- Control de acceso a APIs externas
- Aplicar funciones de Istio a servicios externos (Retry, Timeout, etc.)
- Integración con Egress Gateway
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: external-api
spec:
hosts:
- api.external.com
ports:
- number: 443
name: https
protocol: HTTPS
location: MESH_EXTERNAL
resolution: DNSDocumentación relacionada: ServiceEntry
Service Mesh
Capa de infraestructura que gestiona la comunicación entre microservicios.
Funciones principales:
- Gestión de tráfico (enrutamiento, balanceo de carga)
- Seguridad (mTLS, autenticación/autorización)
- Observabilidad (métricas, logs, trazas)
- Resiliencia (Retry, Circuit Breaker)
Implementaciones principales:
- Istio
- Linkerd
- Consul Connect
- AWS App Mesh (el soporte finaliza el 30 de septiembre de 2026)
SigV4 (AWS Signature Version 4)
Protocolo de firma para autenticar las solicitudes a las APIs de AWS.
Cómo funciona:
Componentes de la firma:
Canonical Request: formato estandarizado de la solicitud
- Método HTTP
- Ruta URI
- Cadena de consulta
- Headers
- Hash del payload
String to Sign: cadena que se va a firmar
- Algoritmo:
AWS4-HMAC-SHA256 - Marca de tiempo
- Credential Scope
- Hash de la Canonical Request
- Algoritmo:
Signing Key: cálculo de la clave de firma
HMAC(HMAC(HMAC(HMAC("AWS4" + SecretKey, Date), Region), Service), "aws4_request")Signature: firma final
HMAC(SigningKey, StringToSign)
Integración con Istio:
Los SDK de AWS y la AWS CLI firman las solicitudes HTTPS con credenciales temporales proporcionadas por IRSA o EKS Pod Identity. Así la firma queda asociada a los permisos de AWS de la carga de trabajo. La identidad mTLS de Istio y la identidad de AWS IAM son independientes.
El filtro HTTP aws_request_signing de Envoy es una alternativa avanzada. Requiere una compilación de Envoy que incluya la extensión, credenciales disponibles para el contenedor del proxy, el servicio/región de AWS correctos y una coincidencia de filtro restringida al destino de AWS previsto. Insértalo antes del router y después de cualquier reescritura de headers o rutas que afecte a la firma. El HTTPS originado por la aplicación es opaco para este filtro HTTP: Envoy no puede añadir una firma dentro de TLS cifrado. Un diseño de firma en el proxy debe presentar HTTP al proxy que firma y originar TLS verificado hacia el upstream; evita la doble originación de TLS o exponer HTTP sin firmar más allá de la ruta local prevista del proxy.
El diagrama anterior describe esta ruta de proxy de firma configurada explícitamente, no una capacidad predeterminada de Istio. Una anotación de IRSA en el ServiceAccount de la aplicación no demuestra por sí sola que un gateway o un sidecar disponga del entorno de credenciales y del montaje de token que necesita.
La autenticación no es validación de JWT:
SigV4 es una firma HMAC de la solicitud, no un JWT. https://sts.amazonaws.com/.well-known/jwks no es un endpoint de emisor de JWT para validar firmas de las APIs de AWS. RequestAuthentication de Istio valida JWT de un emisor OIDC real. Una AuthorizationPolicy CUSTOM requiere además un servicio configurado en extensionProviders que implemente autorización externa; sin esa implementación no puede validar SigV4. Es preferible usar endpoints de AWS autenticados con IAM o el SDK de AWS para acceder a las APIs de AWS.
Ejemplo de verificación de solo lectura (AWS CLI instalada en la carga de trabajo, con su rol de IAM previsto):
aws sts get-caller-identity
aws s3api head-object --bucket my-bucket --key object.txt --region us-west-2Consideraciones operativas:
- Concede a la carga de trabajo solo las acciones y los recursos de AWS necesarios. Evita depender de un rol de instancia de nodo compartido.
- Confirma que el proveedor de credenciales seleccionado admite credenciales temporales y su renovación. La duración de la sesión es configurable, no es universalmente de una hora.
- Los eventos de administración y los eventos de datos de CloudTrail tienen coberturas distintas; el acceso a objetos de S3 requiere la configuración adecuada de eventos de datos.
- Inspecciona la configuración del proxy para confirmar la ubicación del filtro. Un config dump no muestra el header Authorization de cada solicitud en vivo, y un curl sin firmar sobre HTTPS no es una prueba de SigV4.
- Mide la sobrecarga de firma, buffering y obtención de credenciales para los tamaños de solicitud reales; no se garantiza una sobrecarga fija en milisegundos.
Términos relacionados: AuthorizationPolicy, ServiceEntry, EnvoyFilter
Referencias:
Sidecar
Patrón de contenedor auxiliar que se despliega junto al contenedor de la aplicación.
El Sidecar de Istio:
- Nombre del contenedor:
istio-proxy - Imagen:
istio/proxyv2 - Ejecuta Envoy Proxy
- Intercepta el tráfico configurado mediante el init-container o la redirección de Istio CNI
Métodos de inyección:
- Automática: label del Namespace
- Manual:
istioctl kube-inject
apiVersion: v1
kind: Namespace
metadata:
name: example-mesh
labels:
istio-injection: enabled # Automatic injectionDocumentación relacionada: Sidecar Injection
Sidecar Resource
CRD de Istio que limita la información de servicios que recibe Envoy.
Propósito:
- Reducir el uso de memoria
- Acortar el tiempo de push de configuración
- Delimitar el alcance de la configuración; no es un límite de seguridad de red
apiVersion: networking.istio.io/v1
kind: Sidecar
metadata:
name: default
namespace: default
spec:
egress:
- hosts:
- "./*" # Same namespace only
- "istio-system/*"Efecto:
- Importar menos servicios puede reducir la memoria y el trabajo de configuración; mide el ahorro real.
Documentación relacionada: Architecture - Sidecar Resource
SPIFFE (Secure Production Identity Framework for Everyone)
Estándar para demostrar la identidad de las cargas de trabajo en entornos cloud-native.
Formato del SPIFFE ID:
spiffe://trust-domain/pathEjemplo en Istio:
spiffe://cluster.local/ns/default/sa/reviews
| | | | | |
| | | | | +- ServiceAccount name
| | | | +----- "sa" (ServiceAccount)
| | | +------------ Namespace name
| | +------------------ "ns" (Namespace)
| +------------------------------ Trust Domain
+---------------------------------------- ProtocolComponentes:
- SPIFFE ID: identificador de la carga de trabajo
- SVID (SPIFFE Verifiable Identity Document): X.509-SVID o JWT-SVID; el mTLS de Istio usa X.509-SVID
Términos relacionados: Identity, mTLS
Subset
Agrupación lógica de servicios definida en un DestinationRule.
Usos habituales:
- Por versión:
v1,v2,v3 - Por etapa de despliegue:
stable,canary,test - Por región:
us-west,us-east,eu-central
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: glossary-example-6
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2Documentación relacionada: DestinationRule - Subset Concept
V-Z
Waypoint Proxy
Proxy opcional que proporciona funcionalidad L7 en Ambient Mode.
Función:
- Se selecciona con labels de namespace, Service o Pod; no automáticamente por ServiceAccount
- Basado en Envoy Proxy
- Dedicado a las funciones de gestión de tráfico L7
- Funciona junto con ztunnel
Funciones que proporciona:
- Enrutamiento L7 (basado en Path y Header)
- Retry y Timeout
- Circuit Breaker
- Fault Injection
- Manipulación de headers
Ejemplo de despliegue:
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: reviews-waypoint
namespace: default
spec:
gatewayClassName: istio-waypoint
listeners:
- name: mesh
port: 15008
protocol: HBONECaracterísticas:
- ztunnel gestiona solo L4, el waypoint gestiona L7
- Uso selectivo solo para los servicios que lo necesitan
- Más eficiente en recursos que el Sidecar (enfoque compartido)
- Se selecciona con labels de namespace, Service o Pod; no automáticamente por ServiceAccount
Términos relacionados: Ambient Mode, ztunnel
Después de crear el waypoint, incorpora el servicio previsto, por ejemplo kubectl label service reviews istio.io/use-waypoint=reviews-waypoint --overwrite. Desplegar solo un Gateway no hace que el tráfico pase por él.
VirtualService
CRD de Istio que define cómo se enruta el tráfico dentro de la Service Mesh.
Funciones principales:
- Enrutamiento basado en URI, headers y parámetros de consulta
- Distribución del tráfico basada en pesos
- Configuración de Retry y Timeout
- Fault Injection
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- uri:
prefix: "/v2"
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1Documentación relacionada: Gateway and VirtualService
WASM (WebAssembly)
Formato de instrucciones binario diseñado para ejecutarse en navegadores web. En Istio se usa para ampliar la funcionalidad del proxy Envoy.
Uso en Istio:
- Añadir lógica personalizada como filtro de Envoy
- Ampliar la funcionalidad de forma dinámica sin volver a desplegar
- Se puede escribir en varios lenguajes (Rust, C++, Go, etc.)
- Se ejecuta de forma segura en un entorno sandbox
Casos de uso principales:
- Autenticación/autorización personalizada: implementar lógica de negocio compleja
- Transformación de solicitudes/respuestas: manipulación de headers, transformación del payload
- Enrutamiento avanzado: lógica de enrutamiento personalizada
- Recolección de métricas: telemetría especializada
Las URLs de registro, los digests, las credenciales y los campos pluginConfig que aparecen a continuación son valores de ejemplo para tu propio plugin compilado; Istio no proporciona esas imágenes de ejemplo ni interpreta las opciones específicas del plugin. Un módulo file:// debe existir dentro del contenedor del proxy.
Ejemplo de plugin WASM:
apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
name: custom-auth
namespace: istio-system
spec:
selector:
matchLabels:
istio: ingressgateway
url: oci://ghcr.io/my-org/custom-auth:v1.0.0
phase: AUTHN
pluginConfig:
api_key_header: "X-API-Key"
validate_endpoint: "https://auth.example.com/validate"Métodos de despliegue:
1. Despliegue mediante registro OCI (recomendado)
apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
name: rate-limiter
spec:
url: oci://ghcr.io/my-org/rate-limit:v1.0.0
imagePullPolicy: Always
imagePullSecret: registry-credential2. Despliegue mediante URL HTTP
apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
name: custom-filter
spec:
url: https://example.com/filters/custom-filter.wasm
# Add sha256: with the actual 64-character module digest before deployment3. Despliegue desde archivo local
apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
name: local-filter
spec:
url: file:///etc/istio/filters/custom.wasmEjemplo de desarrollo WASM (Rust):
use proxy_wasm::traits::*;
use proxy_wasm::types::*;
proxy_wasm::main! {{
proxy_wasm::set_http_context(|_, _| -> Box<dyn HttpContext> {
Box::new(CustomFilter)
});
}}
struct CustomFilter;
impl Context for CustomFilter {}
impl HttpContext for CustomFilter {
fn on_http_request_headers(&mut self, _: usize, _: bool) -> Action {
// Demonstrate header mutation, not production API-key authentication.
self.set_http_request_header("x-mesh-demo", Some("wasm"));
Action::Continue
}
}Requisitos previos de compilación y despliegue:
Usa un crate de Rust cdylib con una dependencia proxy-wasm compatible y una versión de dependencia fijada. El callback anterior sigue el ejemplo oficial del SDK de Rust. Instala el target wasm32-unknown-unknown, compila el módulo y empaqueta el .wasm resultante en una imagen OCI Wasm compatible antes de referenciarlo desde WasmPlugin. Un docker build genérico sin Dockerfile no realiza ese empaquetado.
rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown --releaseMide el tiempo de arranque, la memoria y la sobrecarga por solicitud del plugin concreto. Wasm se ejecuta en un sandbox de runtime dentro del proceso del proxy; no es un proceso aparte ni una garantía incondicional de seguridad o rendimiento.
Compatibilidad con Ambient Mode:
apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
name: waypoint-filter
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: reviews-waypoint
url: oci://ghcr.io/filters/custom:latest
phase: AUTHNDepuración:
# Check WASM plugin status
kubectl get wasmplugin -A
# Check WASM-related logs in Envoy logs
kubectl logs <pod-name> -c istio-proxy | grep wasm
# Check WASM module load
istioctl proxy-config all <pod-name> -o json | jq '.. | objects | select(has("@type")) | select(.["@type"] | test("wasm"; "i"))'Consideraciones de seguridad:
- Aislamiento del sandbox: sandbox de runtime dentro de Envoy; revisa la confianza en el plugin y su uso de recursos
- Límites de recursos: se pueden configurar límites de CPU y memoria
- Verificación de integridad: SHA256 comprueba el contenido, no autentica al publicador
- Mínimo privilegio: concede solo los permisos necesarios
Ventajas:
- Alto rendimiento (a nivel de código nativo)
- Ejecución segura en sandbox
- Actualizable sin volver a desplegar
- Compatibilidad con múltiples lenguajes
- Formato estándar de imagen OCI
Limitaciones:
- Algunas llamadas al sistema están restringidas
- E/S de archivos limitada
- Llamadas de red solo a través de la API de Envoy
Términos relacionados: Envoy, Waypoint Proxy, Ambient Mode
Referencias:
xDS (Discovery Service)
Conjunto de APIs para la configuración dinámica de Envoy Proxy.
Significado de "xDS":
x: variable que representa varios tiposDS: Discovery Service
Tipos de API xDS:
| API | Nombre | Función |
|---|---|---|
| LDS | Listener Discovery Service | Puertos de escucha y cadenas de filtros |
| RDS | Route Discovery Service | Reglas de enrutamiento HTTP |
| CDS | Cluster Discovery Service | Configuración de los servicios upstream |
| EDS | Endpoint Discovery Service | Lista real de IPs de Pods |
| SDS | Secret Discovery Service | Certificados y claves TLS |
Método de comunicación:
- Protocolo: gRPC
- Puerto: 15012 (Istiod)
- Streaming bidireccional
Orden:
Agent bootstraps identity -> Envoy subscribes to ADS resources
Istiod pushes LDS/CDS/EDS/RDS updates; local agent serves SDS certificatesDocumentación relacionada: Architecture - xDS API Communication
Zone
Representa una Availability Zone de Kubernetes.
Formato del label:
topology.kubernetes.io/zone: us-west-1aUso en Istio:
- Locality-aware Load Balancing
- Zone Aware Routing
- Enrutamiento con prioridad a la misma Zone
Términos relacionados: Locality-aware Load Balancing
ztunnel (Zero Trust Tunnel)
Componente central de Ambient Mode: un proxy L4 ligero que se ejecuta a nivel de nodo.
Función:
- Se despliega como DaemonSet en cada nodo
- Gestiona el tráfico L4 de todos los Pods
- Proporciona funcionalidad de service mesh sin Sidecar
- Se integra con el plugin CNI
Funciones que proporciona:
- mTLS: cifrado/descifrado automático
- Telemetría L4: recolección de métricas
- Identity: autenticación basada en Service Account
- Balanceo de carga L4: balanceo de carga básico
Características técnicas:
- Escrito en Rust (alto rendimiento)
- Redirección de tráfico gestionada por Istio CNI
- No requiere Init Container
- Recursos de proxy L4 compartidos; dimensiónalos según la carga de trabajo medida del nodo
Ejemplo de despliegue:
# Use the reviewed istioctl version and the complete ambient installation profile
istioctl install --set profile=ambient
kubectl rollout status daemonset/ztunnel -n istio-systemPara una carga de trabajo existente con sidecar, elimina los labels de inyección/revisión y reinicia los Pods para quitar los sidecars antes de incorporarla a ambient; una carga de trabajo nueva sin sidecar no necesita reinicio.
Activación por Namespace:
# Enable Ambient Mode
kubectl label namespace default istio-injection- istio.io/rev-
kubectl label namespace default istio.io/dataplane-mode=ambient --overwriteVentajas:
- El posible ahorro de memoria depende del nodo/carga de trabajo y de la capacidad del waypoint
- No requiere reiniciar los Pods
- Transparencia para la aplicación
- Latencia inicial minimizada
Limitaciones:
- Se requiere Waypoint Proxy para las funciones L7
- Requiere una plataforma de Kubernetes sobre Linux compatible, un CNI principal y los requisitos previos de Istio CNI
Términos relacionados: Ambient Mode, Waypoint Proxy, eBPF
Referencias
Documentación oficial
Documentación relacionada
Última actualización: September 13, 2026


