Kubernetes se come la red

por | Dic 5, 2022 | Blog

Kubernetes se come la infraestructura

Kubernetes es una de las transiciones de plataforma más críticas de la historia de la informática. Kubernetes es la forma en que desplegamos, programamos y operamos las aplicaciones distribuidas nativas de la nube. La plataforma se está convirtiendo rápidamente en la forma de facto en que las aplicaciones modernas tratan con la infraestructura de la nube, incluidos los recursos de computación, almacenamiento, redes, GPU y DPU. En la nube pública, en el borde o en entornos privados (centros de datos privados o centros de colocación), Kubernetes está en todas partes. A diferencia de las máquinas virtuales, Kubernetes abstrae y cuantifica los recursos de infraestructura de una forma amigable e intuitiva diseñada para las personas que despliegan aplicaciones nativas de la nube. Considera la infraestructura desde un punto de vista práctico centrado en los componentes de la aplicación. Al abstraer la infraestructura de esta manera, Kubernetes permite la portabilidad de aplicaciones a través de múltiples nubes y entornos, privados o públicos. (Por supuesto, siempre que no existan dependencias "duras" directas de los servicios de plataforma proporcionados por las respectivas nubes).

El panorama de la nube nativa

A medida que crece la popularidad de Kubernetes, se expande rápidamente un ecosistema ya considerable de herramientas operativas. Al igual que Kubernetes, estas herramientas son nativas de la nube y pueden adaptarse a cualquier entorno, en cualquier nube, privada o pública, aprovechando la misma abstracción de infraestructura. La capacidad de observación, despliegue y depuración en múltiples nubes se realiza de forma estándar y no a medida, utilizando cadenas de herramientas abiertas de facto. Cientos de miles de desarrolladores, SRE y equipos de DevOps adoptan estas herramientas para su uso diario sin miedo a quedar atrapados en un callejón sin salida propietario. Estas herramientas se comparten entre organizaciones, empresas y nubes, lo que convierte su conocimiento en un conjunto de habilidades portátil y aplicable en cualquier lugar.

Las redes deben ser más cloud

Casi en cualquier lugar: nada de esto se aplica a las redes modernas. Aunque las herramientas estándar de operaciones nativas de la nube son habituales para gestionar y supervisar las redes en la nube, no podemos decir lo mismo de las redes físicas fuera de la nube pública. Las redes físicas en entornos privados siguen estando en la era pre-nube. Seguimos dependiendo de herramientas a medida específicas del proveedor que sirven principalmente a sus intereses, pero no a los del profesional. Las herramientas de gestión se están convirtiendo rápidamente en una plataforma para los principales proveedores de infraestructuras de red. Utilizan estas herramientas, que a menudo ofrecen alojadas en la nube, como un servicio, como medio de fidelizar a los clientes a su oferta más amplia. Una de las principales inspiraciones de este modelo fue la exitosa plataforma Meraki de Cisco. Meraki convirtió en consumidor las redes de empresas y campus en torno a su plataforma de gestión alojada en la nube, lo que simplificó enormemente las operaciones de red. Pero a costa de reducir la variedad de sistemas de hardware y proveedores compatibles con la plataforma. Una transición similar se está produciendo en las plataformas de centros de datos: NEXUS Cloud de Cisco, Cloud Vision de Arista y, en menor medida, Apstra de Juniper. Las herramientas de gestión de redes son ahora un mecanismo para bloquear operativamente a la competencia.

Históricamente, el factor de forma de ser entregado como un aparato de hardware lo definía todo - es sólo una "caja". La forma en que gestionamos las redes es exactamente así: como un montón de cajas, una caja cada vez. Las redes fueron la aplicación distribuida original. La aparición de las funciones de red de software hace que la naturaleza de aplicación distribuida de las redes sea aún más acuciante. Las nuevas aplicaciones o servicios de red pueden ejecutarse en cualquier lugar: en conmutadores, smartNIC, servidores normales o nodos de servicio especiales (bueno, servidores normales, pero dedicados a la red).

Las redes se están transformando en una nube.

Este "enfoque de caja" no funciona para el software: hay una forma mejor. Desde el punto de vista operativo, tenemos que acercar las redes a las plataformas informáticas y de aplicaciones. Debemos ofrecer la misma experiencia que disfrutan hoy tantos en la nube, donde NetOps es sólo una parte del proceso DevOps normal. A medida que muchos especialistas en infraestructura más jóvenes crecen en la nube, necesitamos hacer que las redes físicas se sientan, actúen y funcionen de la forma que a estos nuevos profesionales de la infraestructura les resulta familiar.

Las redes deben ser más Kubernetes

