¿OpenStack o docker?


Este artículo se publicó inicialmente en OpenWebinars.

OpenStack y Docker son dos proyectos de software libre bastante recientes que se han convertido en muy poco tiempo en dos piezas con un enorme potencial y de las que se habla mucho últimamente, en algunos casos como si se tratara de dos opciones contrapuestas, como si tuviéramos que elegir entre una u otra. Pero realmente se trata de dos proyectos con objetivos bien diferentes: openstack consiste principalmente en un conjunto de herramientas que permiten gestionar la infraestructura de un centro de datos (máquinas, redes y almacenamiento) de forma ágil, constituyendo una nube privada de IaaS; por su parte docker se centra en la utilización de contenedores como un mecanismo para el despliegue sencillo y portable de aplicaciones basadas en el uso de microservicios. No sólo se trata de proyectos que no compiten uno con el otro sino que es posible que trabajen coordinadamente, es decir la pregunta sería ¿OpenStack y Docker?.

Una vez que los componentes “core” de OpenStack encargados de gestionar infraestructura (nova, neutron, cinder, etc.) se fueron estabilizando, el proyecto OpenStack comenzó a desarrollar otros componentes que utilizando recursos de infraestructura en nube pudieran proporcionar mayor funcionalidad a aplicaciones de más alto nivel, como por ejemplo el componente trove que proporciona DBaaS (bases de datos como servicio) o sahara para análisis de big data, por mencionar sólo dos de los más conocidos. En esta entrada vamos a comentar de forma breve las diferentes posibilidades que hay de utilizar docker dentro de nuestra infraestructura de openstack.

La opción más sencilla que tenemos de utilizar Docker y OpenStack, es simplemente ejecutar docker en una instancia que tengamos funcionando en openstack, sin ninguna capa intermedia. Esto podría automatizarse hasta cierto punto utilizando heat, en particular el plugin para docker, pero al fin y al cabo no diferiría mucho de utilizar docker sobre cualquier máquina virtual con cierto nivel de automatismo, por lo que no hablaríamos realmente de una integración entre openstack y docker.

Por otra parte, desde hace más de dos años se está trabajando en un controlador de docker para nova (componente de computación de OpenStack) denominado nova-docker, para poder instanciar contenedores de forma integrada en OpenStack, almacenando las imágenes en Glance sin necesidad de utilizar un registro de imágenes externo, sin embargo este controlador no se ha terminado de integrar completamente con openstack Nova y ha sufrido algún percance durante su desarrollo por lo que aún sigue estando en stackforge, la incubadora de nuevos componentes de openstack.

De forma totalmente independiente al desarrollo anterior se ha desarrollado el proyecto Magnum que además de integrar docker, incluye soporte tanto para kubernetes como swarm, las dos opciones más relevantes de orquestación de contenedores. Magnum proporciona una API con la que directamente se gestionan los orquestadores de contenedores y los contenedores, apoyándose en heat y nova para ejecutar escenarios de forma automática. Es posible utilizar Magnum en la última versión de openstack publicada en abril de 2015, pero todavía no he tenido la ocasión de probarlo y probablemente como en casos de otros componentes de openstack, habrá que esperar a las siguientes versiones para que este componente incluya la funcionalidad y estabilidad esperadas.

Hay otras opciones que aunque no son formalmente integraciones de openstack y docker, tienen todo su potencial en la utilización de ambos, como en el caso de OpenShift v3, con el que llevo algunos días peleándome. OpenShift v3 es una nueva implementación de este PaaS que rompe completamente con la arquitectura que utilizaba previamente y se basa en la utilización de docker y kubernetes. Si instalamos OpenShift sobre OpenStack y creamos plantillas para la creación de nuevos nodos de OpenShift a medida que los necesitemos, tendríamos por arriba toda la comodidad del uso de kubernetes y docker, mientras que a nivel de infraestructura, openshift podría utilizar recursos de forma elástica gracias a openstack.

A modo de conclusión y tal como comentábamos al principio, OpenStack y Docker no son equivalentes ni alternativos uno del otro, no es necesario elegir uno u otro, al igual que tampoco la mejor opción será utilizar ambos en todos los casos, realmente lo importante sería analizar las necesidades que tenemos y si openstack, docker o ambos pueden ayudar a solucionar nuestro problema. Lo que sí es cierto es que habría sido deseable que las diferentes opciones de integrar openstack y docker se hubiesen iniciado antes o hubiesen tenido más apoyos, para que estuviesen más avanzadas y tanto el proyecto magnum como nova-docker fuesen totalmente operativas desde versiones anteriores de OpenStack.

Referencias

, ,

  1. Deja un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: