F5 y la contenerización

Introducción

Las organizaciones se enfrentan constantemente al dilema de adoptar cambios tecnológicos para generar nuevas oportunidades de negocio y, al mismo tiempo, proteger la empresa frente a nuevos retos y riesgos. En este documento, analizaremos la contenerización y cómo la adopción de esta tecnología en los productos de F5 afecta a los profesionales de TI, los arquitectos y los responsables de la toma de decisiones empresariales.

En los últimos 20 años, la virtualización ha transformado la computación en servidores, permitiendo ejecutar varios sistemas operativos independientes en una única plataforma de hardware. Un enfoque más moderno es la contenerización (o virtualización del sistema operativo), que permite ejecutar varias aplicaciones en una única instancia de un sistema operativo anfitrión. De este modo, cada instancia de aplicación comparte los archivos binarios y las bibliotecas instalados en esa única instancia del sistema operativo. La figura 1 compara ambos enfoques.

Figura 1: Comparación entre máquinas virtuales y contenedores

A diferencia de las máquinas virtuales (VM), los contenedores pueden compartir el mismo sistema operativo, ya que virtualizan a nivel del sistema operativo en lugar de hacerlo a nivel del hipervisor.

Como era de esperar, a los desarrolladores les gustan los contenedores porque permiten desarrollar e implementar aplicaciones y poner en marcha microservicios de forma rápida y sencilla. La contenerización también ofrece una mayor portabilidad, ya que las aplicaciones en contenedores se pueden implementar más fácilmente en distintos sistemas operativos, plataformas de hardware y servicios en la nube. Los contenedores consumen menos recursos que las aplicaciones que se ejecutan directamente en sistemas operativos alojados en servidores físicos o en máquinas virtuales.

Por lo general, la mayoría de los debates (y la documentación) sobre contenedores se centran en la perspectiva de la programación o DevOps. Como profesional de TI, arquitecto de sistemas o responsable de la toma de decisiones empresariales, aunque valore la flexibilidad que puede aportar la contenerización, es posible que le preocupe realmente cómo afectará este cambio a la administración, la gestión y la supervisión de las aplicaciones y los servicios de su entorno. También querrá asegurarse de que la contenerización no afecte negativamente a la seguridad de la red y de las aplicaciones.

Cómo afrontar los retos de las TI modernas

En un mercado cada vez más competitivo, los sistemas informáticos modernos deben aportar beneficios empresariales tangibles. Para cumplir este requisito, es fundamental que los departamentos de TI puedan ampliar su cartera de aplicaciones mediante el diseño y la creación de arquitecturas que no solo incluyan más aplicaciones, sino aplicaciones con mayor funcionalidad, una usabilidad mejorada y una integración más sencilla.

El reto para los directores de TI es que sus departamentos deben ofrecer una mayor funcionalidad sin aumentar la plantilla. Las mejoras de productividad ya no se consiguen contratando a más personas, sino mediante avances tecnológicos y de automatización que permiten aumentar el número de aplicaciones disponibles para los clientes y gestionarlas con un equipo del mismo tamaño.

La facilidad para desplegar contenedores plantea otro reto. Los desarrolladores necesitan formación y orientación para asegurarse de tener en cuenta tanto la escalabilidad como la seguridad al crear aplicaciones, y los profesionales de TI pueden ayudarles a alcanzar esos objetivos. En este sentido, hay que considerar el impacto que tienen en la producción las plataformas de contenedores como Kubernetes y Docker, y evitar que la necesidad de agilidad provoque consecuencias indeseadas debido a malas prácticas de seguridad o a no tener en cuenta las cargas de producción.

Kubernetes es una plataforma de código abierto para gestionar servicios y cargas de trabajo en contenedores. Kubernetes surgió originalmente como el sistema de programación y orquestación de contenedores de Google, que posteriormente la empresa donó a la Cloud Native Computing Foundation, poniendo el código fuente a disposición de todo el mundo. Docker ofrece un tipo similar de arquitectura y distribución de código abierto, compuesto por un conjunto de soluciones interconectadas de software como servicio (SaaS) y plataforma como servicio (PaaS).

Cálculo del tiempo de obtención de valor

