Contenedores Docker y Orquestación con Kubernetes en IaaS
Clase 4 de 25 • Curso de Azure IaaS
En todo momento, al hablar de infraestructura como servicio hablamos de máquinas virtuales, en este curso también estamos hablando de redes virtuales y balance de cargas. Puede parecer un tanto obsoleto, pero, por otro lado, ha sentado las bases de una nueva tendencia, los contenedores. ¿Has escuchado de ellos? Quizá el término de Docker puede venir a tu cabeza.
¿Qué es Docker? ¿Qué es a lo que todos llaman contenedores?
Hay un curso en Platzi en donde Guido nos indica de qué va todo esto, se trata de una nueva tecnología que es capaz de “comprimir” en una imagen una solución que funcione a modo de servicio o sitio web. Una nueva manera de desplegarlos de manera completamente independiente a cualquier entorno o configuración. Básicamente es la solución definitiva a la terrible frase de “funcionaba bien en mi máquina”.
Las imágenes de Docker son una manera excepcional de aislar a nuestras soluciones de los equipos, puedes crear la imagen en una máquina con prestaciones sumamente bajas y desplegarla en un servidor sin problemas, o incluso de manera inversa. Como sea, no verás ningún cambio en lo absoluto en tu proyecto. Ahora, después de tener una imagen, desplegarla y hacerla productiva requerirá de un orquestador, algo que permita que esta imagen sea distribuida. Aquí es donde entra Kubernetes.
¿Qué es Kubernetes y qué tiene que ver con IaaS?
Bueno, siguiendo el ciclo de vida de tu solución, esto sería como lo siguiente.
Es decir, tu solución web estará hospedada en una imagen de Docker (contenedor), esta imagen estará hospedada en el clúster de Kubernetes, gracias a esto, Kubernetes se encargará de desplegar tu solución, monitorear su comportamiento, escalar o reducir tu solución entre otras muchas tareas más.
Si buscas soluciones altamente escalables entonces no tendrás muchas más opciones que Kubernetes orquestando tu solución, Google, el creador de este orquestador lo usa para su servicio de correo, sus mapas e incluso ¡para su buscador! Otros clientes como Netflix, Spotify e incluso el CERN lo usan para que sus soluciones globales puedan ser capaces de responder con eficiencia en todo momento.
Y aquí es donde se pone muy interesante. Un clúster de Kubernetes requiere de muchísima infraestructura trabajando de manera organizada. Un conjunto de máquinas virtuales, almacenamiento y redes.
Si buscas por el servicio de Kubernetes en Azure, obtendrás una imagen similar a la siguiente:
Podrás apreciar que el servicio es gratuito, lo que tiene costo es toda la infraestructura creada para sostener este servicio y con ello los montos pueden variar de una manera gigantesca dependiendo directamente del nivel de exigencia que tu solución requerirá. Te anticipo que una solución de este tipo no es en lo absoluto nada barata pero, si es capaz de resolver la alta disponibilidad de tu sitio web entonces lo podrás ver como la mejor herramienta que podrías utilizar.
¿Cuándo debería elegir Kubernetes y cuándo Máquinas virtuales?
Eso dependerá enteramente de tus planes y de tu experiencia. Si ya tienes un buen tiempo trabajando con las aplicaciones instaladas en la máquina entonces usar un conjunto de máquinas virtuales es la mejor opción, quizá un equipo paralelo podría comenzar a trabajar con un clúster en modo de pruebas para pensar en los detalles para establecer una migración en una etapa (y versión) posterior.
La realidad es que Kubernetes es una herramienta que involucra muchísima complejidad y eso significa que si no tienes experiencia en utilizarla y comienzas a hacerlo de manera inmediata para cualquier cuestión productiva entonces definitivamente tendrás un buen tiempo de estrés. Debido a su naturaleza lo mejor es ir ganando experiencia paso a paso para comprender muy bien su proceso. No pasará absolutamente nada si tu solución permanece de la manera en que la tienes por un par de versiones más.
En este curso nos enfocamos en todos los conceptos y herramientas que se requieren para que después puedas tener buenas bases y puedas implementar un clúster que no te cause conflictos, tener alta disponibilidad en tu solución basada en IaaS es el primer gran paso para después empezar a tener esa misma característica pero ahora por medio de un clúster de Kubernetes (comúnmente llamado solo K8) y tu solución administrada desde ahí.