Header Ads Widget

Ticker

6/recent/ticker-posts

Comparación de las principales mallas de servicio de Kubernetes



La revolución de la nube ha llevado a las empresas a implementar una variedad de servicios. Estos servicios están intrínsecamente conectados a través de entornos híbridos de múltiples nubes. Los proveedores de microservicios a menudo se enfrentan a complejidades crecientes a medida que su suite de servicios se expande. ¿Cómo superan las empresas estos desafíos?

Cómo se organizan y ejecutan los microservicios típicos. Imagen cortesía de Kubernetes.io .

Las aplicaciones modernas ahora se ejecutan en contenedores, que se construyen sobre un sistema operativo común. Estos contenedores, a la inversa, tienen su propia memoria, sistema de archivos, CPU y espacio de procesamiento . Esta disposición es relativamente ligera. Aumenta la coherencia ambiental y los equipos de DevOps encuentran que la administración de contenedores es más fácil de forma aislada.

Sin embargo, todo sistema encuentra obstáculos. Abordaremos rápidamente Kubernetes y luego saltaremos inmediatamente a algunas de nuestras mallas de servicio favoritas.

El borde de Kubernetes

Las aplicaciones distribuidas enfrentan algunos problemas comunes: tiempo de inactividad, escasa escalabilidad y conmutación por error. Estos pueden ser una pesadilla para arreglarlos manualmente. Apagar incendios es costoso y requiere mucho tiempo, ¿no debería haber una mejor manera?

Kubernetes surgió como una solución de gestión automatizada para proveedores de servicios en la nube. También es de código abierto y respaldado por Google. Los equipos de DevOps pueden descargar las engorrosas tareas de mantenimiento del marco, liberando tiempo y recursos para otras tareas. En general, Kubernetes ofrece los siguientes beneficios :

  • Equilibrio de carga y distribución del tráfico para garantizar la estabilidad del servicio. Kubernetes puede exponer un contenedor utilizando DNS o una dirección IP.
  • Agnosticismo del almacenamiento: permite a los equipos elegir entre proveedores de almacenamiento local y de nube
  • Creación y eliminación automatizadas de contenedores, incluida la asignación dinámica de recursos entre ellos.
  • Containerización de tareas a través de nodos configurables (también conocido como embalaje de contenedores)
  • Gestión automática de contenedores basada en comprobaciones de estado, incluidos reinicios y eliminación de procesos
  • Actualizaciones sin reconstrucción basadas en el secreto, la autenticación y la gestión de datos confidenciales

Kubernetes no es una plataforma como servicio (PaaS) tradicional. La documentación establece que "Kubernetes proporciona los componentes básicos para la creación de plataformas para desarrolladores, pero conserva la elección y la flexibilidad del usuario donde es importante". Muchos de los beneficios que analizamos son electivos: los equipos pueden utilizar funciones según sea necesario. Kubernetes está orientado a los microservicios sin ser monolítico en sí mismo.

¿Qué es una malla de servicio, de todos modos?

Una malla de servicios actúa como una capa de infraestructura para su entorno existente . Facilita la comunicación entre sus microservicios basados ​​en API al tiempo que refuerza la seguridad. Si bien esto suena muy similar a Kubernetes, las mallas de servicio brindan niveles adicionales de control y configuración de datos . También se colocan encima de la capa de su contenedor.

Las mallas de servicios también incluyen las siguientes características:

  • Redes proxy llamadas sidecars
  • Gestión de políticas
  • Recopilación de telemetría y métrica
  • Rastreo

Las mallas de servicio están diseñadas para ser ligeras. Dado que estas capas se centran en el rendimiento, incurren en poca sobrecarga en la red existente. También ayudan a administrar el tráfico de aplicaciones para arrancar. Una implementación de malla adecuada elimina la carga de los servicios individuales, lo que permite a los desarrolladores codificar sus aplicaciones individualmente mientras DevOps supervisa la malla.

Sin más preámbulos, veamos qué aportan nuestras tres mallas de servicio:

Istio

Istio se lanzó en 2017 y se ha convertido en una solución de malla de servicios integral para los equipos de DevOps. La plataforma ha gozado de mucha exposición gracias al respaldo de Google, IBM y Lyft. Es una de las mallas de servicio más populares para las implementaciones de Kubernetes en la actualidad. La última generación de producción es la versión 1.5.1.

Características y Beneficios

La malla de Istio se centra en cuatro áreas principales: conexiones, seguridad, control y observación. Istio ofrece un amplio conjunto de controles de gestión de tráfico, perfecto para distribuir llamadas API y actividades relacionadas. Los equipos de DevOps pueden aprovechar las implementaciones por etapas y canarias, las pruebas A / B y la asignación de tráfico basada en porcentajes.

Todo el tráfico se enruta a través de proxies Envoy, lo que ofrece un gran rendimiento y una configuración sencilla. Los servicios virtuales proporcionan una excelente integración con Kubernetes. Puede configurar un solo servicio virtualpara abordar "todos los servicios en un espacio de nombres específico". Istio afirma que puede dividir una aplicación monolítica en varios servicios pequeños utilizando este método. Eso simplifica la administración sin afectar negativamente a sus usuarios. Los equipos que ejecutan un clúster de Kubernetes pueden aprovechar el descubrimiento de servicios, que identifica automáticamente los puntos finales críticos de su sistema. Istio también emplea definiciones de recursos personalizadas exclusivas de Kubernetes. El código de implementación de Istio usa etiquetas (o metadatos) para compatibilidad. Las implementaciones de Istio aprovechan las puertas de enlace y las entradas de servicio, que admiten varios clústeres de Kubernetes. Otras salvaguardas de tráfico garantizan una funcionalidad perfecta cuando surgen problemas.

Istio maneja la autenticación a través de una API de Kubernetes personalizada. La configuración es bastante sencilla. La seguridad se gestiona a través de una cuenta de usuario especializada.

Finalmente, Istio proporciona una plantilla específica de Kuber para la creación rápida de atributos. En general, la solución ofrece muchas ventajas a los usuarios de Kubernetes, además de las funciones independientes del marco que su equipo disfrutará automáticamente.

Linkerd

Buoyant, Inc. lanzó originalmente Linkerd , y luego evolucionó a  Linkerd2 a fines de 2018. La malla de servicios se creó principalmente para el marco de Kubernetes. También es de código abierto. Linkerd tiene una presencia considerable en Fortune 500, impulsando microservicios para Walmart, Comcast, eBay y otros. La compañía se apresura a iluminar a sus grandes seguidores. Linkerd tiene más de 3,000 miembros de Slack y 10,000 estrellas de GitHub. La última versión de producción es la versión 2.7.

Características y Beneficios

Entonces, ¿de qué se trata todo este rumor? Linkerd fue diseñado para ser liviano y sencillo. Una de sus principales ventajas es la compatibilidad con las plataformas existentes; Se necesitan muy pocos cambios de codificación (si es que hay alguno) para comenzar a funcionar. Eso significa que puede dedicar un tiempo precioso a la configuración y la activación de su red de servicio.

De hecho, Linkerd afirma que puede comenzar en cuestión de segundos. Linkerd requiere que su interfaz de línea de comandos se adapte a Kubernetes. Puede lograr esto con un solo comando. Desde aquí, simplemente valide su clúster de Kubernetes e instale Linkerd encima. Todo este proceso requiere solo un puñado de comandos de principio a fin.

La gestión del tráfico

¿Cómo gestiona Linkerd el tráfico? La malla puede enrutar todo el tráfico a través de proxies, incluidos TCP, TLS, WebSockets y túneles HTTP. Esto es fundamental para prevenir los atascos en el tráfico y mantener la estabilidad del servicio. Incluso puede desviar el tráfico a diferentes servicios de destino.

El marco también introduce "presupuestos de reintento" en la mezcla, manteniendo una proporción preestablecida de solicitudes y reintentos normales. Esto evita los reintentos de pánico y facilita una mejor gestión de la carga. La plataforma también utiliza webhooks de admisión de Kubernetes para inyecciones de proxy. Estos se agregan a los pods dentro de sus clústeres de Kubernetes.

Linkerd usa KubernetesServiceAccount para manejar mTLS dentro del clúster. Los certificados y las claves se colocan en un contenedor seguro o secreto de Kubernetes .

La supervisión y la disponibilidad de métricas son sólidas, especialmente a través del panel de Linkerd. Los equipos pueden ver las tasas de éxito, las solicitudes por segundo y la latencia. Esto está destinado a complementar su tablero existente en lugar de reemplazarlo.

Cónsul

La premisa de Consul es simple: conectar y proteger los servicios en cualquier plataforma, a través de cualquier nube pública o privada. La compañía ofrece su plataforma de código abierto e incluso trae una solución de nivel empresarial a la mesa. También puede ampliar Consul gracias a su compatibilidad con los principales proveedores de servicios. Consul es la plataforma más antigua del grupo, con esfuerzos de desarrollo que se remontan hasta 2014. La última versión de producción es la versión 1.7.2.

Características y Beneficios

Consul proporciona un conjunto de funciones de control, centrándose en la configuración y la segmentación. Estos se pueden aprovechar juntos o individualmente. Puede implementar Consul de forma nativa o como un marco de proxy, esta última funcionalidad se integra automáticamente. Dicho esto, Consul también admite Envoy como opción de proxy.

Las características principales del marco son las siguientes :

  • Descubrimiento de servicios a través de DNS o HTTP
  • Verificaciones de estado en diferentes servicios, nodos y clústeres, incluidas las desviaciones de tráfico lejos de los hosts problemáticos
  • Almacenes jerárquicos de clave y valor a través de una API HTTP
  • Comunicación de servicio segura y basada en la intención mediante certificados TLS
  • Soporte integral del centro de datos, que se opone a la necesidad de abstracción