Un factor clave para obtener beneficios empresariales tangibles es reducir al mínimo el tiempo de obtención de valor. Cada vez más, factores como el rendimiento y la latencia quedan relegados a un segundo plano frente a la facilidad de incorporación. Por consiguiente, si se dispone de dos componentes con funcionalidades prácticamente idénticas, pero uno ofrece un mayor rendimiento mientras que el otro es más fácil de integrar, las organizaciones tienden a elegir el componente que se integra con mayor facilidad en el entorno actual. A medida que aumenta la complejidad del entorno, es probable que esta tendencia continúe.

Determinación del valor

Cuando se plantea implementar una tecnología como la contenerización, es necesario disponer de algún método para medir el valor que aporta este nuevo enfoque. Los factores que influyen en dicho valor suelen incluir la idoneidad, la capacidad, el esfuerzo y el coste. La siguiente ecuación muestra un ejemplo de cómo asignar un valor relativo en función de esos factores.

Las unidades que utilice en la ecuación son irrelevantes; lo importante es que sean las mismas para cada elemento que evalúe.

Esta ecuación pone de relieve que la tecnología debe integrarse sin fricciones y que la familiaridad (es decir, la facilidad de incorporación) puede ser más importante que unas prestaciones o un rendimiento líderes en su categoría. En consecuencia, el esfuerzo de implantación actúa como factor de equilibrio al calcular el valor global, lo que puede hacer que productos con menos capacidades resulten más atractivos para los clientes debido a su facilidad de incorporación.

Un ejemplo de este efecto podría darse entre dos soluciones de monitorización de la competencia. El producto A cuenta con unas especificaciones excelentes y ofrece funciones de registro y generación de informes líderes en su categoría. Incorpora seguridad de grado militar y es muy fácil de gestionar. Por desgracia, su interfaz de línea de comandos propietaria, su escasa compatibilidad con estándares abiertos y la falta de funciones de integración dificultan su instalación. Además, es más caro que la mayoría de los demás productos del mercado.

En comparación, el producto B está muy lejos de ofrecer las prestaciones de su rival, aunque sigue proporcionando niveles aceptables de supervisión y seguridad. Sin embargo, supera al producto de la competencia tanto en coste como en facilidad de instalación. Al tabular las puntuaciones de cada producto se obtiene la tabla que aparece a continuación, en la que se asignan notas del 1 al 10 a la idoneidad, la capacidad y el esfuerzo de instalación, siendo 1 la puntuación más baja y 10 la más alta.

Al introducir estas cifras en la ecuación anterior, se obtiene la puntuación de valor que aparece en la última fila de la tabla.

Puede observarse cómo el producto menos adecuado y con menos prestaciones, pero cinco veces más fácil de instalar y a mitad de precio, ofrece un valor estimado tres veces superior al de su competidor líder en su categoría. Muchas organizaciones comprenden estas consideraciones y utilizan cada vez más la facilidad de instalación e integración como factor clave a la hora de adoptar e implementar nuevas tecnologías. Los enfoques basados en contenedores pueden reducir considerablemente el esfuerzo de implementación y mantener los costes bajo control, sin renunciar a la idoneidad ni a las prestaciones.

¿Por qué son cada vez más populares los contenedores?

Dado que las aplicaciones generan cada vez más valor empresarial, la contenerización ofrece una solución lógica a los retos que plantean las prácticas de implementación de TI centradas en DevOps. Los contenedores proporcionan aislamiento tanto de la plataforma en la que se ejecutan como entre sí, sin la sobrecarga de gestión que supone ejecutar máquinas virtuales. Los desarrolladores pueden crear fácilmente entornos de aplicaciones que incluyan todos los archivos binarios y las bibliotecas que necesitan, con las funciones de red y gestión necesarias integradas. La contenerización también simplifica las pruebas y el despliegue de aplicaciones.

Los entornos basados en contenedores ofrecen un mayor aprovechamiento de los recursos que los equipos virtuales, ya que permiten aumentar enormemente el número de instancias de aplicaciones que pueden ejecutarse en un servidor. Al no tener la sobrecarga de los sistemas operativos anfitrión e invitado, los entornos de contenedores utilizan de forma más eficiente el tiempo de procesamiento y el espacio de memoria al compartir el kernel del sistema operativo. La contenerización también aporta una mayor flexibilidad arquitectónica, ya que la plataforma subyacente puede ser una máquina virtual o un servidor físico. La estrategia de productos de Red Hat1 indica que casi la mitad de los clientes de Kubernetes que implementen aplicaciones en contenedores en el futuro ejecutarán el motor de contenedores directamente en servidores físicos.

