Uso de la tecnología de contenedores Docker con productos y servicios de F5
Resumen ejecutivo
La evolución de las necesidades de TI y la aparición de estrategias ágiles de desarrollo e implementación han dado lugar a la «contenerización», una alternativa a la virtualización completa de máquinas en la que una aplicación se encapsula en un contenedor con su propio entorno operativo. La contenerización es una solución atractiva que permite a los desarrolladores realizar iteraciones con mayor rapidez. También ofrece ventajas adicionales que reducen la sobrecarga asociada a las máquinas virtuales, lo que permite aprovechar mejor los recursos del centro de datos definido por software (SDDC).
Aunque la contenerización no es un concepto nuevo, Docker, desarrollado por Docker, Inc., se considera ampliamente la implementación preferida debido al gran respaldo del sector, su estandarización y su amplia gama de funcionalidades. En palabras de la empresa, Docker es «una plataforma abierta para crear, distribuir y ejecutar aplicaciones distribuidas. Proporciona a programadores, equipos de desarrollo e ingenieros de operaciones el conjunto común de herramientas que necesitan para aprovechar la naturaleza distribuida y conectada en red de las aplicaciones modernas». De este modo, Docker simplifica la gestión del ciclo de vida de las aplicaciones, desde el desarrollo hasta la implementación, y facilita su portabilidad. Esta simplificación es fundamental para las empresas, dado que existen múltiples opciones para alojar una aplicación, ya sea en la nube pública o en una infraestructura de nube privada.
Este documento describe la estrategia de F5 para el uso de contenedores en la tecnología de F5 y la compatibilidad con Docker para la entrega y la seguridad de aplicaciones. Antes de abordar esta estrategia, es importante identificar los principales problemas de los centros de datos y comprender por qué estas tecnologías son fundamentales para la entrega de aplicaciones empresariales de próxima generación.
Nota: Este documento está dirigido a responsables de la toma de decisiones de TI, arquitectos y desarrolladores. Se presupone que el lector posee conocimientos previos sobre tecnología de virtualización, desarrollo de software y el proceso del ciclo de vida de las versiones.
Desafíos de la infraestructura del centro de datos
Varios estudios recientes sobre los principales problemas de la infraestructura de los centros de datos han identificado un conjunto común de necesidades para su evolución:
- Métodos más rápidos de despliegue de aplicaciones
- Un proceso mejorado de gestión del flujo de trabajo
- Mayor disponibilidad y utilización de los recursos informáticos
- Mayor agilidad para trasladar las cargas de trabajo según sea necesario
A medida que surgen nuevas tendencias en el desarrollo de aplicaciones, los clientes empresariales están cambiando su visión del modelo de gestión del ciclo de vida de las aplicaciones por la siguiente:
- Cada vez más, las aplicaciones de nueva generación se desarrollan con un enfoque «cloud first».
- Linux se ha convertido en el sistema operativo (SO) de facto para el desarrollo en la nube.
- Aplicaciones en la nube de próxima generación:
- Están diseñadas para no tener estado y utilizar una arquitectura de microservicios con bajo acoplamiento.
- Utilizan frameworks que permiten desarrollar los servicios de forma independiente, sin dependencias de versiones de software ni de otros servicios.
- Las empresas adoptan cada vez más la automatización mediante el uso de herramientas de gestión de la configuración (como Puppet, Chef y Ansible) y la orquestación de DevOps para aumentar la agilidad en el lanzamiento de software.
- A medida que las empresas desarrollan nuevas aplicaciones y migran las existentes a nubes públicas, la portabilidad resulta fundamental para evitar la dependencia de un proveedor. Aunque la tecnología de máquinas virtuales (VM) proporciona cierto nivel de abstracción, cada hipervisor implementa su entorno de forma diferente y, por tanto, no ofrece una portabilidad total.
Docker trata de abordar estos retos y, por ello, se ha consolidado como una tecnología líder y atractiva para virtualizar la infraestructura.
Descripción general de Docker
Los contenedores permiten la virtualización a nivel del sistema operativo al aislar cada aplicación como un proceso del sistema operativo. Este concepto ha existido de diversas formas en sistemas operativos como BSD con Jails, Oracle Solaris con Zones y, más recientemente, Linux con LXC. Docker se basa en LXC y ha añadido una solución sencilla que permite a los desarrolladores crear, empaquetar e implementar aplicaciones en infraestructuras en la nube sin necesidad de un hipervisor.
Las siguientes características diferencian Docker de otras tecnologías de contenedores:
- Una capa de abstracción ligera (el motor de Docker) sobre el sistema operativo para gestionar el aislamiento y las conexiones de red entre aplicaciones.
- Una interfaz de programación de aplicaciones (API) documentada para simplificar la implementación de aplicaciones basadas en Linux.
- Docker Registry para compartir aplicaciones con otros usuarios y desarrolladores.
- Portabilidad de aplicaciones entre hosts compatibles con Docker, ya sean físicos, virtuales o alojados en la nube.
- Un sistema de archivos de unión que proporciona un sistema de archivos común a todos los contenedores Docker.
- Un ecosistema de empresas colaboradoras que ofrecen servicios y software de valor añadido, lo que permite que Docker se integre perfectamente en una amplia variedad de metodologías de desarrollo.
¿Qué es un sistema de archivos de unión?
Un sistema de archivos de unión permite que cada contenedor proporcione sus propios servicios específicos, aunque la ruta y el nombre de archivo coincidan con los de un archivo subyacente. Por ejemplo, un contenedor podría necesitar la versión 2.6 de una biblioteca de Python, mientras que otro podría requerir una versión posterior. El sistema de archivos subyacente podría proporcionar la versión 2.6, satisfaciendo así las necesidades de uno de los contenedores. Sin embargo, el contenedor que requiere la versión posterior puede incluirla como parte de su imagen. Esto reduce el tamaño de las imágenes de los contenedores, ya que solo necesitan contener lo estrictamente necesario para ejecutarse.
Resumen de la tecnología de contenedores Docker y máquinas virtuales
El diagrama de la Figura 1 muestra los componentes utilizados en los despliegues de aplicaciones con máquinas virtuales y Docker. Tenga en cuenta que, en este ejemplo, el enfoque basado en máquinas virtuales utiliza dos sistemas operativos invitados para ejecutar dos aplicaciones. En cambio, Docker solo necesita un sistema operativo anfitrión para alcanzar la misma densidad de aplicaciones y, por supuesto, con una menor sobrecarga.

