¿Qué es Knative?

Publicado el 12 de octubre de 2021
Un símbolo de infinito brillante en rojo y azul flotando sobre una superficie reflectante en un entorno oscuro y brumoso

Definición de Knative

Knative permite que las cargas de trabajo sin servidor se ejecuten en clústeres de Kubernetes. Hace que construir y orquestar contenedores con Kubernetes sea más rápido y fácil.

Knative (pronunciado kay-NAY-tive) es una extensión de la plataforma de orquestación de contenedores Kubernetes. Proporciona herramientas y utilidades que hacen que la creación, el despliegue y la gestión de aplicaciones en contenedores dentro de Kubernetes sean una experiencia más sencilla y "nativa de Kubernetes" (de ahí el nombre, "K" de "Kubernetes" + "nativo").

Al igual que Kubernetes, Knative es un software de código abierto. Google lo desarrolló inicialmente en colaboración con IBM®, Pivotal, Red Hat®, SAP y casi otras 50 empresas. Hoy en día, la Cloud Native Computing Foundation (CNCF) alberga el proyecto de código abierto Knative.

Por qué Kubernetes necesita Knative

Kubernetes automatiza y programa el despliegue, la gestión y el escalado de contenedores:componentes de aplicaciones ligeros y ejecutables 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 las máquinas virtuales (VM) permiten que las aplicaciones compartan los recursos de una sola computadora física. Más pequeños y más eficientes en recursos que las VM y más adecuados para los ciclos de lanzamiento incrementales de las metodologías de desarrollo ágil y DevOps, los contenedores se han convertido en las unidades informáticas de facto de las aplicaciones modernas nativas de la nube. Las empresas que utilizan contenedores informan otros beneficios, incluida la mejora de la calidad de las aplicaciones, mayores niveles de innovación y más:

A medida que el desarrollo nativo de la nube se vuelve más popular y los contenedores proliferan en una organización, las capacidades de orquestación de contenedores de Kubernetes, que incluyen programación, equilibrio de carga, monitoreo de estado y más, hacen que esa proliferación sea mucho más fácil de gestionar. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o creen plantillas para muchas tareas repetitivas, como extraer el código fuente de la aplicación de los repositorios, crear y aprovisionar una imagen de contenedor alrededor del código y configurar conexiones de red fuera de Kubernetes con diferentes herramientas. La incorporación de contenedores gestionados por Kubernetes en un proceso automatizado de integración continua/entrega continua (CI/DC) requiere herramientas especiales y programación personalizada.

Knative elimina esta complejidad con herramientas que automatizan estas tareas desde Kubernetes. Un desarrollador puede definir el contenido y la configuración del contenedor en un único archivo de manifiesto YAML, y Knative hace el resto: cre el contenedor y realiza la programación de red para configurar una ruta, ingreso, equilibrio de carga y más. Knative también ofrece una interfaz de línea de comandos, Knative CLI, que permite a los desarrolladores acceder a las características de Knative sin editar archivos YAML.

IBM DevOps

¿Qué es DevOps?

Andrea Crawford explica qué es DevOps, el valor de DevOps y cómo las prácticas y herramientas de DevOps le ayudan a mover sus aplicaciones a través de todo el delivery pipeline, desde la ideación hasta la producción. Dirigido por los principales líderes de pensamiento de IBM, el programa de estudio está diseñado para ayudar a los líderes empresariales a adquirir los conocimientos necesarios para priorizar las inversiones en IA que pueden impulsar el crecimiento.

Hacer que los contenedores no tengan servidor

La computación sin servidor es un modelo de ejecución nativo de la nube que hace que las aplicaciones sean más fáciles de desarrollar y más rentables. El modelo de computación sin servidor

  • proporciona recursos informáticos bajo demanda, ya que escalan de forma transparente en función de las solicitudes y se reducen a cero cuando se dejan de realizar;

  • descarga todas las tareas de gestión de infraestructura (escalado, programación, aplicación de parches, aprovisionamiento y más) al proveedor de la nube, lo que permite a los desarrolladores centrar su tiempo y esfuerzo en el desarrollo y la innovación; y

  • permite a los clientes de la nube pagar solo por los recursos utilizados; nunca pagan por la capacidad inactiva.

Por sí solo, Kubernetes no puede ejecutar aplicaciones sin servidor sin un software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de la nube específico. Knative permite que cualquier contenedor se ejecute como una carga de trabajo sin servidor en cualquier clúster de Kubernetes, ya sea que el contenedor esté construido alrededor de una función sin servidor u otro código de aplicación (por ejemplo, microservicios) al abstraer el código y manejar el enrutamiento de la red, los activadores de eventos y el autoescalado.

Cómo funciona Knative: componentes

Knative se encuentra en Kubernetes y agrega tres componentes principales o primarios: Build, Serving y Eventing.

Build

El componente Knative Build automatiza la conversión del código fuente en un contenedor. Este proceso suele implicar varios pasos, que incluyen:

  • Extraer código fuente de un repositorio de código, como GitHub

  • Instalar las dependencias subyacentes, como variables de entorno y bibliotecas de software, que el código necesita para ejecutar

  • Crear imágenes de contenedores

  • Colocar imágenes de contenedor en un registro donde Kubernetes y otros desarrolladores puedan encontrarlas.

