Skip to content

Comparación de soluciones de Service Mesh

Última actualización: February 19, 2026 Objetivos de comparación: Istio 1.24, Linkerd 2.15, Kong Mesh 2.8, Consul Connect 1.19

Este documento proporciona una comparación integral de las principales soluciones de Service Mesh disponibles en entornos Kubernetes.

Tabla de contenido

  1. Descripción general y arquitectura
  2. Comparación de rendimiento
  3. Comparación de funcionalidades
  4. Complejidad operativa
  5. Funcionalidades de seguridad
  6. Funcionalidades de observabilidad
  7. Soporte multi-cluster
  8. Análisis de costes
  9. Recomendaciones de casos de uso

Descripción general y arquitectura

¿Qué es un Service Mesh?

Un Service Mesh es una capa de infraestructura que gestiona la comunicación entre microservicios. Proporciona funcionalidades de gestión del tráfico, seguridad y observabilidad sin modificar el código de la aplicación.

Conceptos básicos de Service Mesh

Comparación de patrones de arquitectura

Arquitectura detallada

Istio

Características:

  • Proxy: Envoy (C++)
  • Arquitectura: Control Plane unificado (Istiod)
  • Configuración: Kubernetes CRD (VirtualService, DestinationRule, etc.)
  • Fortalezas: El más completo en funcionalidades, soporte empresarial a gran escala
  • Debilidades: Curva de aprendizaje elevada, sobrecarga de recursos

Componentes principales:

  • Istiod: Pilot + Citadel + Galley unificados
  • Envoy Proxy: Data Plane
  • Ingress/Egress Gateway: Control del tráfico en los límites del cluster

Linkerd

Características:

  • Proxy: Linkerd2-proxy (Rust, desarrollado a medida)
  • Arquitectura: Control Plane de microservicios
  • Configuración: Recursos nativos de Kubernetes + Annotations sencillas
  • Fortalezas: Ultraligero, instalación y operación sencillas, rendimiento rápido
  • Debilidades: Funcionalidades limitadas, sin soporte para VM

Componentes principales:

  • Destination: Service Discovery y políticas de enrutamiento
  • Identity: Emisión automática de certificados mTLS
  • Proxy Injector: Inyección automática de Sidecar

Kong Mesh

Características:

  • Proxy: Envoy (Kuma Data Plane)
  • Arquitectura: Control Plane universal (K8s + VM)
  • Configuración: Kuma CRD + Kong Mesh UI
  • Fortalezas: Excelente soporte para VM, multi-zone/multi-cloud, funcionalidades empresariales
  • Debilidades: Las funcionalidades comerciales son de pago, comunidad relativamente pequeña

Componentes principales:

  • Global Control Plane: Sincronización de políticas multi-zone
  • Zone Control Plane: Gestión local del data plane
  • Kuma DP: Data plane para Kubernetes y VM

Arquitectura detallada de Kong Mesh

Kong Mesh es un Service Mesh universal basado en Kuma que integra múltiples clusters y entornos en una única malla mediante una arquitectura multi-zone.

Arquitectura de despliegue multi-zone

Características principales:

  • Global Control Plane: Gestiona de forma centralizada las políticas de todas las zonas
  • Zone Control Plane: Gestiona de forma independiente el data plane de cada zona
  • Service Discovery automático: Descubrimiento automático de servicios entre zonas
  • mTLS unificado: La comunicación entre zonas también se cifra automáticamente

Conexión de servicios y flujo de tráfico

Mecanismo de propagación de políticas

Ámbito de propagación de políticas por tipo:

Tipo de políticaÁmbitoMétodo de propagaciónCaso de uso
MeshGlobalTodas las zonasConfiguración global de mTLS
TrafficRouteGlobalTodas las zonasReglas globales de enrutamiento
TrafficPermissionGlobalTodas las zonasControl de acceso entre servicios
HealthCheckZoneSolo zona localComprobaciones de salud por zona
ProxyTemplateZoneSolo zona localConfiguración de Envoy por zona