La contenerización representa el siguiente avance en la evolución desde la computación basada en hardware, pasando por la virtualización, hasta la multinube, y permite alcanzar una automatización de hasta el 100 %, crear servicios en menos de un segundo y ofrecer servicios con ciclos de vida que pueden medirse en segundos. Los entornos de contenedores como Docker, OpenShift y Kubernetes hacen posible este aprovisionamiento y desaprovisionamiento inmediatos de servicios y microservicios dentro de una arquitectura de TI moderna.

Cabe destacar que la contenerización ofrece una ventaja clave, esencial en el actual entorno multiplataforma y multinube: la posibilidad de trasladar aplicaciones desde las instalaciones locales a la nube, a otro proveedor de servicios en la nube y de nuevo a las instalaciones locales, todo ello sin modificar el código subyacente. Dado que la interoperabilidad es un factor clave en el que se sustentan las decisiones arquitectónicas, esta portabilidad permite a los departamentos de TI alcanzar hitos importantes en la implementación de servicios de aplicaciones y ayuda a los equipos de DevOps a cumplir los objetivos de la organización. Un informe reciente de IBM2 destaca que el uso de contenedores para implementar aplicaciones también permite a las empresas mejorar la calidad de las aplicaciones, reducir los defectos y minimizar el tiempo de inactividad de las aplicaciones y los costes asociados.

El mismo informe también enumera las aplicaciones especialmente adecuadas para entornos basados en contenedores, entre las que se incluyen las de análisis de datos, servicios web y bases de datos. En este caso, el factor clave es el rendimiento, aunque también deben tenerse en cuenta otros aspectos relevantes, como si es probable que las aplicaciones se ejecuten en varios entornos y si utilizan microservicios para permitir que varios equipos de DevOps trabajen en paralelo. Con los contenedores, puede resolver los problemas de rendimiento simplemente poniendo en marcha más instancias de una aplicación, siempre que implemente un diseño de arquitectura sin estado y proporcione servicios de aplicaciones a escala.

Desafíos de los contenedores

Los contenedores no están totalmente exentos de dificultades de implementación, y esta tecnología, aún joven, todavía no ha alcanzado el nivel de madurez de la virtualización. En la siguiente sección se destacan algunos de los retos que plantean los contenedores.

  1. Gestión de claves – La gestión de claves entre contenedores puede resultar problemática, sobre todo porque una de las principales ventajas de los contenedores es su portabilidad. Su entorno de gestión de claves debe ser capaz de gestionar el traslado de contenedores entre hosts locales, así como a la nube y de vuelta al entorno local.
  2. Redes – Los contenedores plantean dificultades para los modelos de red tradicionales debido a la rapidez con la que pueden iniciarse y detenerse. Por tanto, las direcciones de red estáticas no serían viables en un entorno de este tipo. Aunque los mecanismos de asignación de direcciones, como el protocolo de configuración dinámica de host (DHCP), funcionaban correctamente con hosts físicos y máquinas virtuales, las cargas de trabajo de los contenedores pueden aparecer y desaparecer antes de que su dirección IP pueda registrarlas y el propio contenedor pase a ser detectable. Es fundamental independizarse del hardware de red físico mediante redes definidas por software (SDN) basadas en contenedores, de modo que se puedan migrar topologías completas de contenedores desde entornos locales a nubes privadas y públicas. La mayoría de los entornos de contenedores implementan algún tipo de interfaz de red de contenedores (CNI) para llevar a cabo esta función.
  3. Múltiples tecnologías de contenedores – Es posible que su organización ya tenga implementadas varias tecnologías de contenedores diferentes en su entorno. Incluso con estas implementaciones, es probable que su personal carezca de conocimientos técnicos profundos sobre todos estos entornos. La formación es importante, al igual que dar tiempo a su equipo para familiarizarse con las distintas implementaciones de contenedores. La gestión de estas múltiples tecnologías de contenedores también resulta más costosa. Sin embargo, las mejoras en la capacidad de gestión, especialmente en la versión más reciente de Kubernetes, suelen llevar a las organizaciones a estandarizar el entorno más sencillo y utilizado.
  4. Riesgos de la configuración predeterminada – A medida que se desarrollan aplicaciones en contenedores, aumenta el riesgo de que estos estén mal configurados. Un ejemplo es implementar contenedores con su configuración predeterminada. La unidad de inteligencia global sobre amenazas Unit 42 de Palo Alto3 identificó recientemente más de 40 000 dispositivos de contenedores únicos con los ajustes de configuración predeterminados. Por supuesto, no todas esas instancias son vulnerables a ataques, pero esto pone de manifiesto que las prácticas básicas de configuración incorrecta están muy extendidas y convierten a estas organizaciones en objetivos de nuevos ataques.