Knative utiliza API de Kubernetes y otras herramientas para su proceso de compilación. Un desarrollador puede crear un manifiesto único (normalmente, un archivo YAML) que especifique todas las variables (ubicación del código fuente, dependencias necesarias y más) y Knative utiliza el manifiesto para automatizar la creación del contenedor.

Servicio

El componente Serving despliega y ejecuta contenedores como servicios Knative escalables. El servicio proporciona las siguientes capacidades esenciales:

  • La configuración define y mantiene el estado de un servicio. También proporciona gestión de versiones: cada modificación de la configuración crea una nueva versión del servicio y se guardan las versiones anteriores.

  • El enrutamiento inteligente de servicios permite a los desarrolladores enrutar el tráfico a diferentes versiones del servicio. Supongamos que creó una nueva versión del servicio, pero desea desplegarla en un subconjunto de usuarios antes de migrar a todos los usuarios. El enrutamiento inteligente de servicios le permite enrutar un porcentaje de las solicitudes de los usuarios al nuevo servicio y el resto a una versión anterior. A medida que tenga más confianza en el nuevo servicio, podrá dirigir más tráfico a él.

  • Autoescalado. Knative puede escalar los servicios a miles de instancias; también puede reducirlas a cero, es decir, ninguna instancia del contenedor, lo cual es crítico para admitir aplicaciones sin servidor.

Knative Serving toma prestado el enrutamiento inteligente de servicios de Istio, otra aplicación del ecosistema de Kubernetes. Istio, una malla de servicios de código abierto para Kubernetes, también proporciona autenticación para solicitudes de servicio, cifrado automático de tráfico para una comunicación segura entre servicios, métricas detalladas sobre microservicios y operaciones de funciones sin servidor y otras herramientas para que los desarrolladores y administradores optimicen la infraestructura. 

Eventing

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 adecuados, por lo que no es necesario escribir scripts ni implementar middleware para la funcionalidad. Knative también maneja canales, que son colas de eventos entre los que los desarrolladores pueden elegir, 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 la realicen sus contenedores.

Las fuentes de eventos de Knative facilitan a los desarrolladores la creación de conexiones con productores de eventos de terceros. Knative Eventing crea automáticamente la conexión con el productor de eventos y enruta los eventos generados. No es necesario saber cómo hacerlo mediante programación: Knative hace todo el trabajo.

Casos de uso nativos

Para resumir, Knative admite varios casos de uso para los usuarios de Kubernetes que desean simplificar el desarrollo de aplicaciones en contenedores o llevar el uso de contenedores al siguiente nivel.

Optimizar Kubernetes. Al eliminar tareas repetitivas de compilación y configuración, Knative hace que los desarrolladores que trabajan con Kubernetes sean más productivos. 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 el camino hacia la tecnología sin servidor. Puede ser desalentador configurar y administrar manualmente entornos sin servidor. Knative permite a las organizaciones configurar rápidamente cargas de trabajo sin servidor. En lo que respecta a los desarrolladores, solo están creando un contenedor: es Knative el que lo ejecuta como una función sin servidor detrás de escena.

Soporte de ciclos de vida ágil y DevOps. Al permitir a los desarrolladores crear nuevos contenedores y versiones de contenedores más rápido, Knative facilita el despliegue de aplicaciones en contenedores en pasos pequeños, rápidos e iterativos como parte de un flujo de trabajo ágil o DevOps. Los servicios Knative se integran fácilmente en pipelines de CI/CD automatizadas sin requerir software especial o programación personalizada.

Hacer más fluidos los despliegues de nuevas características. El lanzamiento de nuevas versiones a los clientes puede exponer problemas de software que podrían afectar los procesos comerciales. La configuración y el enrutamiento de Knative permiten a los desarrolladores exponer nuevas revisiones de contenedores a un subconjunto de la base de usuarios. Luego, aumentan gradualmente esa audiencia con el tiempo a medida que resuelven problemas o regresan rápidamente a versiones anteriores si es necesario.

Mantener a los desarrolladores centrados en la programación y la innovación. DevOps podría facultar a los desarrolladores para gestionar sus propios entornos. Pero al fin y al cabo, los desarrolladores quieren centrarse en crear software sin errores y nuevas características innovadoras, no en configurar las colas del bus de mensajes para activar eventos o gestionar la escalabilidad de los contenedores. Knative permite a los desarrolladores dedicar más tiempo a lo que mejor saben hacer.

Soluciones relacionadas
IBM Instana Observability

Aproveche el poder de la IA y la automatización para resolver problemas de manera proactiva en toda la pila de aplicaciones.

Explore IBM Instana Observability
Soluciones de DevOps

Utilice el software y las herramientas de DevOps para crear, desplegar y gestionar aplicaciones nativas de la nube en múltiples dispositivos y entornos.

Explore las soluciones de DevOps
Servicios de consultoría en la nube

Acelere la agilidad y el crecimiento empresarial: modernice continuamente sus aplicaciones en cualquier plataforma con nuestros servicios de consultoría en la nube.

Explore los servicios de consultoría en la nube
Dé el siguiente paso

Desde la detección proactiva de problemas con IBM Instana hasta los insights en tiempo real en toda su pila, puede mantener las aplicaciones nativas de la nube funcionando de forma confiable.

  1. Descubra IBM Instana
  2. Explore las soluciones de DevOps