Header Ads Widget

Ticker

6/recent/ticker-posts

Introducción a Service Mesh


¿Qué es exactamente la malla de servicios y cómo se administran varias mallas?

La malla de servicios es un patrón de diseño que proporciona un marco de trabajo de red común, lo que ayuda a resolver el problema de introducir una arquitectura de microservicios. Con el creciente interés en los microservicios, la malla de servicios ganó mucho impulso en los últimos años, con muchos proyectos de malla de servicios ahora en el mercado.

En un LiveCast reciente , exploramos la malla de servicios. Los expertos Lin Sun , IBM e Idit Levine , Solo.io, compartieron los beneficios de la malla de servicios y demostraron cómo podría implementar y administrar una arquitectura de malla de servicios de Istio dentro de su propia pila. A continuación, compartimos sus conclusiones y también consideramos hacia dónde se dirige el ecosistema de malla de servicios en general.

Vea la introducción completa a Service Mesh LiveCast aquí:

Problemas de microservicios

Para comprender la malla de servicios, primero se deben comprender los microservicios. Los microservicios son un estilo de arquitectura de software útil para nuevos desarrollos y, como hemos visto recientemente, también para la modernización heredada . Pero a medida que se expande un ecosistema de microservicios, rápidamente se encuentran con problemas relacionados con la implementación y la escalabilidad.

Los microservicios resuelven un problema pero introducen otros. Es decir, traen un cambio organizacional significativo, dice Idit Levine. Ahora que las aplicaciones están distribuidas, con cada equipo trabajando en su propia lógica de negocios, cada vez están sucediendo más cosas en la red. Por lo tanto, la red se convierte en el núcleo de cómo se diseña la infraestructura. Esto presenta nuevos desafíos para el enrutamiento, la seguridad y la observabilidad.

Entrar en Service Mesh

Los contenedores y los orquestadores de contenedores como Kubernetes resolvieron algunos de estos problemas al empaquetar servicios con sus propios tiempos de ejecución, ejecutar contenedores y asignarlos a las máquinas. Sin embargo, todavía existía una brecha en una lógica operativa crítica: la gestión de la comunicación entre servicios.

Esto es lo que Service Mesh pretende hacer realmente bien. La malla de servicios es un patrón de diseño que abstrae la red, agregando sidecars estándar junto a sus servicios para manejar la red, la seguridad y la observabilidad. Muchas mallas de servicios utilizan el proxy Envoy , que actúa como puerta de enlace para cada servicio.

Al unir microservicios con un marco de red estándar, obtiene mejoras operativas: los desarrolladores de servicios no tienen que dedicar tanto tiempo a conectarse y conectarse en red, reintentar y configurar tiempos de espera, dice Lin. Ahora tiene un proxy de sidecar para hacer ese trabajo.

Fundamentos de Istio

Istio es una de las mallas más adoptadas, destinada a la adopción empresarial. Istio es fundamentalmente un plano de control y un plano de datos, con proxies sidecar basados ​​en Envoy para manejar el tráfico y aplicar acciones en servicios individuales.

A continuación, se muestra un resumen amplio de algunos componentes clave de la malla de servicios de Istio:

  • Plano de control : para configurar y emitir configuraciones.
  • Plano de datos : donde viven los proxies sidecar. Recibe información del plano de control.
  • API de Istio : puede ayudar a configurar proxies complementarios mediante programación.
  • Puerta de enlace : una puerta de enlace de entrada y salida para controlar el tráfico entrante y saliente en la capa de aplicación.

Algunas técnicas y comandos de Istio

Entonces, ¿cómo empezamos con Istio? Como parte del comité directivo y del comité de supervisión técnica de Istio, Lin Sun tiene muchos consejos para compartir. Destacó muchos comandos y métodos útiles de la CLI para comenzar con Istio.

La forma más sencilla de instalar Istio es mediante Istioctluna línea de comandos. Esto se instalará con configuraciones básicas predeterminadas de Istio, optimizadas para entornos de producción más pequeños.

$ istioctl install

También puede modificar los parámetros de instalación o pasar archivos de configuración escritos en YAML para instalar con configuraciones personalizadas.

Para actualizar Istio, también puede hacerlo desde la CLI. Lin nos recuerda que tengamos cuidado con los mensajes de advertencia por problemas de incompatibilidad al pasar de una versión a otra.

(* |istio-book/bkvqth2w0h62fcapeg0g:default)
istio # istioctl upgrade

En su presentación, Lin considera una aplicación de comerciante de acciones de muestra implementada con Kubernetes a la que se puede acceder a través del ingreso de K8 o un balanceador de carga. Para tal configuración, Lin describe el uso de Ingres Gateway para controlar el tráfico entrante y explica cómo proteger la configuración del gateway y el tráfico entrante.

La adición de un servicio a la malla se puede lograr utilizando la CLI con el add-to-meshcomando. También puede habilitar la inyección automática de sidecar en un espacio de nombres. Luego, reiniciar un pod inyectaría un sidecar Envoy en cada servicio.