Ciclo de vida del Data Plane

Service Discovery entre zonas

Funcionalidades de Service Discovery:

  • Registro automático: Los servicios de cada zona se registran automáticamente con Zone CP
  • Vista global: Global CP integra los servicios de todas las zonas
  • Local-first: Primero enruta a servicios de la misma zona
  • Failover automático: Cambia automáticamente a otra zona cuando falla el servicio local
  • Enrutamiento basado en tags: Control de enrutamiento detallado mediante tags de servicio

Ejemplos de configuración de Kong Mesh

Recurso Mesh (configuración global de mTLS):

yaml
apiVersion: kuma.io/v1alpha1
kind: Mesh
metadata:
  name: default
spec:
  # Enable global mTLS
  mtls:
    enabledBackend: ca-1
    backends:
    - name: ca-1
      type: builtin
      dpCert:
        rotation:
          expiration: 24h
      conf:
        caCert:
          RSAbits: 2048
          expiration: 10y
  # Global metrics collection
  metrics:
    enabledBackend: prometheus-1
    backends:
    - name: prometheus-1
      type: prometheus
      conf:
        port: 5670
        path: /metrics

TrafficRoute (enrutamiento entre zonas):

yaml
apiVersion: kuma.io/v1alpha1
kind: TrafficRoute
metadata:
  name: api-route
  namespace: kuma-system
spec:
  sources:
  - match:
      kuma.io/service: '*'
  destinations:
  - match:
      kuma.io/service: api
  conf:
    # Local zone priority (80%)
    loadBalancer:
      roundRobin: {}
    split:
    - weight: 80
      destination:
        kuma.io/service: api
        kuma.io/zone: zone-1
    - weight: 20
      destination:
        kuma.io/service: api
        kuma.io/zone: zone-2

TrafficPermission (control de acceso entre servicios):

yaml
apiVersion: kuma.io/v1alpha1
kind: TrafficPermission
metadata:
  name: api-to-database
  namespace: kuma-system
spec:
  sources:
  - match:
      kuma.io/service: api
      kuma.io/zone: '*'  # api service from all zones
  destinations:
  - match:
      kuma.io/service: database
      kuma.io/zone: zone-3  # database in Zone 3 only

Ventajas de la arquitectura de Kong Mesh

Arquitectura multi-zone:

  • Service Mesh global: Integra múltiples clusters y entornos en una única malla
  • Gestión independiente de zonas: Cada zona opera de forma independiente; el tráfico local funciona normalmente incluso si falla Global CP
  • Failover automático: Cambia automáticamente a otra zona ante el fallo de una zona
  • Consistencia de políticas: Las mismas políticas se aplican automáticamente a todas las zonas

Soporte universal:

  • Kubernetes + VM: Soporta por igual K8s y VM
  • Multi-cloud: Integra AWS, GCP, Azure y On-Premises
  • Integración de sistemas heredados: Añade gradualmente workloads de VM existentes a la malla

Comodidad operativa:

  • GUI incluida: Gestión visual con la GUI de Kong Mesh
  • Plantillas de políticas: Se proporcionan plantillas de políticas predefinidas
  • Service Discovery automático: Los servicios se descubren automáticamente sin configuración manual

Funcionalidades empresariales (de pago):

  • RBAC: Control de acceso detallado basado en roles
  • Multi-tenancy: Aislamiento y gestión a nivel de zona
  • Soporte 24/7: Soporte profesional para entornos de producción
  • Observabilidad avanzada: Métricas y tracing detallados

Consul Connect

Características:

  • Proxy: Envoy o proxy integrado
  • Arquitectura: Consul Server Cluster + Consul Clients
  • Configuración: HCL o Kubernetes CRD
  • Fortalezas: Service Discovery sólido, diseño VM-first, multi-datacenter
  • Debilidades: Requiere gestión de la infraestructura de Consul; la integración con Kubernetes es más compleja que Istio

Componentes principales:

  • Consul Server: Service Catalog, KV Store, gestión de certificados
  • Consul Client: Se ejecuta en cada nodo, registro de servicios
  • Envoy Sidecar: Proxy de tráfico

