El uso de contenedores ha supuesto un antes y un después en el mundo IT, revolucionando áreas como el despliegue y entrega de aplicaciones, la adopción de la nube híbrida en todo tipo organizaciones o en el uso mucho más eficaz de los recursos disponibles en los centros de datos.
¿Pero qué es exactamente un contenedor? Una de las formas más sencillas de definirlo podría pasar por afirmar que un contenedor «desacopla» aplicaciones y otros elementos de software del sistema operativo en el que se ejecutan, de modo que cada una de estas aplicaciones o servicios se ejecutan en su propio sandbox de forma aislada, sin interferir con el resto de procesos y aplicaciones.
Este aislamiento impide que los procesos que se ejecutan dentro de un contenedor determinado supervisen o afecten a los procesos que se ejecutan en otro contenedor, al mismo tiempo que tampoco influyen ni afectan al funcionamiento del equipo o el sistema operativo sobre los que se despliegan.
Una de las principales ventajas que ofrece esta tecnología y por la que ha popularizado su uso en los centros de datos, es que permite consolidar en un único servidor muchos de los servicios y aplicaciones que hasta entonces podían encontrarse dispersos en muchos otros, optimizando de esta forma los recursos disponibles y evitando «interferencias». Algunas de las características propias y por las que se define un contenedor, son las siguientes:
Los contenedores con privilegios en cambio son más vulnerables a ataques externos, en el sentido de que si un atacante es capaz de explotar una vulnerabilidad de una aplicación que se encuentre en este tipo de contenedores, eventualmente podría escalar privilegios hasta llegar atacar a la propia máquina host.
Esto es por lo que los administradores suelen limitar al máximo el número de contenedores «privilegiados» que emplean, asegurándose en estos casos que lo hacen más seguros.
De todas las que en los últimos años se han presentado, Docker es sin lugar a dudas, la solución de contenedores más utilizada en todo el mundo. Diseñado como solución de «contenedorización» open-source, uno de los grandes motivos que justifican su popularidad es que trata los contenedores como si fueran máquinas virtuales extremadamente ligeras y modulares lo que ofrece una mejor experiencia de usuario frente al «contenedor clásico» y favorece el trabajo de los desarrolladores, por ejemplo, automatizando la tarea repetitiva de crear y desplegar microservicios dentro de los mismos.
Docker mejora no solo la ejecución de este tipo de tecnología, sino que ha conseguido simplificar al máximo el proceso de crear contenedores, generar imágenes, compartirlas y/o versionarlas. Algunas de las características que hacen de Docker un desarrollo único son las siguientes:
Si Docker es el contenedor de referencia, Kubernetes es la plataforma de orquestación de contenedores más popular. Solución open-source desarrollada originalmente por Google, su objetivo es automatizar las operaciones con todo tipo contenedores. Su principal ventaja es que elimina todos los procesos manuales involucrados en el despliegue y escalado de aplicaciones contenedorizadas.
Así, Kubernetes hace posible responder rápidamente a las demandas de los consumidores desplegando sus aplicaciones de forma eficiente, escalando esas mismas aplicaciones con facilidad y desplegando nuevas funciones sin problemas, todo ello al tiempo que limita el consumo de recursos de hardware. Otra de sus ventajas es que se trata de una plataforma extremadamente modular, por lo que admite la integración de nuevos servicios o su uso en distintos frameworks con mucha facilidad. En este sentido, las principales compañías tecnológicas del mercado ofrecen a las empresas sus propias soluciones de gestión basadas en Kubernetes. Red Hat OpenShift por ejemplo, es una de las más utilizadas.
Curiosamente, también existe una plataforma desarrollada por los chicos de Docker y que cumple con la misma función: Swarm. El hecho de que sin embargo Swarm no sea tan conocida y que en cambio Kubernetes se haya convertido en un estándar en la industria no es tanto a que la segundo ofrezca funciones mejores o diferentes, sino que mientras que Swarm «únicamente» es capaz de orquestar el despliegue y el escalado de contenedores Docker, Kubernetes puede trabajar con contenedores de todo tipo.
Para su funcionamiento, Kubernetes se ejecuta sobre la capa superior de un sistema operativo (Red Hat Enterprise Server, SUSE Linux Enterprise Server, etc.), formando una unidad de control (una máquina física o virtual) que controla los nodos que forma parte de la red y desde la que (habitualmente un equipo DevOps) ordena las distintas tareas de despliegue, escalado y orquestación.
Fuente: MCPRO