Knative (pronunciado Ki-NEY-tif) es una extensión de la plataforma de orquestación de contenedores Kubernetes que permite ejecutar cargas de trabajo sin servidor en clústeres de Kubernetes y proporciona herramientas y utilidades que simplifican la creación, el despliegue y la gestión de aplicaciones contenerizadas en Kubernetes, y ofrecen una experiencia más "nativa en Kubernetes" (de ahí el nombre: nativa + "K" de "Kubernetes").
Al igual que Kubernetes, Knative es software de código abierto. Originalmente fue desarrollado por Google en colaboración con IBM, Pivotal, Red Hat, SAP y unas 50 empresas más. Hoy, el proyecto de código abierto de Knative está alojado por Cloud Native Computing Foundation (CNCF).
Kubernetes automatiza y programa el despliegue, la gestión y la escalada de contenedores, que son componentes de aplicación ligeros y ejecutables que combinan código fuente con todas las bibliotecas del sistema operativo (OS) y dependencias requeridas para la ejecución del código en cualquier entorno.
Los contenedores permiten a los componentes de una aplicación compartir los recursos de una sola instancia de un sistema operativo, de la misma manera que las máquinas virtuales (VM) permiten a las aplicaciones compartir los recursos de un solo sistema físico. Más pequeños y más eficientes en recursos que las máquinas virtuales, y más adecuados para los ciclos de release incrementales de las metodologías de desarrollo Agile y DevOps, los contenedores se han convertido en las unidades informáticas de facto de las aplicaciones nativas en la nube modernas. Las empresas que utilizan contenedores se benefician de otras ventajas, incluida la calidad superior 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 en la nube gana popularidad y el uso de contenedores se extiende entre las empresas, las prestaciones de orquestación de contenedores de Kubernetes, como la programación, el equilibrio de carga o la supervisión de estado, facilitan la gestión de esta proliferación. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o hagan plantillas de muchas tareas repetitivas, como extraer código fuente de aplicaciones desde repositorios, crear y suministrar una imagen de contenedores en torno al 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 un conducto de integración continua/entrega continua (CI/DC) automatizado 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 informática sin servidor es un modelo de ejecución nativo en 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 puede ejecutar aplicaciones sin servidor sin software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de nube específico. Knative permite ejecutar cualquier contenedor como 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 direccionamiento de la red, los activadores de eventos y la escalada automática.
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 código fuente en un contenedor. Este proceso normalmente 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 despliega y ejecuta contenedores como servicios de Knative escalables. Serving proporciona las siguientes prestaciones destacadas:
El componente Serving de Knative toma prestado el direccionamiento 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 información más detallada sobre 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 estos eventos a los contenedores apropiados, por lo que no es necesario escribir scripts ni 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 se encarga de todo.
A modo de resumen, Knative admite varios casos de uso para aquellos usuarios de Kubernetes que quieran 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 permite que los desarrolladores trabajen con Kubernetes de forma más productiva. Cualquier equipo de desarrollo que tenga varios frentes abiertos gestionando un número creciente de clústeres de Kubernetes es un candidato ideal para Knative.
Acelerar la transición a la informática sin servidor. La configuración y la gestión de entornos sin servidor pueden resultar abrumadoras. 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 quien lo ejecuta como una función sin servidor de fondo.
Dar soporte a los ciclos de vida Agile y DevOps. Al permitir a los desarrolladores crear nuevos contenedores y versiones de contenedores más rápidamente, Knative facilita el despliegue 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 conductos de CI/CD automatizados sin necesidad de software especial ni programación personalizada.
Suavizar la implementación de nuevas características. La implementación de nuevos lanzamientos para los clientes puede exponer problemas de software que podrían afectar a los procesos de negocio. La configuración y el direccionamiento 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 facultar a los desarrolladores para gestionar sus propios entornos. No obstante, a fin 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 de los contenedores. Knative permite a los desarrolladores dedicar más tiempo a hacer lo que se les da mejor.
Con Red Hat OpenShift on IBM Cloud, los desarrolladores de OpenShift obtienen una forma rápida y segura de contenerizar y desplegar cargas de trabajo empresariales en clústeres de Kubernetes.
Despliegue y ejecute aplicaciones de manera coherente en entornos locales, de edge computing o de nube pública de cualquier proveedor de nube mediante un conjunto común de servicios en la nube, que incluyen 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 totalmente gestionado.
Una nueva investigación de IBM documenta la creciente adopción de contenedores y Kubernetes.
El modelo sin servidor es un modelo de ejecución y desarrollo de aplicaciones en la nube que permite a los desarrolladores crear y ejecutar código sin gestionar servidores ni pagar por la infraestructura de nube que esté desocupada.
Los contenedores forman parte de una estrategia de nube híbrida que permite crear y gestionar cargas de trabajo desde cualquier lugar.