¿Qué es Istio?
Istio es una malla de servicios con tecnología de open source que controla el intercambio de datos entre los microservicios. Es un complemento y una extensión de Kubernetes que regula el flujo de tráfico, aplica políticas y supervisa las comunicaciones en un entorno de microservicios. Incluye varias API que permiten que se integre a cualquier plataforma de registro, telemetría o sistema de políticas. Puede ejecutarse en diversos entornos locales, virtualizados, en contenedores y en la nube.
Las arquitecturas de microservicios dividen el trabajo de las aplicaciones empresariales en servicios por módulos, lo cual puede facilitar las tareas de mantenimiento y ajuste. Sin embargo, a medida que una aplicación empresarial basada en esta arquitectura adquiere mayor dimensión y complejidad, resulta más difícil supervisarla y gestionarla. La malla de servicios puede resolver los problemas de arquitectura mediante la detección o intercepción del tráfico entre servicios y puede modificar, redirigir o crear solicitudes nuevas a otros servicios.
Arquitectura y elementos de Istio
La arquitectura de Istio se divide en el plano de datos y el plano de control. Además, utiliza proxies Envoy, de alto rendimiento, que se implementan como sidecars y facilitan el tráfico para todos los servicios dentro de la malla de servicios. En el plano de datos, los desarrolladores pueden incorporar el soporte de esta plataforma a un servicio mediante la implementación de un proxy de sidecar dentro del entorno. Este proxy se encuentra junto a los microservicios, y envía las solicitudes desde y hacia otros proxies. En conjunto, forman una red que intercepta las comunicaciones entre los microservicios. El plano de control gestiona y configura los proxies para enrutar el tráfico. Además, configura los elementos para aplicar las políticas y recopilar datos de telemetría.
Recursos de Red Hat
Funciones clave de Istio
Gestión del tráfico
Istio ofrece un control detallado del flujo de tráfico entre servicios y dispone de funciones avanzadas de enrutamiento del tráfico, como la compatibilidad con diferentes métodos de prueba e implementación, entre ellos:
- las pruebas A/B, que consisten en comparar dos versiones diferentes;
- la implementación tipo canary, que consiste en lanzar una versión de prueba más pequeña;
- la implementación azul-verde, que consiste en crear dos entornos idénticos e independientes para reducir el tiempo de inactividad y los riesgos.
Asimismo, gestiona el equilibrio de carga entre las distintas instancias de servicio. Esto significa que el tráfico saliente de un servicio se intercepta en el proxy sidecar de Istio, el cual reenvía la solicitud al destino adecuado en función de las normas de enrutamiento que se definen en el plano de control.
Detección de servicios y capacidad de recuperación
Istio incluye funciones para detectar servicios dentro de la malla de manera automática. Puede realizar pruebas de incorporación de fallas con el fin de simular casos hipotéticos y evaluar el comportamiento de un sistema en condiciones inusuales. Además, cuenta con mecanismos de recuperación, como reintentos, tiempos de espera e interrupción del circuito. El plano de control hace un seguimiento de todas las instancias de servicio y sus ubicaciones; cada instancia nueva que se inicia se registra automáticamente en el plano de control.
Determinación del estado interno y capacidad de expansión
Istio permite determinar el estado interno del sistema y posee capacidad de expansión. Ofrece un seguimiento distribuido a través de integraciones con otras herramientas, como Jaeger o Zipkin, e indicadores y telemetría mediante Prometheus. Incluye paneles detallados a nivel de los servicios para visualizar la comunicación entre estos. Los proxies de sidecar recopilan indicadores, como la cantidad de solicitudes, la latencia y las tasas de error, y los envían al plano de control o a las herramientas de supervisión. Istio puede integrarse con sistemas externos (p. ej., herramientas de supervisión, sistemas de registro y motores de políticas personalizados), lo que permite incorporar más capacidades y funciones a la malla de servicios.
Seguridad y aplicación de políticas
La seguridad mutua de la capa de transporte (mTLS) garantiza la privacidad y la seguridad entre dos aplicaciones mediante la autenticación recíproca de ambas partes. En un modelo de TLS, la autenticación es unidireccional: el servidor autentica al cliente; en cambio, con mTLS, el cliente y el servidor o el sitio web y el explorador lo hacen entre sí. Istio emplea mTLS para asegurar la comunicación entre los servicios y, además, el control de acceso basado en funciones (RBAC), la gestión de certificados, políticas para proteger las API y la rotación automática de claves.
Istio permite configurar desde un solo lugar las políticas de servicio, como las cuotas, los límites de frecuencia y la autenticación/autorización. Ofrece un control detallado de las interacciones entre los servicios a través de las políticas de acceso. La aplicación de las políticas de autenticación, límites de frecuencia o control de acceso se realiza en el proxy, lo cual garantiza la uniformidad entre los diferentes servicios.
Modo Ambient
Istio incluye Ambient, un modo de plano de datos nuevo que suele denominarse "sin sidecar" porque los pods de carga de trabajo ya no necesitan usar este tipo de proxies para participar en la malla. En el modo Ambient, dichos proxies se sustituyen por un plano de datos integrado en la infraestructura, el cual mantiene la gestión del tráfico, la telemetría y la seguridad de confianza cero de Istio. Al eliminar los sidecars, este modo también reduce los recursos de infraestructura que se necesitan para usar la CPU y la memoria. En el modo normal de Istio, el proxy Envoy está en contacto con cada pod de aplicación, mientras que en el modo Ambient, estos pods permanecen intactos y disponen de sus propios contenedores de aplicaciones.
Casos prácticos y ejemplos de Istio y la malla de servicios
La malla de servicios Istio puede utilizarse para alcanzar diversos objetivos y tareas específicos. A continuación, se presentan varios casos prácticos de Istio y ejemplos que muestran la manera en que una empresa puede lograr sus metas utilizando la malla de servicios.
Control del tráfico de los microservicios
Una plataforma de comercio electrónico de gran tamaño implementa actualizaciones frecuentes de sus servicios, como las funciones del carrito, las opciones de pago y el inventario. Con una malla de servicios, la empresa puede utilizar implementaciones de tipo canary para ofrecer nuevas funciones a un subconjunto de usuarios de manera gradual. También puede emplear implementaciones azul-verde para trasladar el tráfico de la versión antigua a la más reciente sin que se produzcan tiempos de inactividad o interrupciones que afecten a la experiencia del usuario. Por su parte, las pruebas A/B permiten que la empresa redirija porcentajes específicos de tráfico a distintas versiones del servicio.
Comunicación segura entre servicios
Una empresa de servicios financieros procesa datos confidenciales de los usuarios a través de distintos servicios para gestionar sus cuentas y detectar posibles actividades fraudulentas. El uso de la malla de servicios permite que la empresa aplique mTLS para mejorar la seguridad y cifrar la comunicación entre los servicios y, al mismo tiempo, ofrece RBAC detallado para lograr una mayor interacción entre ellos.
Capacidad de recuperación y tolerancia a errores
Una plataforma de streaming de video debe garantizar la reproducción ininterrumpida incluso si un servicio específico deja de funcionar o se ralentiza. Con una malla de servicios, es posible interrumpir automáticamente el envío de solicitudes a los servicios que presentan fallas. Gracias a los reintentos con tiempo de espera exponencial, esas solicitudes se vuelven a enviar de manera inteligente. El equilibrio de carga de la malla de servicios distribuye el tráfico entre las instancias de servicio en buen estado.
Determinación del estado interno y supervisión
Una plataforma de software como servicio (SaaS) que se ejecuta en Kubernetes necesita diagnosticar los problemas de latencia en varios microservicios. Una malla de servicios ofrece un seguimiento distribuido que permite que los desarrolladores puedan rastrear las solicitudes entre los distintos servicios. También facilita telemetría en tiempo real, como las tasas de error y los patrones de tráfico.
Integración de la puerta de enlace de API
Una puerta de enlace de API se utiliza para ofrecer servicios a los clientes externos, mientras que los servicios internos se comunican dentro de la malla. Con una malla, la comunicación de los servicios internos es más segura, y el tráfico externo puede realizarse a través de la puerta de enlace de API con mayor facilidad. Además, permite aplicar políticas de manera uniforme para garantizar que las reglas, como los límites de frecuencia, se cumplan de igual modo en todos los servicios internos.
Cumplimiento normativo
Un proveedor de servicios de atención médica debe cumplir los requisitos de la Ley de Portabilidad y Responsabilidad de Seguros de Salud (HIPAA) para la transmisión segura de datos. El uso de una malla de servicios permite que el proveedor aplique estándares de cifrado como TLS y, además, proporciona registros de auditoría detallados de la comunicación entre los servicios con fines de cumplimiento normativo y documentación.
Entornos dinámicos
Una empresa del sector de los videojuegos amplía y reduce con frecuencia sus servicios durante las horas de mayor actividad o los eventos promocionales. La malla de servicios detecta y enruta el tráfico automáticamente a las instancias de servicio que se crean. Asimismo, garantiza un rendimiento uniforme durante las operaciones de ampliación.
Motivos para elegir Red Hat OpenShift Service Mesh para Istio
Red Hat® OpenShift® Service Mesh se basa en el proyecto Istio y crea un punto de control concentrado en una aplicación para abordar diversos problemas y casos prácticos en una arquitectura de microservicios. Además, ofrece una capa transparente a las aplicaciones distribuidas disponibles sin que sea necesario realizar ningún cambio en su código. La malla presenta una manera sencilla de crear una red de servicios implementados que proporcione distintas funciones, como la detección, el equilibrio de carga, la autenticación entre servicios, la recuperación ante posibles fallas, la obtención de indicadores y la supervisión.
El servicio Red Hat OpenShift Service Mesh viene probado y optimizado para Red Hat OpenShift. Es compatible con las funciones específicas de OpenShift, como los operadores y los canales de integración y distribución continuas (CI/CD). Cuenta con el soporte empresarial de Red Hat y recibe actualizaciones y parches con regularidad para garantizar mayor seguridad y estabilidad. Este servicio funciona en varios clústeres Red Hat OpenShift y aporta uniformidad en entornos de nube híbrida o multicloud. Además, favorece la arquitectura multiempresa, lo que permite que las empresas gestionen mallas de servicios independientes para diferentes equipos o cargas de trabajo. Sus funciones de seguridad integradas ofrecen mTLS para todos los servicios de forma predeterminada y se integran con OAuth de Red Hat OpenShift para proporcionar funcionalidades de autenticación y autorización confiables.
El blog oficial de Red Hat
Obtenga la información más reciente sobre nuestro ecosistema de clientes, socios y comunidades.