Comparación de rendimiento

Sobrecarga de latencia

Resultados de benchmarks (aumento de latencia P99, 1000 RPS):

Service MeshP50P95P99Uso de CPUUso de memoria
Baseline0.1ms0.2ms0.3ms--
Linkerd+0.5ms+0.8ms+1.2ms+3-8%+20-50MB
Istio+1.0ms+2.5ms+3.5ms+5-15%+50-150MB
Kong Mesh+0.8ms+2.0ms+3.0ms+5-12%+40-120MB
Consul Connect+1.0ms+2.5ms+3.5ms+6-14%+50-140MB

Entorno de prueba: EKS 1.28 de 3 nodos, m5.xlarge, 100 servicios, 1000 RPS

Comparación de uso de recursos

Recursos del Control Plane

ComponenteIstioLinkerdKong MeshConsul Connect
CPU500m-1100m-300m200m-500m500m-1
Memoria1-2GB200-500MB500MB-1GB1-2GB
Réplicas1 (Istiod)3-5 (microservicios)1-2 (Zone CP)3-5 (Consul Servers)

Recursos del Data Plane (por Pod)

ProxyIstio EnvoyLinkerd2-proxyKuma DPConsul Envoy
CPU100-500m20-100m100-400m100-500m
Memoria50-150MB20-50MB40-120MB50-140MB

Comparación de throughput

RPS máximo (solicitudes por segundo):

Conclusión:

  • Linkerd: Menor sobrecarga, proxy ligero
  • Istio/Consul: Sobrecarga ligeramente mayor debido a más funcionalidades
  • Kong Mesh: Nivel de rendimiento medio

Comparación de funcionalidades

Tabla de comparación integral de funcionalidades

Área de funcionalidadIstioLinkerdKong MeshConsul Connect
Gestión del tráfico
División de tráfico (Canary)DetalladaBásicaDetalladaBásica
Pruebas A/BBasadas en headersLimitadaBasadas en headersLimitada
Blue-Green
Mirroring de tráficoNoEnterprise
Circuit BreakingBásico
RetryDetalladoBásicoDetalladoBásico
Timeout
Inyección de fallosLimitadaLimitada
Seguridad
Automatización de mTLS
Políticas de autorizaciónMuy detalladasBásicasDetalladasIntentions
Integración con CA externa
Autenticación JWTLimitada
Limitación de tasaEnvoyFilterNoEnterprise
Observabilidad
Métricas (Prometheus)RicasBásicasRicasBásicas
Tracing distribuidoTodos los backendsJaegerTodos los backendsJaeger/Zipkin
Logs de accesoMuy detalladosBásicosDetalladosBásicos
Visualización de topologíaKialiDashboardGUIUI
OpenTelemetry
Soporte de plataforma
Kubernetes
Máquinas virtualesLimitadoNoExcelenteExcelente
Multi-clusterExcelenteCompatibleExcelenteExcelente
Service DiscoveryMuy sólido
Operaciones
Complejidad de instalaciónAltaBajaMediaMedia
ActualizaciónMediaFácilMediaMedia
Solución de problemasDifícilFácilMediaMedia
Herramienta CLIistioctllinkerdkumactlconsul

Leyenda:

  • Sí = Totalmente compatible
  • Limitado = Soporte limitado o funcionalidad Enterprise
  • No = No compatible

Comparación detallada de gestión del tráfico

Ejemplo de despliegue Canary

Istio:

yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        user-agent:
          regex: ".*Mobile.*"
    route:
    - destination:
        host: reviews
        subset: v2
      weight: 100
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90
    - destination:
        host: reviews
        subset: v2
      weight: 10
---
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

Linkerd:

yaml
apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
  name: reviews-split
spec:
  service: reviews
  backends:
  - service: reviews-v1
    weight: 90
  - service: reviews-v2
    weight: 10
---
# Requires separate Service creation
apiVersion: v1
kind: Service
metadata:
  name: reviews-v1
spec:
  selector:
    app: reviews
    version: v1
---
apiVersion: v1
kind: Service
metadata:
  name: reviews-v2
spec:
  selector:
    app: reviews
    version: v2

Kong Mesh:

yaml
apiVersion: kuma.io/v1alpha1
kind: TrafficRoute
metadata:
  name: reviews-route
spec:
  sources:
  - match:
      kuma.io/service: '*'
  destinations:
  - match:
      kuma.io/service: reviews
  conf:
    split:
    - weight: 90
      destination:
        kuma.io/service: reviews
        version: v1
    - weight: 10
      destination:
        kuma.io/service: reviews
        version: v2

Consul Connect:

hcl
Kind = "service-splitter"
Name = "reviews"
Splits = [
  {
    Weight        = 90
    ServiceSubset = "v1"
  },
  {
    Weight        = 10
    ServiceSubset = "v2"
  },
]

Comparación:

  • Istio: Control más detallado (enrutamiento basado en headers, diversas condiciones de coincidencia)
  • Linkerd: Sencillo, pero requiere Services separados
  • Kong Mesh: Kuma CRD, intuitivo
  • Consul: Configuración HCL, integrada con Service Discovery

Funcionalidades de seguridad

Comparación de configuración de mTLS

Istio:

yaml
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT
---
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: default
  namespace: istio-system
spec:
  host: "*.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL

Linkerd:

bash
# mTLS enabled automatically (no configuration needed)
linkerd install | kubectl apply -f -

# Add annotation to namespace
kubectl annotate namespace default linkerd.io/inject=enabled

Kong Mesh:

yaml
apiVersion: kuma.io/v1alpha1
kind: Mesh
metadata:
  name: default
spec:
  mtls:
    enabledBackend: ca-1
    backends:
    - name: ca-1
      type: builtin
      dpCert:
        rotation:
          expiration: 24h
      conf:
        caCert:
          RSAbits: 2048
          expiration: 10y

Consul Connect:

hcl
Kind = "mesh"
Meta = {
  "consul.hashicorp.com/gateway-kind" = "mesh-gateway"
}
TLS {
  Incoming {
    TLSMinVersion = "TLSv1_2"
  }
}

Comparación de políticas de autorización

Istio (el más detallado):

yaml
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: reviews-policy
spec:
  selector:
    matchLabels:
      app: reviews
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/default/sa/productpage"]
    to:
    - operation:
        methods: ["GET"]
        paths: ["/reviews/*"]
    when:
    - key: request.headers[user-agent]
      values: ["*Mobile*"]

Linkerd:

yaml
apiVersion: policy.linkerd.io/v1beta1
kind: Server
metadata:
  name: reviews-server
spec:
  podSelector:
    matchLabels:
      app: reviews
  port: 9080
  proxyProtocol: HTTP/1
---
apiVersion: policy.linkerd.io/v1alpha1
kind: AuthorizationPolicy
metadata:
  name: reviews-policy
spec:
  targetRef:
    kind: Server
    name: reviews-server
  requiredAuthenticationRefs:
  - kind: ServiceAccount
    name: productpage

Kong Mesh:

yaml
apiVersion: kuma.io/v1alpha1
kind: TrafficPermission
metadata:
  name: reviews-permission
spec:
  sources:
  - match:
      kuma.io/service: productpage
  destinations:
  - match:
      kuma.io/service: reviews

Consul Connect (Intentions):

hcl
Kind = "service-intentions"
Name = "reviews"
Sources = [
  {
    Name   = "productpage"
    Action = "allow"
  }
]

Comparación:

  • Istio: Control L7 muy detallado (método, Path, Header)
  • Linkerd: Basado en Service Account, sencillo
  • Kong Mesh: Permisos a nivel de Service
  • Consul: Basado en Intentions, intuitivo

Funcionalidades de observabilidad

Recopilación de métricas

Istio:

  • Cantidad de métricas: Más de 50 métricas predeterminadas
  • Personalización: Extensión ilimitada con EnvoyFilter
  • Integración: Prometheus, Grafana, Kiali