Figura 2 - Cómo lograr una contenerización equilibrada

Contenerización equilibrada

Un criterio de diseño fundamental en la contenerización es lograr un equilibrio entre los tres vectores de rendimiento, densidad y fiabilidad, como se muestra en la Figura 2.

El enfoque de F5 consiste en centrarse en la contenerización a nivel de componente, en lugar de a nivel de sistema. Este enfoque ofrece varias ventajas, entre las que se incluyen:

  • Reducir el uso de memoria de cada contenedor evitando asignar memoria a funciones de red que no se utilizan.
  • Minimizar la dependencia de la CNI del host para evitar problemas de rendimiento de la red.
  • Implementar componentes pequeños y ligeros que reduzcan el dominio de fallo al nivel del suscriptor/usuario.

La contenerización a nivel de componente nos permite lograr ese equilibrio entre los tres aspectos mediante la desagregación, la programación y la orquestación. Los productos de F5 que implementen contenedores utilizarán estas funciones para maximizar las ventajas de la contenerización.

Servicios de entrada de contenedores de F5

Para ayudar a las organizaciones a adoptar tecnologías basadas en contenedores, F5 ofrece F5® Container Ingress Services, una integración de contenedores de código abierto. Container Ingress Services proporciona servicios de automatización, orquestación y red, como enrutamiento, descarga SSL, enrutamiento HTTP y una seguridad sólida. Cabe destacar que integra nuestra gama de servicios BIG-IP con entornos de contenedores nativos, como Kubernetes y Red Hat OpenShift.

Desde el punto de vista de la arquitectura, Container Ingress Services ocupa la siguiente posición con respecto a sus aplicaciones en contenedores, añadiendo servicios de controlador de Ingress como punto de entrada y habilitando la visibilidad y el análisis mediante BIG-IP.

Figura 3 - Servicios de entrada de contenedores de F5

Container Ingress Services aborda dos de los principales problemas identificados anteriormente en este documento: la escalabilidad y la seguridad. Puede escalar las aplicaciones para satisfacer las cargas de trabajo de los contenedores y proteger los datos de estos habilitando servicios de seguridad. Gracias a la integración con la plataforma BIG-IP, puede implementar funcionalidades de autoservicio para optimizar el rendimiento de las aplicaciones en su entorno de orquestación. El uso de Container Ingress Services también reduce la probabilidad de que los desarrolladores implementen contenedores de Kubernetes con la configuración predeterminada, ya que permite utilizar gráficos de Helm para realizar implementaciones y actualizaciones basadas en plantillas.

Además, Container Ingress Services proporciona seguridad mediante servicios avanzados de protección frente a ataques contra aplicaciones en contenedores y de control de acceso. Para los desarrolladores de aplicaciones y los profesionales de DevOps que no estén familiarizados con las configuraciones, los servicios de aplicaciones de F5 ofrecen políticas listas para usar y control de acceso basado en roles (RBAC) con soporte de nivel empresarial, además de las comunidades de clientes de DevCentral y de código abierto.

Controlador de entrada de Kubernetes de NGINX

Los retos asociados a Kubernetes nativo están relacionados con el desarrollo y el escalado de aplicaciones modernas en contenedores sin aumentar la complejidad. Puede haber limitaciones de rendimiento y fiabilidad, y los servicios que proporcionan un punto de entrada a los contenedores de Kubernetes pueden implementarse de forma incoherente, lo que exige un mayor esfuerzo de integración para su despliegue y configuración.