Puede implementar Consul sobre Kubernetes utilizando un gráfico de Helm. Consul emplea lo que ellos llaman un cliente local, lo que permite a los equipos ejecutar Consul como pods en cada nodo. La API de Consul lo hace posible. Al igual que Istio, la malla también usa sidecars para lograr conexiones TLS mutuas. Eso allana el camino para la autenticación, el cifrado y una comunicación más sólida.

En general, Consul se creó para coexistir con Kubernetes. El descubrimiento de servicios de Kubernetes facilita la conexión con servicios externos, gracias al registro de servicios adaptativo de Consul.

La gente detrás de Consul ha publicado una serie de recursos , destinados a unificar Kubernetes y Consul. Estos proporcionan información sobre las mejores prácticas de desarrollo . La plataforma Consul también puede interactuar con una implementación de Azure-Kubernetes.

Kuma

La misión de Kuma es simple: promover una sólida conectividad de servicios a través de una GUI moderna y fácil de usar. También se centra en gran medida en las optimizaciones que exprimen cada gramo de rendimiento de su ecosistema. Según el CTO Marco Palladino, Kuma es “la única malla de servicios basada en Envoy con gobernanza abierta…” Los creadores de Kuma también están en el proceso de donar su plataforma a la Cloud Native Computing Foundation (CNCF). Esto asegurará que los desarrolladores de aplicaciones en la nube tengan otra poderosa herramienta de administración a su disposición. La última versión de producción es 0.5.0.

Características y Beneficios

Kuma está construido sobre Envoy, lo que le otorga una inmensa flexibilidad durante la implementación. Kuma trae su interfaz ordenada y se puede operar completamente a través de CRD o con API RESTful. La vinculación de microservicios es simple: permite a los usuarios designar políticas (L4 + L7) para seguridad, enrutamiento, observabilidad y más usando un solo comando. Otras soluciones requieren varios pasos para lograr el mismo objetivo. Kuma también puede correr donde lo necesite. Estas configuraciones incluyen:

  • Plataformas de Kubernetes
  • Maquinas virtuales
  • Entornos en la nube
  • Entornos locales
  • Numerosas instancias y clústeres de K8

El agnosticismo de plataforma fue un objetivo principal desde el principio. Además, la simplicidad del tablero de Kuma se extiende al proceso de configuración, que está simplificado. La malla supera a los principales competidores en tiempo de inicio, administración de clústeres y registro; este último funciona tanto con bases de datos como con aplicaciones. Por ejemplo, otras plataformas pueden requerir un clúster para cada malla. Solo necesita un clúster Kuma para más de 100 mallas.

Los administradores disfrutan de un acceso sin problemas a las métricas compiladas de Kuma. También puede realizar la inyección y el seguimiento de fallas, lo que facilita la identificación de las debilidades del ecosistema. En consecuencia, puede establecer controles de salud personalizados.

Los recursos de Envoy de bajo nivel se pueden configurar a través de plantillas de proxy, que ofrecen un control adicional más allá de las capacidades de stock de Kuma. Estas definiciones escritas no se activan a pesar de Kuma, están integradas de manera complementaria. Esto asegura que las cosas se mantengan cohesionadas. Si lo tuyo son las puertas de enlace API, Kuma se combina armoniosamente con la puerta de enlace de Kong. Hay muchas cosas que me gustan de Kuma sin una configuración minuciosa, lo que aplana la curva de aprendizaje y proporciona una rica funcionalidad.

La compañía también mantiene numerosos recursos en línea: a saber, su blog, seminarios web alojados, resúmenes y libros electrónicos. La documentación es clara y organizada.

Cuándo usar qué

Las mallas de servicio se han vuelto cada vez más capaces en los últimos años. Han evolucionado a la par con los estándares de comunicación web, se han adaptado a los protocolos de seguridad cambiantes y han introducido herramientas de gestión más completas en la mezcla. Tanto los proveedores de microservicios menores como los principales ya no deben lidiar con la seguridad o los altos volúmenes de tráfico.

Los adoptantes de Kubernetes tendrán dificultades para encontrar mejores opciones. Como evaluación rápida:

  • Si necesita una gestión de tráfico ultra granular y favorece a Envoy sobre otros proveedores, Istio es el camino a seguir.
  • Si disfruta de una bulliciosa comunidad de soporte y desea realizar la menor cantidad posible de cambios en la codificación, apunte a Linkerd .
  • Por último, si necesita la máxima capacidad de ampliación o una solución de nivel empresarial, considere Consul .

¿Qué malla de servicio prefieres? ¡No dudes en hacérnoslo saber a continuación!

Publicar un comentario

0 Comentarios