Linkerd:

  • Cantidad de métricas: Más de 20 métricas predeterminadas (centradas en señales doradas)
  • Personalización: Limitada
  • Integración: Prometheus, Grafana, Linkerd Dashboard

Kong Mesh:

  • Cantidad de métricas: Más de 40 métricas predeterminadas
  • Personalización: Datadog, Prometheus
  • Integración: GUI de Kong Mesh, Grafana

Consul Connect:

  • Cantidad de métricas: Más de 30 métricas predeterminadas
  • Personalización: Integración con Telegraf
  • Integración: Consul UI, Prometheus, Grafana

Tracing distribuido

Backends compatibles:

Service MeshJaegerZipkinTempoDatadogAWS X-Ray
Istio
LinkerdLimitadoLimitado
Kong Mesh
ConsulLimitadoLimitadoLimitado

Herramientas de visualización

Istio + Kiali:

yaml
apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
  name: kiali
spec:
  deployment:
    accessible_namespaces: ["**"]
  external_services:
    prometheus:
      url: http://prometheus:9090
    grafana:
      url: http://grafana:3000
    tracing:
      url: http://jaeger-query:16686

Linkerd Dashboard:

bash
linkerd viz install | kubectl apply -f -
linkerd viz dashboard

Kong Mesh GUI:

yaml
apiVersion: kuma.io/v1alpha1
kind: Mesh
metadata:
  name: default
spec:
  metrics:
    enabledBackend: prometheus-1
    backends:
    - name: prometheus-1
      type: prometheus

Consul UI:

hcl
ui_config {
  enabled = true
  metrics_provider = "prometheus"
  metrics_proxy {
    base_url = "http://prometheus:9090"
  }
}

Soporte multi-cluster

Comparación de arquitectura

Istio Multi-Primary:

Linkerd Multi-cluster:

Kong Mesh Multi-zone:

Consul Multi-datacenter:

Comparación de funcionalidades multi-cluster

FuncionalidadIstioLinkerdKong MeshConsul
Complejidad de configuraciónMediaBajaMediaMedia
Service DiscoveryAutomáticoServicios espejoAutomáticoSólido
Failover de tráficoAutomáticoManualAutomáticoAutomático
mTLSAutomáticoMediante GatewayAutomáticoAutomático
Requisitos de redFlat o GatewayGatewayFlat o GatewayGateway
Sincronización de políticasLimitadaGlobal CP
Número máximo de clustersDecenas~10DecenasDecenas

Complejidad operativa

Instalación y actualización

Istio:

bash
# Install
istioctl install --set profile=default

# Upgrade (Canary)
istioctl install --set profile=default --revision=1-24-0

# Sequential transition per namespace
kubectl label namespace default istio.io/rev=1-24-0 --overwrite
kubectl rollout restart deployment -n default

Linkerd:

bash
# Install
linkerd install | kubectl apply -f -

# Upgrade (In-place)
linkerd upgrade | kubectl apply -f -

# Automatic rollout

Kong Mesh:

bash
# Helm install
helm install kong-mesh kong-mesh/kong-mesh

# Upgrade
helm upgrade kong-mesh kong-mesh/kong-mesh

Consul:

bash
# Helm install
helm install consul hashicorp/consul -f values.yaml

# Upgrade
helm upgrade consul hashicorp/consul -f values.yaml

Comparación:

  • Linkerd: Instalación y actualización más sencillas
  • Istio: La actualización Canary permite cero tiempo de inactividad, pero es compleja
  • Kong/Consul: Basados en Helm, complejidad media

Herramientas de solución de problemas

Istio:

bash
# Check proxy status
istioctl proxy-status

# Validate configuration
istioctl analyze

# Check proxy configuration
istioctl proxy-config cluster <pod> -n <namespace>

# Change log level
istioctl proxy-config log <pod> --level debug

Linkerd:

bash
# Check status
linkerd check

# Check statistics
linkerd stat deploy

# Tap (real-time traffic observation)
linkerd tap deploy/webapp

# Check profile
linkerd profile --template deploy/webapp

Kong Mesh:

bash
# Check status
kumactl inspect dataplanes

# Check metrics
kumactl inspect meshes

# Check logs
kubectl logs -n kong-mesh-system deployment/kong-mesh-control-plane

Consul:

bash
# Check status
consul members

# Check services
consul catalog services

# Check intentions
consul intention list

# Proxy logs
kubectl logs <pod> -c consul-connect-envoy-sidecar

Curva de aprendizaje

Análisis de costes

Coste de infraestructura

Cálculo de costes basado en recursos (entorno de 100 Pod, EKS m5.xlarge):

Service MeshCPU de Control PlaneMemoria de Control PlaneCPU de Data Plane (total)Memoria de Data Plane (total)Coste mensual (estimado)
Baseline----$300
Linkerd300m500MB2 vCPU5GB+$50 (~$350)
Istio1 vCPU2GB10 vCPU15GB+$150 (~$450)
Kong Mesh500m1GB8 vCPU12GB+$120 (~$420)
Consul1 vCPU2GB10 vCPU14GB+$145 (~$445)

Nota: Los costes reales pueden variar significativamente según los patrones de workload, el volumen de tráfico y la configuración.

Coste operativo

Tiempo de ingeniería (base mensual):

TareaIstioLinkerdKong MeshConsul
Configuración inicial40h8h20h24h
Operaciones diarias20h/mes5h/mes10h/mes12h/mes
Solución de problemas15h/mes3h/mes8h/mes10h/mes
Actualizaciones8h/trimestre2h/trimestre4h/trimestre5h/trimestre

Coste de licencia

ProductoOpen SourceEnterprise
IstioGratis (Apache 2.0)Google Cloud Service Mesh (según uso)
LinkerdGratis (Apache 2.0)Buoyant Enterprise ($$$)
Kong MeshKuma Open SourceKong Mesh Enterprise (requiere contacto)
ConsulGratis (MPL 2.0)Consul Enterprise ($$$)

Ejemplos de funcionalidades Enterprise:

  • Kong Mesh Enterprise: GUI multi-zone, RBAC, soporte 24/7
  • Consul Enterprise: Registro de auditoría, Namespaces, zonas de redundancia
  • Buoyant Enterprise: Control Plane HA, soporte 24/7, SLA

Recomendaciones de casos de uso

1. Gran empresa (más de 1000 servicios)

Recomendado: Istio

Motivos:

  • Conjunto de funcionalidades más completo
  • Control de tráfico detallado (pruebas A/B, Canary)
  • Seguridad sólida (autorización L7)
  • Federación multi-cluster
  • Amplia comunidad y ecosistema de herramientas

Ejemplo de configuración:

yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: production
  components:
    pilot:
      k8s:
        hpaSpec:
          minReplicas: 3
          maxReplicas: 10
        resources:
          requests:
            cpu: 2000m
            memory: 4Gi

2. Startup pequeña o mediana (10-100 servicios)

Recomendado: Linkerd

Motivos:

  • Instalación rápida (menos de 5 minutos)
  • Baja sobrecarga de recursos
  • Operaciones sencillas
  • mTLS y métricas automáticos

Ejemplo de configuración:

bash
linkerd install | kubectl apply -f -
linkerd viz install | kubectl apply -f -

# Enable per namespace
kubectl annotate namespace default linkerd.io/inject=enabled

3. Cloud híbrida (K8s + VM)

Recomendado: Consul Connect o Kong Mesh

Motivos:

  • Soporte VM-first para workloads
  • Service Discovery sólido
  • Coherencia multi-plataforma

Ejemplo de configuración de Consul:

hcl
# In Kubernetes
service {
  name = "web"
  port = 8080
  connect {
    sidecar_service {}
  }
}

# In VM
service {
  name = "database"
  port = 5432
  connect {
    sidecar_service {
      proxy {
        upstreams = [
          {
            destination_name = "web"
            local_bind_port  = 8080
          }
        ]
      }
    }
  }
}