La solución a estos retos es NGINX Kubernetes Ingress Controller, que mejora el entorno básico de Kubernetes al proporcionar servicios de entrega para las aplicaciones de Kubernetes. Normalmente, los pods de Kubernetes solo pueden comunicarse con otros pods del mismo clúster. La figura 4 muestra cómo Kubernetes Ingress Controller proporciona acceso desde la red externa a los pods de Kubernetes mediante reglas de recursos Ingress que controlan factores como la ruta del identificador uniforme de recursos (URI), el nombre del servicio de backend y otros datos de configuración. Los servicios disponibles dependen de si utiliza NGINX o NGINX Plus.

Figura 4: Controlador de Ingress de NGINX para Kubernetes

Las empresas que utilizan NGINX obtienen funcionalidades como el balanceo de carga, la terminación del cifrado SSL o TLS, la reescritura de URI y el cifrado SSL o TLS de los servidores ascendentes. NGINX Plus ofrece capacidades adicionales, como la persistencia de sesiones para aplicaciones con estado y la autenticación de API mediante tokens web JSON (JWT).

Aspen Mesh

A medida que las organizaciones adoptan los microservicios para impulsar la agilidad de los desarrolladores y la escalabilidad nativa de la nube, se enfrentan a una curva de aprendizaje mientras sus capacidades organizativas se adaptan a la tecnología. Estas organizaciones quieren aprovechar rápidamente las ventajas de los microservicios sin renunciar a la estabilidad en la que se sustenta la experiencia de sus clientes.

Aspen Mesh es una versión con soporte completo de la malla de servicios de código abierto Istio que ayuda a las empresas a adoptar microservicios y Kubernetes a gran escala, así como a obtener observabilidad, control y seguridad en las arquitecturas de microservicios. Aspen Mesh incorpora funciones empresariales clave para la malla de servicios, como una interfaz de usuario que facilita la visualización y comprensión del estado y la salud de sus servicios, RBAC granular y funcionalidades de políticas y configuración que permiten aplicar más fácilmente el comportamiento deseado en sus aplicaciones en contenedores.

Aspen Mesh proporciona una implementación nativa de Kubernetes que se despliega en su clúster de Kubernetes y puede ejecutarse en su nube privada o pública, o en sus propias instalaciones. Cabe destacar que puede funcionar conjuntamente con un mecanismo de entrada basado en F5, utilizando Container Ingress Services para ofrecer capacidades más avanzadas de capa 7.

Desde el punto de vista arquitectónico, Aspen Mesh utiliza un modelo de proxy sidecar para añadir capas de funcionalidad y seguridad a las aplicaciones en contenedores, como se muestra en la Figura 5.

Figura 5: arquitectura de Aspen Mesh

F5 y la adopción de contenedores

F5 está a la vanguardia en la adopción de contenedores y ofrece a las organizaciones la capacidad de ejecutar entornos de aplicaciones en contenedores fiables, seguros y de alto rendimiento que permiten escalar los servicios de aplicaciones tanto para cargas de trabajo sencillas como para cargas masivas específicas del sector. La tecnología de contenedores será un elemento clave para los futuros entornos de desarrollo e implementación de aplicaciones, como las implementaciones sin servidor, las arquitecturas de malla de servicios y la seguridad en el extremo de la red móvil. Como empresa, F5 aprovecha tanto su propia investigación en materia de desarrollo como las implementaciones comerciales de contenedores para impulsar y desarrollar aplicaciones y servicios que marcarán la diferencia para su negocio.

Al igual que ocurre con la virtualización de productos existentes, incorporamos la tecnología de contenedores de formas que quizá no resulten evidentes de inmediato para el administrador, pero que serán totalmente transparentes para el usuario final. Como cliente, disfrutará de un mayor rendimiento, flexibilidad y seguridad. Mientras implementamos estas nuevas aplicaciones y servicios de forma fluida, usted puede centrarse en asegurarse de disponer de la funcionalidad que necesita.