La siguiente tabla muestra una comparación entre las capacidades de las máquinas virtuales y Docker.

Docker en máquinas virtuales
Como se ha mencionado anteriormente, el objetivo principal de Docker es simplificar la gestión del ciclo de vida de las aplicaciones. Aunque ejecutar Docker directamente sobre el hardware es sin duda una opción atractiva, también ofrece ventajas ejecutarlo sobre hipervisores. Entre ellas se incluyen la posibilidad de crear instantáneas y realizar migraciones en vivo de una máquina virtual completa, dos funciones que pueden ser requisitos clave para la recuperación ante desastres sin perder el estado de las operaciones en curso.
Las principales soluciones de gestión y orquestación de infraestructuras, como VMware vRealize Suite y OpenStack, así como las nubes públicas, como AWS y Azure, son compatibles con Docker sobre un determinado tipo de hipervisor, pero ofrecen un entorno común al contenedor Docker, lo que permite la portabilidad de las aplicaciones independientemente del entorno. Este tipo de modelo de implementación heterogéneo permite a los clientes empezar a utilizar Docker y beneficiarse de la posibilidad de realizar iteraciones con mayor rapidez sin tener que cambiar la infraestructura subyacente.
Al pasar a una única máquina virtual y un único sistema operativo por host, los clientes también pueden optimizar el uso de los recursos, ya que la máquina virtual no tiene que competir por ellos. Este aumento de la eficiencia se debe a que la memoria y el disco local pueden asignarse a ese único sistema operativo, mientras que el hipervisor ya no tiene que arbitrar entre varios sistemas operativos.
Descripción técnica general de las redes de Docker
Las funciones de red permiten crear redes virtuales en Docker Engine que abarcan varios hosts. Los contenedores pueden conectarse a estas redes independientemente de dónde se encuentren, lo que proporciona un control total sobre la topología de red y sobre qué contenedores pueden comunicarse con otros elementos de la red. Además, el sistema que sustenta las redes puede sustituirse mediante un complemento, lo que permite integrarlo con cualquier sistema de red que se desee sin necesidad de modificar la aplicación.
Para poder alojar una alta densidad de contenedores en un host determinado, es importante comprender el mecanismo mediante el cual cada contenedor se conecta a la red. De forma predeterminada, Docker proporciona a cada contenedor una dirección privada a la que solo se puede acceder directamente desde otro contenedor que se encuentre en el mismo host.
Para que los servicios puedan acceder a un contenedor desde otro host, el tráfico debe enrutarse a través de la función de traducción de direcciones de red (NAT) de Docker, basada en iptables. En la Figura 2 se muestra un ejemplo.

