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. Los contenedores de Windows Server aún no se admiten en Istio de código abierto. El seguimiento de problemas de esta pregunta de característica se puede encontrar aquí.
La personalización de la malla a través de los siguientes recursos personalizados está bloqueada actualmente:
ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin
.El complemento permite el uso de los siguientes tipos de filtro
EnvoyFilter
, con otros tipos de filtro bloqueados:- Lua (
type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
). - Compresor (
type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
) - Límite de velocidad local (
type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
)
Nota:
Aunque se permiten estos
EnvoyFilter
, cualquier problema derivado de ellos (por ejemplo, de la script de Lua o de la biblioteca de compresión) está fuera del ámbito de compatibilidad del complemento Istio. Consulte el documento de directiva de soporte técnico para obtener más información sobre las categorías de soporte técnico para las características de complementos de Istio y las opciones de configuración.- Lua (
La API Gateway para la puerta de enlace de entrada de Istio y la administración del tráfico de malla (GAMMA) aún no se admiten con el complemento Istio. Sin embargo, la API de puerta de enlace para la administración del tráfico de entrada de Istio está actualmente en desarrollo activo para el complemento. Aunque el complemento admite la personalización de anotaciones para las puertas de enlace de entrada de Istio para direcciones IP y etiquetas de servicio, actualmente no se admite la configuración de puerto o protocolo.
Comentarios y solicitudes 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
Azure Kubernetes Service