Knative (pronunciado Kay-NAY-tive) es una extensión de la plataforma Kubernetes de orquestación de contenedores que permite que cargas de trabajo sin servidor se ejecuten en clústeres de Kubernetes y proporciona herramientas y utilidades que facilitan la creación, implementación y gestión de aplicaciones en contenedores dentro de Kubernetes. Una experiencia más simple y más 'nativa de Kubernetes' (de ahí el nombre - 'K' de 'Kubernetes' + native).
Al igual que Kubernetes, Knative es un software de código abierto. Fue desarrollado originalmente por Google en colaboración con IBM, Pivotal, Red Hat, SAP y cerca de 50 empresas más. Hoy, el proyecto de código abierto Knative está alojado por la Cloud Native Computing Foundation (CNCF).
Kubernetes automatiza y programa la implementación, gestión y escalamiento de contenedores: componentes de aplicaciones ejecutables y livianos que combinan el código fuente con todas las bibliotecas y dependencias del sistema operativo (SO) necesarias para ejecutar el código en cualquier entorno.
Los contenedores permiten que los componentes de la aplicación compartan los recursos de una sola instancia de un sistema operativo, de la misma manera que máquinas virtuales (VM) permiten que las aplicaciones compartan los recursos de una sola computadora física. Más pequeños, más eficientes en recursos que las VM y mejor adaptados a los ciclos de lanzamiento incrementales de Agile y las metodologías de desarrollo de DevOps, los contenedores se han convertido en las unidades de computación de facto de las aplicaciones modernas nativas en la nube. Las empresas que utilizan contenedores informan otros beneficios, incluyendo la mejora de la calidad de las aplicaciones, mayores niveles de innovación, y mucho más:
Descargue el informe completo: Contenedores en la empresa (PDF, 1.4 MB)
A medida que el desarrollo nativo de la nube gana popularidad y el uso de contenedores se extiende entre las empresas, las funciones de orquestación de contenedores de Kubernetes, como la programación, el equilibrio de carga o la supervisión del estado, facilitan la gestión de esta proliferación. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o preparen plantillas de muchas tareas repetitivas, como extraer el código fuente de la aplicación desde repositorios, crear y suministrar una imagen de contenedores alrededor del código o configurar conexiones de red, todo ello fuera de Kubernetes, utilizando diferentes herramientas. Además, la incorporación de contenedores gestionados por Kubernetes en una línea de trabajo de integración continua/entrega continua automatizada requiere herramientas especiales y codificación personalizada.
Knative elimina esta complejidad con herramientas que automatizan estas tareas, desde dentro de Kubernetes. Un desarrollador puede definir el contenido y la configuración del contenedor en un único archivo de manifiesto YAML, y Knative se encarga del resto: crea el contenedor y realiza la programación de la red para configurar una ruta, el ingreso o el equilibrio de carga, entre otros elementos (Knative también ofrece una interfaz de línea de mandatos, la CLI de Knative, que permite a los desarrolladores acceder a las características de Knative sin editar archivos YAML).
La computación sin servidor es un modelo de ejecución nativo de la nube que facilita aún más el desarrollo de aplicaciones y habilita una ejecución más rentable. El modelo informático sin servidor:
Por sí mismo, Kubernetes no puedo ejecutar aplicaciones sin servidor sin software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de nube específico. Knative permite que cualquier contenedor se ejecute como una carga de trabajo sin servidor en cualquier clúster de Kubernetes, tanto si el contenedor está construido alrededor de una función sin servidor como otro código de aplicación (p. ej., microservicios), abstrayendo el código y el manejo del enrutamiento de la red, los activadores de eventos y el escalamiento automático.
Knative reside sobre Kubernetes y añade tres componentes principales, o primitivos: Build, Serving y Eventing.
El componente Build de Knative automatiza el proceso de convertir el código fuente en un contenedor. Este proceso generalmente implica varios pasos, que incluyen:
Knative utiliza API de Kubernetes y otras herramientas para su proceso de Build. Un desarrollador puede crear un único manifiesto (normalmente un archivo YAML) que especifica todas las variables, como ubicación del código fuente o dependencias requeridas, y Knative utiliza el manifiesto para automatizar la creación del contenedor.
El componente Serving implementa y ejecuta contenedores como servicios escalables de Knative. Serving proporciona las siguientes funcionalidades destacadas:
El componente Serving de Knative toma prestado el enrutamiento de servicios inteligente de Istio, otra aplicación del ecosistema Kubernetes, una malla de servicio de código abierto para Kubernetes. Istio también proporciona autenticación para solicitudes de servicio, cifrado automático de tráfico para proteger la comunicación entre servicios y métricas detalladas sobre microservicios y operaciones de funciones sin servidor, que los desarrolladores y administradores pueden utilizar para optimizar la infraestructura (Para obtener más detalles acerca de cómo Knative utiliza Istio, lea “Istio and Knative: Extending Kubernetes for a New Developer Experience").
El componente Eventing de Knative permite que diferentes eventos activen sus servicios y funciones basados en contenedores. Knative pone en cola y entrega esos eventos a los contenedores apropiados, por lo que no es necesario escribir scripts o implementar middleware para obtener la funcionalidad. Knative también maneja los canales, que son colas de eventos entre las que pueden elegir los desarrolladores, y el bus, una plataforma de mensajería que entrega eventos a contenedores. También permite a los desarrolladores configurar "feeds", que conectan un evento a una acción para que se puedan ejecutar los contenedores.
Las fuentes de eventos de Knative permiten a los desarrolladores crear fácilmente conexiones con generadores de eventos de terceros. El componente Eventing de Knative creará automáticamente la conexión al generador de eventos y dirigirá los eventos generados. No es necesario averiguar cómo hacerlo mediante programación: Knative hace todo el trabajo.
A modo de resumen, Knative admite varios casos de uso para aquellos usuarios de Kubernetes que desean simplificar el desarrollo de aplicaciones en contenedores o elevar su nivel de uso de contenedores.
Optimizar Kubernetes. Al eliminar las tareas repetitivas de creación y configuración, Knative hace que los desarrolladores trabajen con un Kubernetes más productivo. Cualquier equipo de desarrollo que tenga dificultades para gestionar un número creciente de clústeres de Kubernetes es un candidato ideal para Knative.
Acelerar la ruta hacia la computación sin servidor. Los entornos sin servidor pueden ser desalentadores para configurar y gestionar manualmente. Knative permite a las organizaciones configurar rápidamente cargas de trabajo sin servidor. En lo que respecta a los desarrolladores, solo crean un contenedor: es Knative el que lo ejecuta como una función sin servidor en segundo plano.
Dar soporte a los ciclos de vida Agile y DevOps. Al permitir que los desarrolladores creen nuevos contenedores y versiones de contenedores más rápidamente, Knative facilita la implementación de aplicaciones en contenedores en pasos pequeños, rápidos e iterativos como parte de un flujo de trabajo Agile o DevOps. Además, los servicios de Knative se integran fácilmente en líneas de trabajo de CI/CD automatizadas sin requerir software especial o programación personalizada.
Suavizar la implementación de nuevas características. La implementación de nuevas versiones para los clientes puede exponer problemas de software que podrían afectar los procesos de negocio. La configuración y el enrutamiento de Knative permiten a los desarrolladores exponer las revisiones de nuevos contenedores a un subconjunto de la base de usuarios, y luego aumentar gradualmente ese público a medida que van resolviendo problemas, o retroceder rápidamente a versiones anteriores si es necesario.
Mantener a los desarrolladores centrados en la codificación y la innovación. DevOps puede permitir a los desarrolladores gestionar sus propios entornos. No obstante, a final de cuentas, los desarrolladores quieren centrarse en crear software libre de errores y nuevas características innovadoras, no en configurar colas de bus de mensajes para la activación de eventos o la gestión de la escalabilidad del contenedor. Knative permite a los desarrolladores dedicar más tiempo a hacer lo que mejor saben hacer.
Con Red Hat OpenShift on IBM Cloud, los desarrolladores de OpenShift tienen una forma rápida y segura de contener e implementar cargas de trabajo empresariales en clústeres de Kubernetes.
Implemente y ejecute aplicaciones de manera consistente en entornos locales, edge computing y de nube pública de cualquier proveedor de nube, mediante un conjunto común de servicios en la nube que incluye cadenas de herramientas, bases de datos e IA.
IBM Cloud Code Engine, una plataforma sin servidor completamente gestionada, le permite ejecutar su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor completamente gestionado.
Una nueva investigación de IBM documenta el impulso creciente de la adopción de contenedores y Kubernetes.
Sin servidor es un modelo de desarrollo y ejecución de aplicaciones en la nube que permite a los desarrolladores crear y ejecutar código sin gestionar servidores ni pagar por una infraestructura de nube inactiva.
Los contenedores son parte de una estrategia de nube híbrida que le permite crear y gestionar cargas de trabajo desde cualquier lugar.