La interfaz del host (Eth0) se expone mediante otra dirección (en este caso, otra dirección RFC1918, 192.168.10.10). A cada contenedor Docker se le asigna automáticamente una dirección del espacio 172.x.x/16 cuando se inicia. Para que un contenedor pueda comunicarse de forma bidireccional con entidades externas a su host, se le debe asignar un conjunto explícito de reglas mediante iptables.
En el ejemplo que se muestra en la Figura 2, las reglas se han configurado de modo que los contenedores puedan comunicarse mediante una asignación de direcciones IP y puertos, exponiendo el contenedor A como 192.168.10.10/puerto 80 y el contenedor B como 192.168.10.10/puerto 81. Sin embargo, el contenedor C solo puede comunicarse con los otros dos contenedores mediante el direccionamiento 172.17.0.x.
Docker también admite IPv6 y permite utilizar direcciones totalmente enrutables. Esto permite que los contenedores se comuniquen con otros alojados en hosts diferentes sin necesidad de asignar direcciones. Sin embargo, esto solo funciona con IPv6, por lo que su aplicabilidad puede ser limitada en algunos entornos.
SDN y Docker
Muchos centros de datos definidos por software utilizan el concepto de redes definidas por software (SDN) para desplegar sus sistemas invitados de forma flexible. Las SDN permiten configurar túneles de red aislados para inquilinos independientes en el mismo hardware físico. También pueden resultar útiles para proporcionar una capa 2 tunelizada dentro de un centro de datos en la nube que, de otro modo, estaría completamente enrutado. Las redes de Docker se basan en el concepto de Docker Bridge, que puede conectarse a un Open vSwitch para permitir la interoperabilidad con tecnologías como VXLAN o GRE.
El uso de Open vSwitch de este modo permite segmentar la red de capa 2 en entornos multiinquilino, además de ofrecer opciones para conectarse a otros entornos virtualizados. Por ejemplo, es probable que un centro de datos que utilice Docker siga usando máquinas virtuales para servicios clave a los que deban reservarse recursos dedicados conocidos. Podría tratarse de servicios de entrega de aplicaciones o de recursos de alto rendimiento, como bases de datos y nodos de procesamiento. Estos recursos pueden conectarse a la red mediante tecnologías como VXLAN o GRE, de modo que el tráfico de un inquilino no sea visible para los demás.
El escalado de aplicaciones en este tipo de entorno requiere servicios ADC que también sean compatibles de forma nativa con los protocolos de tunelización. F5 ofrece funcionalidades VXLAN y GRE multiinquilino para que funciones como el equilibrio de carga, la descarga SSL, el cortafuegos, la seguridad de aplicaciones, NAT y los servicios DNS puedan prestarse a los clientes de la red a través de un túnel. Además, F5 proporciona interoperabilidad entre distintos tipos de encapsulación de túneles, incluidas las VLAN 802.1Q.