A pesar de lo que piensan los grandes proveedores de equipos de red, las herramientas de gestión de red no son la plataforma. La red física es sólo una parte pequeña pero esencial de la infraestructura. Es la responsable de conectar las aplicaciones entre sí, con Internet y con otras nubes y entornos. En cualquier entorno, la red física es una parte integral de la aplicación. Pero es la única parte que se gestiona de forma especializada y a medida, lo que a menudo es incompatible con las operaciones del resto de la infraestructura y la pila de aplicaciones. Y esa parte de la pila estará totalmente dominada por Kubernetes, al igual que en la nube pública. Kubernetes es una plataforma de consumo de infraestructura de facto que está emergiendo rápidamente y una forma excelente de gestionar aplicaciones distribuidas modernas, justo lo que necesitan las redes. Se integra bien en una amplia gama de herramientas operativas de facto y funciona bien con enfoques operativos modernos como GitOps, infraestructura como código/datos, despliegue continuo, etc. Al utilizar Kubernetes, las redes físicas se convierten en un componente más de la pila de infraestructura abierta estándar.

¿Cómo llegar hasta allí?

Un sistema operativo en red

En primer lugar, necesitamos un sistema operativo de red abierto (NOS) para ofrecer redes como una aplicación distribuida moderna. El NOS debería modularizarse y contenerizarse. Deberíamos poder tratar cada uno de sus componentes o servicios como simples aplicaciones. Con un poco (bueno, quizás mucho) de limpieza, SONiC puede ofrecer estas propiedades. SONiC ya cuenta con una gran comunidad de seguidores y con el apoyo de la mayoría de los proveedores de sistemas de marca y de caja blanca. Sin embargo, hay que trabajar un poco. Hay que desacoplar, desenredar y modularizar un buen número de scripts de inicialización y mantenimiento. El objetivo es que cada servicio se gestione de forma independiente y se pueda actualizar sin necesidad de reinicios más amplios que afecten a otros servicios. Puede que sea necesario migrar un tiempo de ejecución de contenedor de Docker a containerd para garantizar una interoperabilidad más fluida con Kubernetes y otras herramientas modernas nativas de la nube. 

Plano de control de Kubernetes

Kubernetes es una herramienta excelente para desplegar software y distribuir configuraciones. Es muy modular y extensible (mediante CRD, controladores y operadores), lo que lo convierte en una base ideal para los controladores de infraestructuras. Convertir una red de conmutadores, smartNIC y nodos de servicio en un clúster Kubernetes nos permite tratar la red como un conjunto de aplicaciones distribuidas. Pueden ser protocolos de enrutamiento, funciones de utilidad, sondas de observabilidad, proxies, pasarelas API, ejecutores de políticas, agentes de recopilación de registros o bots de depuración. El hardware actual es increíble; lo que necesitamos ahora es mejor software: comercial, de código abierto o experimentos desarrollados a medida.

Operaciones nativas en la nube y observabilidad

Desde el punto de vista operativo, Kubernetes simplificará la integración con las herramientas nativas de la nube más utilizadas. Esto permitirá el uso nativo de herramientas de observabilidad/telemetría como ELK-stack, Prometheus, Jaeger y Grafana. Las herramientas de automatización como Terraform y ArgoCD permitirán prácticas DevOps estándar como GitOps e Infraestructura como código. La integración con estas herramientas aportará los mismos enfoques operativos de los que disfrutan los equipos de DevOps y SRE en la nube pública.

Abstracción textil

Tenemos que abrir la infraestructura de red a las personas que han crecido en la nube. Todos los que trabajan con redes en la nube están íntimamente familiarizados con el concepto de VPC. La VPC es una unidad básica de consumo y aislamiento de red en AWS. Te permite tener tu propia "porción" de la red de la nube, donde puedes ejecutar tus aplicaciones. El concepto es muy abstracto y no filtra la implementación subyacente de la red. Para el usuario, no importa cómo se implemente la red bajo el capó. El usuario no tiene control directo sobre los conceptos y protocolos de red subyacentes. La única forma en que el usuario puede interactuar con la red es la abstracción.

Debe emplearse un método similar para la red física fuera de la nube. La abstracción no debe filtrar ningún detalle de instrumentación o protocolo al usuario y debe ser adaptable a múltiples tecnologías de red a través de las correspondientes políticas de instrumentación. Por ejemplo, en función de la org, el usuario o las propiedades del objeto VPC, el aislamiento puede implementarse como VLAN o BGP eVPNs. Las políticas de instrumentación pertenecen y son controladas por el equipo de arquitectura de red y no son modificables por el usuario que asigna una VPC.

El futuro será mucho más futurista de lo previsto.

Llevemos la nueva red física abierta a las masas, simplifiquemos la infraestructura física haciéndola más cloud y, por fin, quitemos de en medio la red física. Estamos trabajando duro en ello, ¿te unirás a nuestra revolución?