También estamos trabajando para incorporar a nuestros productos las mejores soluciones de código abierto, ampliando los servicios que ofrecen estas plataformas y mejorando las capacidades de nuestros entornos de contenedores. Nuestro objetivo es siempre crear productos que sean más fáciles de implementar, más rápidos de integrar en sus redes existentes, más fiables y más seguros.

Para ejecutar nuestra estrategia de adopción de contenedores, nos centramos en los siguientes enfoques:

  • Ampliar la gama de servicios de aplicaciones no relacionados con la seguridad que ofrecemos. En este caso, nos centramos en proporcionar mejores herramientas que aumenten la observabilidad y faciliten la gestión de los entornos de contenedores, incluidas la gestión del rendimiento de las aplicaciones, la recopilación de registros y el seguimiento, la depuración avanzada y la supervisión general del estado de las aplicaciones.
  • Añadir a los contenedores servicios de seguridad no orientados al plano de datos. En este ámbito, tenemos previsto innovar ofreciendo servicios de seguridad que reduzcan la superficie de ataque de los contenedores en ejecución.
  • Permitir el alojamiento de contenedores de terceros en los productos de F5. Esta opción de integración permitiría que las aplicaciones desarrolladas por clientes o terceros se ejecutaran en una interfaz flexible de ejecución de contenedores dentro de los productos actuales y futuros de F5. Este enfoque permitiría a F5 crear soluciones llave en mano que incluyeran diversos contenedores y aplicaciones, tanto comerciales como desarrollados a medida, lo que mejoraría significativamente la interoperabilidad.
  • Proporcionar paquetes para los servicios de aplicaciones existentes mediante herramientas de código abierto. Esta opción nos permite ofrecerle políticas de servicio coherentes entre los entornos heredados y los de nueva creación.
  • Automatice los servicios de escalado y seguridad de las aplicaciones en contenedores para aumentar el número de aplicaciones gestionadas, al tiempo que limita los recursos asignados para darles soporte.

El futuro de los contenedores

F5 apuesta por un futuro en el que los contenedores sean un mecanismo de entrega fundamental para muchas de las futuras tecnologías de servicios de aplicaciones. Estas tecnologías incluirán la informática sin servidor, la malla de servicios y el edge móvil, aunque también podrían abarcar otros enfoques actualmente en desarrollo o aún por concebir. Estamos rediseñando nuestra gama de productos para integrar los contenedores en nuestras soluciones sin menoscabar los aspectos esenciales de una gestión eficaz de la red.

Al igual que ocurre con la virtualización, los propios contenedores serán cada vez más conscientes de las capacidades subyacentes del hardware en el que se ejecuta el motor de contenedores. El uso de varios hilos, la velocidad de la memoria, el acceso al almacenamiento y las redes serán cada vez más transparentes para las aplicaciones que se ejecutan en cada contenedor, lo que permitirá optimizar aún más el uso de los recursos.

No consideramos que los contenedores sustituyan a la virtualización, sino que la complementan. Por consiguiente, esperamos que los contenedores tengan una vida útil al menos igual a la de la virtualización y que ambos sigan coexistiendo. Por último, esperamos que surjan nuevos niveles de abstracción que coexistan tanto con la virtualización como con los contenedores.

Somos conscientes de que la seguridad siempre será una preocupación fundamental para los clientes. Por ello, F5 sigue aprovechando su experiencia en dispositivos de hardware y software, cortafuegos y redes para ofrecer la máxima seguridad posible en todos sus productos.

En resumen, además de nuestra tecnología actual relacionada con los contenedores, F5 tiene previsto seguir incorporando contenedores a su gama de productos para ofrecerle más opciones de integración, una mayor fiabilidad, un mejor rendimiento y un menor tiempo de implementación con las aplicaciones actualizadas y futuras.

Para obtener más información sobre F5 y la compatibilidad de los contenedores con las aplicaciones, visite f5.com/solutions/bridge-f5-with-container-environments

Notas al pie

1 El auge de los servidores Kubernetes bare metal, Container Journal, Mike Vizard, 2019
2 El estado del desarrollo de aplicaciones basadas en contenedores, informe de IBM Cloud, 2018
3 Mal configurados y expuestos: servicios de contenedores, Palo Alto Networks, Nathaniel Quist, 2019

PUBLICADO EL 23 DE JUNIO DE 2022