En el ejemplo que se muestra en la Figura 3, los niveles principales de la aplicación, como una base de datos, pueden estar ubicados en una parte del centro de datos distinta de aquella en la que se encuentran los recursos utilizados para alojar instancias de Docker. En tal caso, la red del inquilino podría utilizar GRE o VXLAN para aislar y conectar las dos subredes, que de otro modo estarían físicamente separadas.
Una solución BIG-IP puede integrarse sin problemas en la red a nivel de inquilino mediante la creación de un punto de terminación de túnel VXLAN (VTEP) en la instancia de BIG-IP. De este modo, pasa a formar parte de la red del inquilino y dispone de conectividad con las instancias de Docker y de máquinas virtuales.
A partir de la versión 1.7, Docker comenzó a ofrecer algunas funciones experimentales que amplían las capacidades básicas de red de Docker con conceptos de SDN. La arquitectura de complementos brinda una excelente oportunidad para incorporar los servicios de red y entrega de aplicaciones de F5 en diversos casos de uso nuevos, como los cortafuegos de última generación con contenedores que reconocen las aplicaciones, el análisis del flujo de los contenedores y la aplicación de políticas, así como la gestión del tráfico por flujo.
Orientación de F5 sobre la contenerización con Docker
F5 ofrece una gama de productos que permiten la virtualización. Como líder del mercado de ADC y con la cartera más amplia del sector de servicios de seguridad y entrega de aplicaciones de las capas L4 a L7, F5 explora constantemente tecnologías innovadoras y las amplía a todas las plataformas BIG-IP, ya que comparten un marco subyacente común. La figura 4 muestra la gama de productos de F5, desde hardware personalizado hasta ofertas completas como servicio basadas en la nube para servicios de las capas L4 a L7. La plataforma BIG-IP está bien posicionada para admitir aplicaciones que se ejecutan en contenedores Docker.

Evolución de la plataforma F5 con Docker
Como se ha mencionado anteriormente, F5 reconoce las ventajas de Docker en distintos casos de uso. Sin embargo, la implementación en infraestructuras de contenedores aún se encuentra en una fase incipiente y existen múltiples opciones para la detección de servicios (como Consul, etcd y Mesos-DNS), la orquestación y la gestión del ciclo de vida de los servicios de contenedores (entre las que se incluyen Mesos, OpenStack, Kubernetes, Docker y Cloud Foundry). Aunque los servicios de red son un aspecto fundamental de este ecosistema, es importante que exista una estrecha integración con el entorno de orquestación para garantizar una implementación fluida. Esta integración también es esencial para que los servicios de las capas L4-L7 estén disponibles y sean transparentes para los usuarios que implementan aplicaciones basadas en microservicios en una infraestructura de contenedores. El enfoque de F5 está orientado a ofrecer una experiencia coherente tanto en los servicios como en la visualización en implementaciones sobre hardware físico, virtualizadas o basadas en contenedores.
La primera parte de la solución al problema consiste en proporcionar servicios de red para el tráfico norte-sur (N-S), es decir, el tráfico de los «microservicios orientados al cliente». La mayoría de las principales plataformas de orquestación se encargan de implementar y escalar los servicios en contenedores, así como de exponer su conectividad al mundo exterior. Al permitir una estrecha integración con las principales plataformas de orquestación de contenedores, F5 garantiza que los sistemas BIG-IP puedan detectar automáticamente los microservicios N-S y, a continuación, gestionar el tráfico de dichos servicios. Por ejemplo, Mesosphere Marathon y Kubernetes ofrecen la opción de «etiquetar» servicios. Estas etiquetas podrían utilizarse para detectar servicios orientados al cliente cuando se inician, se detienen o se escalan, y añadirlos automáticamente como miembros de un pool al sistema BIG-IP.
El uso del enfoque anterior con dispositivos de hardware o ediciones virtuales (VE) de BIG-IP permite centralizar funciones críticas con aceleración por hardware, como las siguientes:
- Descarga de SSL con gestión centralizada de certificados.
- Aceleración mediante técnicas como la compresión, la optimización de TCP y SPDY/HTTP2.
- Cortafuegos avanzado con protección contra ataques DoS.
- Conocimiento exhaustivo de las aplicaciones para frustrar ataques en la capa de aplicación.
- Visibilidad de todas las conexiones de red entrantes y salientes.
- Depuración considerablemente mejorada gracias al registro inteligente y la detección de anomalías.
F5 y traducción de IPv4 a IPv6 con compatibilidad con DNS
Las soluciones de F5 permiten escalar aplicaciones en contenedores, así como realizar la traducción de IPv4 a IPv6 y de DNS entre la infraestructura de Docker y la red externa. Para utilizar una infraestructura de contenedores Docker totalmente enrutable, las organizaciones necesitarán no solo una función de red eficiente para la traducción de IPv4 a IPv6, sino también compatibilidad con la traducción de solicitudes DNS. La infraestructura de contenedores Docker puede funcionar exclusivamente con IPv6, completamente aislada de IPv4 y, al mismo tiempo, mantener una vía fluida de conectividad con IPv4.

