Llegará un punto en que deberemos despedirnos de las redes, así como las conocemos. No por su esquema fundamental, sino más bien por la manera en que se implementan y gestionan en el día a día. Las redes de contenedores forman parte de una tendencia que está teniendo cada vez más fuerza en este 2020. ¿Qué es una red de contenedores? ¿Será de utilidad migrar ahora mismo a esa tecnología? Hoy en RedesZone os contamos todo lo que debes saber y hacer antes de tomar esta decisión.
Estos tipos de redes forman parte de una evolución del storage (almacenamiento) virtualizado, la computación y las tecnologías de redes. Recordemos que la virtualización ya lleva prácticamente una década desde sus primeras implementaciones. Los recursos de hardware son compartidos mediante las ya conocidas máquinas virtuales. Toda máquina virtual contiene una aplicación en particular y una instancia completa de sistema operativo. Mediante la virtualización tradicional, un servidor físico puede alojar varias máquinas virtuales. Cada una de estas, por ejemplo, podrían contar con un hypervisor con tres instancias de sistema operativo ejecutándose por separado.
Sin embargo, mediante los contenedores, un solo servidor puede alojar a tres aplicaciones en contenedores, esto requiere una sola instancia de sistema operativo y los contenedores comparten su kernel. Otra ventaja directa es el ahorro en espacio de almacenamiento. Una máquina virtual puede necesitar de varios gigabytes de espacio. Un contenedor, en cambio, sólo necesitará de unos cuantos megabytes de espacio. En consecuencia, un solo servidor ya será capaz de alojar a muchos más contenedores que máquinas virtuales. El beneficio principal que se obtiene gracias a esto es una mayor eficiencia en el desempeño de los recursos de un data center.
¿Qué debo hacer para comenzar a usar contenedores en redes?
Es importante determinar el enfoque correcto para la implementación, esto depende en gran medida de las necesidades de aplicaciones, el tipo de despliegue que tendrá, el uso de automatizaciones de procesos y el tipo de sistema operativo. Las opciones más populares que podemos encontrar hoy en día son Docker y Kubernetes. Estos cuentan con subsistemas de networking que se pueden conectar mediante el uso de drivers (controladores). Los tipos de comunicaciones que soporta las redes de contenedores son de contenedor-a-contenedor o contenedor-a-host.
Si se ha optado por la transición al uso de contenedores, el propósito principal es la creación de una arquitectura distribuida y constituida por microservicios. ¿En qué consisten éstos? Son aplicaciones estructuradas como conjuntos de servicios. Los beneficios principales del uso de los microservicios es el convertirse en una infraestructura tolerante a fallos y también, en una muy fácil de actualizar o de aplicar mejorías.
La tecnología aplicada a contenedores también permite enlazar a cada uno de los contenedores de manera a que aparentemente, están conectadas a la misma interfaz. Esto, a diferencia de los esquemas de conexión tradicionales en los cuáles se trataría a cada contenedor como un dispositivo distinto uno de otro. Así, todas las piezas que componen a la infraestructura podrán comunicarse con facilidad y serán distribuidas en distintas máquinas que se encuentran en distintos data centers.
¿Ya tienes algo más claro? Estamos seguros que así es. Ahora, citaremos los tipos de redes de contenedores más comunes:
Los principales tipos de redes de contenedores
- Redes de tipo Puente. En inglés se las conoce como bridge networks. Permite a los contenedores ejecutarse en el mismo host para comunicarse unos con otros. Pero, las direcciones de IP asignadas a cada contenedor no son accesibles fuera de dicho host. Si optas por Docker, este cuenta con una red de tipo puente por defecto. Por lo que todos los contenedores nuevos se conectarán automáticamente a esa red. Sin embargo, existen características que debemos ajustar sí o sí al momento de implementar este tipo de redes:
- Resolución DNS
- Agregar o eliminar contenedores de un puente personalizado mientras se ejecutan
- Compartir variables de entorno entre contenedores
- Redes Overlay. Están diseñadas para contenedores que se ejecutan en distintos hosts. Estos pueden localizarse mutuamente de forma automática y comunicarse mediante subredes con túneles. Si se opta por este tipo de red, no es necesario configurar a cada uno de los contenedores.
- Redes de Hosts. Esta red cuenta con un controlador que permite a los contenedores contar con sus propios stacks de red, ejecutándose de lado a lado con el stack que se encuentra en el host. Un servidor web, por ejemplo, en el puerto 80 que se encuentra en un contenedor está disponible desde el propio puerto 80 en el host en sí. En este tipo redes, si mapeas al puerto 80 o cualquier otro puerto a un contenedor, ningún otro puede acceder a dicho puerto en ese mismo host.
- Redes Macvlan. Estas están diseñadas para aplicaciones que trabajan interactuando directamente con la red física. Como las aplicaciones de monitorización de redes. Este tipo de red cuenta con un controlador que no solamente asigna una dirección IP a un contenedor. Si no también, una dirección MAC. ¿Cuándo utilizar las redes Macvlan? Cuando se cuentan con aplicaciones que no operan a no ser que dependan de una dirección de red física.
Conociendo los principales tipos de redes de contenedores, es importante tener presente que su adopción significará un cambio muy importante. Tanto en las operaciones de data center como las prácticas para llevarlas a cabo. De acuerdo a expertos de la industria, se sabe que la gran mayoría de los equipos de redes están familiarizados con una infraestructura estática, que no cambia nunca. Subredes ya planeadas y establecidas, métodos estándar para medir las capacidades, entre otras cosas. En un ecosistema basado en contenedores, los cambios de la configuración de la red y las localizaciones de los servicios ocurren de manera rutinaria. Por tanto, no existe un control humano directo de la red. Es como si la red se convirtiese en una enorme aplicación, y las prácticas para gestionarla difieren mucho de lo tradicional.
Una de las preguntas más importantes: ¿las redes de contenedores son seguras? Este tipo de redes dista mucho de lo que uno puede saber respecto a los firewalls tradicionales o los mecanismos de funcionamiento de los controles de seguridad. Toda persona u organización que adopte los contenedores necesitará micro-segmentar a los mismos para que las aplicaciones no interfieran unas con otras. Además, los firewalls deberán mapear la conectividad de los contenedores, no ya de las máquinas virtuales. Es osado asumir que estas nuevas tecnologías de redes son completamente seguras, pero no hay duda de que, con el tiempo, las características y las medidas de seguridad se verán reforzadas de acuerdo a cómo se van adoptando.
¿Cómo de fiables son?
En las redes contenedores, se debe considerar la robustez y madurez de todas las opciones disponibles. Algunas tecnologías como Docker o Red Hat, han demostrado ser muy notables teniendo en cuenta la fiabilidad del sistema. Estas han sido ampliamente adoptadas en diferentes entornos empresariales, soportando altas cargas de trabajo en zonas críticas y para una gran variedad de industrias. Estas soluciones se benefician mucho de los fuertes comunitarios y corporativos, lo cual se traduce en que las correcciones llegarán rápidas antes posibles problemas de rendimiento o nuevos errores que se encuentren.
Estas arquitecturas de microservicios, se asocian mucho a los contenedores de este estilo. Esto tiene un motivo, y es la disponibilidad y la rápida recuperación en caso de que se produzca algún fallo. Por lo cual, un contenedor o grupo de ellos, puede ser reemplazado de forma rápida. Y lo más importante, con las mínimas interrupciones para lo que podría ser un servicio global. En cambio, la fiabilidad de estas redes, también puede depender mucho de cómo se encuentren configuradas y administradas. Si la gestión de las mismas es mala, pueden originarse problemas de rendimiento, seguridad y estabilidad. Lo cual puede hacer que la orquestación de diferentes contenedores sea muy compleja, y los problemas de configuración puedan llevarnos a vulnerabilidades o fallos en el sistema.
Como bien decimos, en cuanto a la seguridad estaremos añadiendo capas extra. Pero el rendimiento puede ser dispar en función de diferentes factores. Por lo cual antes de implementar este tipo de redes, se debe estudiar muy bien el cómo se van a implementar. Sin dejar de lado el conocimiento sobre la configuración que se debe aplicar para cada caso, así como de la administración que tan necesaria será una vez se encuentren instaladas. Todo esto es de vital importancia, ya que en estos casos, también tendremos nuevas superficies para posibles ataques desde el exterior.