Compartir por


Complemento de malla de servicios basado en Istio para Azure Kubernetes Service

Istio aborda los retos a los que se enfrentan los desarrolladores y operadores con una arquitectura distribuida o de microservicios. El complemento de malla de servicios basado en Istio proporciona una integración oficialmente admitida y probada para Azure Kubernetes Service (AKS).

¿Qué es una malla de servicios?

Las aplicaciones modernas se diseñan normalmente como colecciones distribuidas de microservicios, en las que cada colección de microservicios realiza una función empresarial discreta. Una malla de servicios es un nivel de infraestructura dedicada que puede agregar a sus aplicaciones. Permite agregar de forma transparente capacidades como la observabilidad, la administración del tráfico y la seguridad, sin agregarlas a su propio código. El término malla de servicios describe tanto el tipo de software que se usa para implementar este patrón, como el dominio de seguridad o de red que se crea cuando se usa ese software.

A medida que la implementación de servicios distribuidos, como en un sistema basado en Kubernetes, crece en tamaño y complejidad, puede volverse más difícil de entender y administrar. Es posible que tenga que implementar capacidades como el descubrimiento, el equilibrio de carga, la recuperación de errores, las métricas y la supervisión. Una malla de servicios también puede abordar requisitos operativos más complejos, como pruebas A/B, implementaciones canarias, limitación de velocidad, control de acceso, cifrado y autenticación descentralizada.

La comunicación entre servicios es lo que hace posible una aplicación distribuida. El enrutamiento de esta comunicación, tanto dentro de los clústeres de aplicaciones como entre ellos, se vuelve cada vez más complejo a medida que aumenta el número de servicios. Istio ayuda a reducir esta complejidad a la vez que alivia la carga de los equipos de desarrollo.

¿Qué es Istio?

Istio es una malla de servicios de código abierto que se superpone de forma transparente a las aplicaciones distribuidas existentes. Las potentes funciones de Istio proporcionan una forma uniforme y más eficiente de proteger, conectar y supervisar los servicios. Istio permite el equilibrio de carga, la autenticación de servicio a servicio y la supervisión, con pocos o ningún cambio en el código del servicio. Su potente plano de control aporta características vitales, entre las que se incluyen:

  • Protección de la comunicación entre servicios en un clúster con cifrado TLS (seguridad de la capa de transporte), autenticación y autorización sólida basada en identidades.
  • Equilibrio de carga automático para el tráfico HTTP, gRPC, WebSocket y TCP
  • Control específico del comportamiento del tráfico, con reglas de enrutamiento enriquecidas, reintentos, conmutaciones por error e inyección de errores
  • Una API de configuración y capa de directiva conectable que admite controles de acceso, límites de velocidad y cuotas
  • Métricas, registros y seguimientos automáticos para todo el tráfico de un clúster, incluida la entrada y salida del clúster

¿En qué se diferencia el complemento de Istio de código abierto?

Este complemento de malla de servicios usa Istio de código abierto y se basa en él. El complemento ofrece las siguientes ventajas adicionales:

  • Las versiones de Istio se prueban y verifican para que sean compatibles con las versiones admitidas de Azure Kubernetes Service.
  • Microsoft se encarga del escalado y la configuración del plano de control de Istio.
  • Microsoft ajusta el escalado de componentes AKS como coredns cuando se habilita Istio.
  • Microsoft proporciona un ciclo de vida administrado (actualizaciones) para los componentes de Istio cuando lo activa el usuario.
  • Verificación de la configuración de entrada externa e interna.
  • Verificado para trabajar con servicio administrado para Azure Monitor para Prometheus y Azure Managed Grafana.
  • El Soporte técnico de Azure oficial proporcionado para el complemento.

Limitaciones

El complemento de malla de servicios basado en Istio para AKS tiene las siguientes limitaciones:

  • El complemento no funciona en clústeres AKS que usen el Complemento de malla de servicios abiertos para AKS.
  • El complemento no funciona en clústeres de AKS con instalaciones autoadministrados de Istio.
  • El complemento no admite la adición de pods asociados a nodos virtuales que se van a agregar en la malla.
  • El complemento aún no admite puertas de enlace de salida para el control de tráfico saliente.
  • El complemento aún no admite el modo ambiente sin sidecar. Microsoft está contribuyendo actualmente a la secuencia de trabajo ambiente en código abierto de Istio. La integración de productos para el modo Ambient está en la hoja de ruta y se está evaluando continuamente a medida que evoluciona el flujo de trabajo ambiente.
  • El complemento aún no admite implementaciones de varios clústeres.
  • El complemento aún no admite contenedores de Windows Server, ya que esto no está disponible en Istio de código abierto. El seguimiento de problemas de esta pregunta de característica se puede encontrar aquí.
  • La personalización de malla a través de los siguientes recursos personalizados se bloquea por ahora: ProxyConfig, WorkloadEntry, WorkloadGroup, Telemetry, IstioOperator, WasmPlugin, EnvoyFilter.
  • Para EnvoyFilter, el complemento solo admite el filtro del tipo Lua por ahora (type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua). Aunque se permite este EnvoyFilter, no se admite ningún problema derivado del propio script Lua. Actualmente se bloquean otros tipos de EnvoyFilter.
  • La API de puerta de enlace para la puerta de enlace de entrada de Istio o la administración del tráfico de malla (GAMMA) aún no se admiten con el complemento Istio. Está previsto permitir personalizaciones como la configuración de direcciones IP estáticas de entrada como parte de la implementación de la API de puerta de enlace para el complemento en el futuro.

Comentarios y preguntas de características

Los comentarios y las solicitudes de características para el complemento Istio se pueden proporcionar mediante la creación de problemas con la etiqueta "service-mesh" en el repositorio de GitHub de AKS.

Pasos siguientes