En el ejemplo que se muestra en la figura 5, se han aprovisionado los servicios NAT64 y DNS64 (de nuevo, en cualquier modalidad, física o virtual). El contenedor Docker intenta conectarse a www.example.com, para el que, en este ejemplo, no existe ninguna dirección IPv6.
El sistema BIG-IP está configurado como el solucionador DNS de la instalación de la plataforma Docker. Está configurado con una dirección IPv6 para el propio solucionador DNS, así como con una dirección de prefijo IPv6 especial (mostrada en rojo) para la traducción de IPv4 a IPv6.
Una vez que el dispositivo BIG-IP ha recibido la consulta DNS IPv6, primero realiza una operación recursiva para comprobar si hay una dirección IPv6 disponible. Sin embargo, en este ejemplo, el servidor DNS autoritativo de www.example.com responde con un registro vacío a la solicitud AAAA. A continuación, el dispositivo BIG-IP realiza una consulta IPv4, para la que recibe un registro A de DNS. Antepone la dirección de prefijo especial a la dirección IPv4 y envía el resultado al cliente de Docker.
El cliente de Docker ya ha resuelto la dirección e inicia una conexión TCP. Como Docker utiliza el prefijo especial, la función NAT64 reconoce que es necesario traducir de IPv6 a IPv4.
La función NAT64 crea una asociación para la conexión entre la dirección IPv6 de Docker, la dirección NAT64 con el prefijo especial correspondiente a este servidor IPv4 y el servidor IPv4. La solicitud de conexión se envía al servidor IPv4. La función NAT64 traduce todas las respuestas de dicho servidor, que responde mediante IPv4, para permitir la conectividad entre el contenedor de Docker y el servidor IPv4.
F5 y los flujos de tráfico este-oeste
El siguiente paso fundamental para lograr una integración estrecha consiste en proporcionar servicios para el tráfico este-oeste (E-W), es decir, los datos que circulan entre microservicios que requieren servicios ADC. Dada la necesidad de poner en marcha servicios en cuestión de segundos y la naturaleza efímera de los microservicios, el enfoque de F5 consiste en habilitar un ADC ligero. (Para servicios avanzados, como la autenticación o la protección de aplicaciones de capa 7, el tráfico se redirigirá a la instancia de BIG-IP situada en el extremo norte-sur [N-S].)
El número de servicios en contenedores de una arquitectura de microservicios será mucho mayor que en una arquitectura tradicional, con múltiples vías de comunicación entre los microservicios. Un posible efecto secundario de esta arquitectura es una mayor complejidad, lo que puede dificultar la resolución de problemas de rendimiento. Por ejemplo, si una aplicación presenta un rendimiento deficiente, es importante disponer de visibilidad integral de los distintos servicios, desde un extremo hasta el otro, incluido el perímetro N-S. Por tanto, para la resolución de problemas resulta absolutamente esencial contar con un enfoque de visualización centralizado que permita correlacionar los patrones de tráfico entre el sistema BIG-IP del dominio N-S y el ADC ligero del dominio E-W.
También se pueden insertar instancias de soluciones F5 BIG-IP entre aplicaciones para proporcionar servicios de equilibrio de carga o de seguridad, lo que permite abordar los problemas de seguridad del tráfico E-W. Por ejemplo, se puede configurar un host de Docker para dirigir el tráfico de un contenedor a través de un sistema BIG-IP para analizarlo antes de que entre en otro contenedor. Esto puede llevarse a cabo mediante BIG-IP Application Security Manager™ (ASM), que comprende el funcionamiento de las aplicaciones y puede detectar si el contenedor en cuestión está sufriendo un ataque, como la explotación de una vulnerabilidad.
Enfoque por fases de F5 para la prestación de servicios de Docker
En la actualidad, muchas implementaciones exitosas de clientes de F5 utilizan la contenerización a gran escala. Estas organizaciones abarcan numerosos mercados verticales, entre ellos los sectores financiero y de las telecomunicaciones, así como proveedores de SaaS. Actualmente, las soluciones de F5 desempeñan en estos entornos la función de proporcionar servicios ADC para garantizar aplicaciones rápidas, seguras y disponibles. Estos servicios pueden integrarse para ofrecer capacidades de autoservicio a los propietarios de aplicaciones o a los equipos de DevOps, o bien para orquestarlos mediante el sistema de gestión de contenedores.
F5 tiene previsto ampliar estos servicios a la propia infraestructura en contenedores para abordar el descubrimiento de servicios, la gestión del tráfico este-oeste y la seguridad. F5 también tiene previsto aprovechar la contenerización en su gama de productos, utilizando esta tecnología en plataformas físicas, ofreciendo servicios de software en contenedores y empleando la arquitectura en contenedores en la plataforma de servicios en la nube F5 Silverline®.
La tabla siguiente ofrece una visión general de las líneas que F5 está explorando o desarrollando activamente:

