El concepto (“Service Mesh”)[https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh] hace referencia a la posibilidad de generar comunicación entre múltiples componentes entre cada uno. Mas allá de poder generar las conexiones de red, este concepto en realidad se implementa a nivel de aplicación. Kuma es precisamente una herramienta creada para implementar a nivel de aplicación Service Mesh y lograr el control de nuestra aplicación.
Kuma
Esta es la herramienta open source de (“Kong”)[https://konghq.com/] capaz de implementar Service Mesh tanto para Kubernetes, VMs e incluso en ambientes onpremise. Además que ofrece soporte para escalamiento horizontal también incluye características como “multi zona” y “multi cluster”. Tal como se aprecia en la siguiente imagen, es una herramienta que ofrece una versión Enterprise la cuál soporta administrar mallas individuales para cada área de la organización.
Componentes
Básicamente se compone de 2 partes:
- DataPlane: Este componente se comporta como un proxy, el cuál permite lidear con la complejidad de comunicación en la malla. Está construido a partir del Envoy proxy. Internamente necesita 2 archivos: dataplane (que contiene toda la configuración de cómo debe funcionar) y kuma-dp(el binario que levanta el servicio de proxy).
- ControlPlane: este componente administra básicamente la configuración de la malla y permite comunicarse con los diferentes dataplanes. Implementa políticas de salida y entrada en la malla y está construido a partir de “Envoy xDS APIs”.
Instalación
Dado su naturaleza de proyecto opensource, Kuma cuenta con muy buena documentación que permite empezar a utilizar en muy poco tiempo. Puedes visitar la web de Kuma y explorar los tutoriales que ofrecen.
Es importante notar que los pasos a seguir dependen del tipo de aplicación con la que se vaya a trabajar, hay dos modos de configuración: modo Kubernetes y modo Universal. El modo Kubernetes tal como se entiende es para aplicaciones que están corriendo sobre una plataforma kubernetes. El modo universal es una configuración mas manual pero permite entonces tener instalaciones ya sea en máquinas virtuales o máquinas físicas, donde tendremos que encargarnos de la correcta puesta en marcha de los dataplanes para lograr la comunicación necesaria.
Conclusión
Kuma es un producto muy fácil de utiliza, la documentación disponible y los recursos de la versión OpenSource hacen que sea muy sencillo entender como instalarlo y ponerlo a funcionar en nuestra aplicación. Hay que familiarizarse con la syntaxis de los archivos YAML de configuración, pero nada que no se pueda acompañar con un café.