4. Estrategia multi-cloud

Recomendado: Istio o Kong Mesh

Motivos:

  • Neutral respecto al cloud
  • Políticas y observabilidad coherentes
  • Federación multi-cluster

Istio multi-cluster:

bash
# Cluster 1 (AWS)
istioctl install --set values.global.meshID=mesh1 \
  --set values.global.multiCluster.clusterName=aws-cluster \
  --set values.global.network=aws-network

# Cluster 2 (GCP)
istioctl install --set values.global.meshID=mesh1 \
  --set values.global.multiCluster.clusterName=gcp-cluster \
  --set values.global.network=gcp-network

# Share Service Discovery
istioctl create-remote-secret \
  --context=aws-cluster --name=aws-cluster | \
  kubectl apply -f - --context=gcp-cluster

5. Migración de sistemas heredados

Recomendado: Kong Mesh o Consul

Motivos:

  • Soporte simultáneo de VM y contenedores
  • Migración gradual
  • Integración con Service Discovery existente

Híbrido de Kong Mesh:

yaml
# Kubernetes Service
apiVersion: v1
kind: Service
metadata:
  name: legacy-db
  annotations:
    kuma.io/mesh: default
spec:
  type: ExternalName
  externalName: legacy-db.vm.local
---
# Run Kuma DP on VM
kuma-dp run \
  --cp-address=https://kong-mesh-cp:5678 \
  --dataplane-token-file=/tmp/token \
  --dataplane-file=/etc/kuma/dataplane.yaml

6. Requisitos sólidos de observabilidad

Recomendado: Istio

Motivos:

  • Más de 50 métricas predeterminadas
  • Logs de acceso detallados
  • Compatibilidad con todos los backends de tracing
  • Integración con Kiali

Stack de observabilidad:

yaml
# Prometheus + Grafana + Jaeger + Kiali
istioctl install --set profile=demo \
  --set values.prometheus.enabled=true \
  --set values.grafana.enabled=true \
  --set values.tracing.enabled=true \
  --set values.kiali.enabled=true

Conclusión final y recomendaciones

Árbol de decisión

Guía rápida de recomendaciones

SituaciónPrimera opciónSegunda opciónEvitar
Primeros pasosLinkerdKong MeshIstio (complejo)
Gran empresaIstioKong MeshLinkerd (funcionalidades limitadas)
Restricciones de recursosLinkerd-Istio (sobrecarga)
Workloads de VMConsulKong MeshLinkerd (sin soporte)
Multi-cloudIstioConsulSoluciones de cloud único
ROI rápidoLinkerd-Istio (curva de aprendizaje)
Control detalladoIstioKong MeshLinkerd (limitado)

Recomendaciones finales

Istio:

  • Cuándo: Gran empresa, se necesitan funcionalidades completas, el equipo tiene experiencia con Service Mesh
  • Ventajas: Funcionalidades líderes en su categoría, comunidad sólida, orientado al futuro
  • Desventajas: Curva de aprendizaje pronunciada, alto uso de recursos

Linkerd:

  • Cuándo: Simplicidad ante todo, equipo pequeño, inicio rápido, eficiencia de recursos
  • Ventajas: Instalación/operación sencillas, baja sobrecarga, mTLS automático
  • Desventajas: Funcionalidades limitadas, sin soporte para VM

Kong Mesh / Consul Connect:

  • Cuándo: Entorno híbrido (K8s + VM), multiplataforma, integración de sistemas heredados
  • Ventajas: Soporte VM-first, arquitectura flexible, Service Discovery sólido
  • Desventajas: Las funcionalidades comerciales son de pago, tamaño de la comunidad

Próximos pasos:

  1. Probar 2-3 soluciones en un entorno PoC
  2. Realizar benchmarks de rendimiento con patrones de workload reales
  3. Recopilar comentarios del equipo
  4. Establecer un plan de rollout a producción

Documentos relacionados: