¿Qué es Istio?

Copiar URL

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.

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

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.

Obtén más información sobre Istio en Red Hat Developer

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. 

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.

Descubre el avance tecnológico de Red Hat OpenShift Service Mesh 3.0

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.

Hub

El blog oficial de Red Hat

Obtenga la información más reciente sobre nuestro ecosistema de clientes, socios y comunidades.

Todas las versiones de prueba de los productos de Red Hat

Con las versiones de prueba gratuitas de nuestros productos, podrás adquirir experiencia práctica, prepararte para obtener una certificación o evaluar las soluciones para saber si son adecuadas para tu empresa.

Más información

¿Qué es Podman Desktop?

Podman Desktop es una herramienta open source gratuita que simplifica el uso de contenedores en un entorno de desarrollo local.

Los remplazos de CentOS

Las distribuciones de Linux que poseen más características similares en relación con CentOS Linux facilitarán la transición antes de que llegue al final de su vida útil (EOL) el 30 de junio de 2024.

¿Qué es CentOS?

CentOS es un proyecto open source que ofrece dos distribuciones de Linux® diferentes: CentOS Stream y CentOS Linux.

Open source: lecturas recomendadas

Artículos relacionados