La forma en que se despliegan aplicaciones en producción evoluciona y cambia todos los días, ahora con el auge de los microservicios también llegan nuevas herramientas que nos ayudan a hacer el trabajo de DevOps de una manera más sencilla para desplegar este tipo de arquitectura de aplicaciones.
Para esto tenemos herramientas como Docker Swarn o Kubernetes que nos ayudan a la interconección con los microservicios, hoy vamos a hablar de Kubernetes.
Es un sistema de código abierto, desarrollado por Google, para la administración de aplicaciones (micro-servicios), despliegue automático y fácil escalamiento de estas aplicaciones.
La primera versión de Kubernetes salió en junio de 2014 y en este momento la versión es la 1.8.1 que se lanzó el 12 de octubre.
Kubernetes ayuda a la administración de aplicaciones, estas aplicaciones corren en containers de Docker. Tienen un panel de administración que, de manera gráfica, permite aumentar el número de containers de un micro-servicio y con esto puedes tener un escalamiento sencillo. También cuenta con una herramienta CLI que permite hacer la configuración desde la terminal.
Usado en conjunto con herramientas como Jenkins, Travis o CircleCI se puede hacer un despliegue automático de estos micro-servicios.
Pods
Un pod es un componente que está en un container, se pueden tener tantos pods como se necesiten de un misma aplicación corriendo. Esta es la forma en que se escala, aumentando el número de pods de una aplicación.
Services
Un service no es algo diferente a un conjunto de pods (de la misma aplicación) que trabajan juntos. Estos services tienen algo llamado service discovery que permite conectar a los pods entre sí. También cuentan con un balanceador de carga para distribuir el tráfico a cada pod.
Kubernetes tiene una arquitectura conocida como maestro-esclavo, donde tenemos un nodo maestro en el que se encuentra el API server, con el cual podemos administrar Kubernetes y los nodos esclavos. También se encuentra aquí el Controller Manager que se encarga de administrar los pods (cuántos debe correr, reiniciarlos en caso de falla). Luego tenemos el Nodo esclavo, donde corren los pods y adicionalmente está kube-proxy, que se encarga de distribuir las peticiones a los diferentes pods según la demanda.
Kubernetes puede ser instalado y usado en AWS con una herramienta propia llamada kops, en Microsoft Azure tiene un asiste que ayuda a instalar de manera gráfica (como casi todo en Azure).
Como vimos en esta introducción, Kubernetes es una herramienta muy útil y sencilla de usar, permite de manera amigable realizar orquestación de microservicios que corren en containers de Docker. Cuéntame si conocías algo de Kubernetes y cómo lo usas, o deja todas tus dudas en los comentarios del post.