Conclusión
Docker ofrece claras oportunidades para mejorar la eficiencia de los centros de datos, ya sean físicos o estén basados en la nube. Al mismo tiempo, quienes adoptan Docker pueden tener una mayor confianza en que sus aplicaciones se pueden trasladar a nuevos entornos. Un aspecto fundamental es que Docker permite a los desarrolladores de aplicaciones ganar agilidad y lanzar aplicaciones al mercado con mayor rapidez. Al adaptar sus prácticas de DevOps al modelo de Docker, los clientes suelen aprovechar la oportunidad para introducir nuevos flujos de trabajo de autoservicio basados en servicios estandarizados más pequeños, en los que los desarrolladores pueden implementar sus aplicaciones.
Docker permite escalar rápidamente las aplicaciones mediante la creación de instancias de contenedores ligeros, y los productos de entrega de aplicaciones de F5 son totalmente compatibles con estos entornos. Mediante las soluciones F5 BIG-IP, los clientes pueden orquestar todo el ciclo de vida de una aplicación. Esto puede hacerse a través de completas API REST para operaciones críticas, como la creación y el mantenimiento de VIP, la gestión centralizada de SSL y certificados, los servicios de firewall y la seguridad de las aplicaciones con alta disponibilidad en una arquitectura multiinquilino.
Docker puede utilizarse en diversos modelos, incluidas las implementaciones en nubes públicas y privadas. F5 está a la vanguardia en cuanto a interoperabilidad y compatibilidad con estos entornos, y ofrece funcionalidades clave dirigidas específicamente a OpenStack, VMware y los principales proveedores de servicios en la nube, como Amazon AWS y Microsoft Azure.
Los clientes que están adoptando un modelo DevOps evolucionado, en el que Docker es un componente fundamental, reconocen que las posibles mejoras operativas dependen de una plataforma escalable, segura, de alta disponibilidad y tan ágil como exigen los nuevos flujos de trabajo. Los productos y servicios de F5 están diseñados para funcionar con el conjunto más amplio de tecnologías y socios tecnológicos del sector, a fin de hacer realidad la visión de Docker. El compromiso de F5 con Docker está respaldado por sólidas inversiones en su hoja de ruta y por la mejora continua de sus productos, con el objetivo de garantizar el éxito de lo que se convertirá en uno de los modelos de despliegue predominantes para los centros de datos definidos por software.
PUBLICADO EL 20 DE JUNIO DE 2016