Para observar la comunicación entre servicios, Lin recomienda utilizar el panel de Kiali , un panel de Istio de código abierto, para visualizar las interacciones entre los servicios. Kiali expone información de topología, flujo de tráfico a través de la puerta de enlace de entrada y códigos de error.

Una vez que se agrega un sidecar, los usuarios generalmente desean asegurar la comunicación entre los servicios con la malla de servicios. Es bueno tener en cuenta que Istio usa mTLS permisivo, útil para la incorporación, pero este valor predeterminado debe desactivarse eventualmente para una aplicación más estricta de mTLS.

Lin continúa describiendo cómo usar Istio para controlar el tráfico, enrutar solicitudes de manera selectiva, realizar pruebas de caos, controlar el tráfico saliente, analizar recursos para depurar e inspeccionar pods y servicios para solucionar problemas y depurar. Para obtener detalles específicos, recomendamos consultar la documentación de Istio o descargar Istio Explained: Getting Started with Service Mesh , el volumen en coautoría de Lin Sun y Daniel Berg que explica estas y otras técnicas.

Lea también: Comparación de las principales mallas de servicio de Kubernetes

Ecosistema de malla de servicios

Cuando se trata de opciones de malla de servicio, tenemos "muchas opciones para elegir", dice Idit Levine. Hay más de nueve mallas de servicios importantes en el mercado, la mayoría de código abierto: Linkerd, NGINX, Consul, Istio, Kuma, Open Service Mesh, AWS App Mesh, Mesh y otras.

A lo largo de estas opciones de malla de servicios, existen diferentes arquitecturas, procesos de incorporación únicos y API personalizadas. Sin mencionar la amenaza del bloqueo del proveedor. Toda esta variabilidad puede hacer que elegir el más adecuado para su trabajo sea un poco difícil. Además, ¿un proyecto de malla de servicios se convertirá en un estándar de ecosistema? Idit compara el fervor continuo con la historia de la orquestación de contenedores: se podría decir que Kubernetes ganó, y quienes invirtieron en Mesos lo lamentaron.

Por el contrario, un mercado multinube puede seguir admitiendo varias mallas. "Hay una razón por la que es posible que desee utilizar más de una malla de servicios", dice Idit. Por ejemplo, si está utilizando funciones de Lambda, utilizar App Mesh de AWS puede ser su opción más poderosa.

Service Mesh rara vez viene solo

Arreglar un ecosistema distribuido de múltiples mallas podría volverse bastante engorroso. Las mallas de servicio de la competencia fueron la responsabilidad principal detrás de la creación del proyecto de caja de arena de CNCF SMI , una interfaz estándar para mallas de servicio en Kubernetes.

Sin embargo, una interfaz estándar solo resolvería la mitad del problema. En su charla, Service Mesh Past, Present, and Future , Idit argumenta que DevOps empresarial requiere una capa de abstracción para actuar como un único panel de control para todas las instancias de mesh, incluso si todas usan Istio.

“El problema es más complejo que esto”, dijo Idit. “Por lo general, tendrá más de una instancia de malla de servicios; la razón es que tendrás más de un clúster ". Si una empresa tiene entre 50 y 1000 clústeres en producción, administrar cada instancia podría convertirse en un verdadero problema.

Para configurar y administrar múltiples mallas de servicios en varios clústeres, Idit recomienda utilizar algo como GlooMesh , un proyecto de código abierto que abstrae las diferencias entre API dispares. Con este "plano de control de planos de control" agnóstico, los usuarios pueden administrar múltiples mallas desde la misma fuente y configurarlas a través de una API, CLI o UI.

El futuro de la malla de servicios

Los microservicios presentan nuevos problemas relacionados con la conectividad, la seguridad y la observabilidad. Sin embargo, "la gestión de microservicios no tiene por qué ser complicada", dijo Lin. Service Mesh es un marco programable para aliviar estas preocupaciones.

Como hemos visto, Istio proporciona una gran cantidad de energía al usuario. La API es de muy bajo nivel y ofrece muchas capacidades. Además, la cadena de filtros de Envoy es extensible, lo que significa que los usuarios pueden ampliar lo que Envoy e Istio pueden proporcionar.

El futuro podría ver un mayor énfasis en extender la cadena de filtros Envoy con filtros personalizados para transformación, métricas y registro. Se están llevando a cabo proyectos para hacer esto más accesible utilizando WebAssembly . Las posibles desventajas aquí son una mayor latencia y una falta de madurez de WASM con los casos de uso de producción.

La utilización de un plano de control agnóstico podría aliviar las acciones repetitivas al aplicar políticas en múltiples mallas de servicios. Aunque ciertamente no es necesaria una mayor abstracción para todos los casos de uso, esto podría encontrar su uso en entornos empresariales importantes.

En este artículo, presentamos un marco básico para ayudar a comprender Istio y brindamos una idea de hacia dónde se dirige el panorama de la malla de servicios. Para obtener más información sobre Istio, considere elegir Istio Explained: Getting Started with Service Mesh o asistir a IstioCon .

 

Publicar un comentario

0 Comentarios