Una guía rápida de Knative Serverless Framework para principiantes

Los marcos sin servidor tienen demanda en los últimos años y han sido testigos de una mayor adopción entre los desarrolladores.

Sin embargo, las aplicaciones basadas en contenedores ya son populares, al igual que Kubernetes entre las empresas.

Kubernetes, sin duda, es una gran herramienta con un buen potencial. Su ecosistema también está creciendo con una variedad de nuevas herramientas y las últimas tecnologías, como Knative, que tiene el poder de hacer que Kubernetes sea aún mejor.

Knative se introdujo para superar situaciones que conducen al fracaso y establecer un estándar central para las plataformas en la nube y la orquestación nativa de la nube.

En otras palabras, el marco sin servidor de Knative puede adaptarse a las necesidades de una empresa mucho mejor que otras implementaciones sin servidor basadas en la nube.

En esta guía, hablaré sobre Knative, sus beneficios, casos de uso, procedimiento de instalación, procedimiento de trabajo y más.

¡Aquí vamos!

¿Qué es Knative?

Knative es un marco sin servidor basado en Kubernetes que fue desarrollado por primera vez por Google. Carga y ejecuta funciones sin servidor en función de los requisitos de una empresa, lo que minimiza el desperdicio. Es un proyecto de código abierto que agrega componentes para implementar, ejecutar y administrar aplicaciones sin servidor en Kubernetes.

El propósito principal del marco sin servidor de Knative es administrar los estándares para la orquestación multiplataforma. Esto se implementa integrando la función de creación de contenedores, escalado automático, modelos de eventos y gestión de cargas de trabajo.

Anteriormente, había una variedad de soluciones de código abierto además de Knative. Cada solución tiene su forma de implementación, lo que puede provocar la fragmentación del mercado ya que faltan prácticas estandarizadas. Esto significa que es necesario elegir un proveedor específico si desea una característica particular del sistema.

Sin embargo, los problemas de migración comenzaron a llegar al frente. Y para evitar tales problemas, se introdujo el marco sin servidor Knative. Entonces, si tiene dificultades para incorporar alguna tarea, Knative puede hacerlo de manera eficiente dentro de la canalización basada en Kubernetes.

Knative tiene tres piezas:

  • Knative Build: crea imágenes de contenedor y las pone a disposición desde el código fuente.
  • Knative Serving: utiliza Istio y Kubernetes para conectar e implementar estas imágenes de contenedores a través de los recursos de infraestructura asignados.
  • Eventos Knative: permite a los usuarios definir los desencadenantes de eventos y asociar los desencadenantes de eventos con funciones en contenedores.

Cada vez que Knative identifica un evento, define el proceso asociado para ejecutarlo bajo demanda. Con Knative, no es necesario asignar nodos de contenedores, clústeres y pods para el trabajo, ya que Knative asigna recursos de alojamiento solo cuando se ejecuta un proceso determinado. De esta forma, Knative equilibra los beneficios del servidor y del contenedor.

Conceptos básicos de Knative

Analicemos los conceptos principales de Knative Serverless Framework y cómo se relacionan con las primitivas de Knative.

Construir

La construcción de Knative ayuda a utilizar y ampliar las primitivas de Kubernetes existentes, lo que le permite ejecutar construcciones de contenedores desde el origen. Habilita el código fuente de las dependencias y el repositorio, construyendo imágenes de contenedores y registrándolas.

Eventos

El evento lo ayuda a crear una mejor comunicación entre los consumidores y productores de eventos poco acoplados para construir la arquitectura basada en eventos. Knative pone estos eventos en una cola que debía ejecutarse automáticamente sin el script de los desarrolladores.

Posteriormente, estos eventos se entregan a los contenedores. Luego envía feeds a los productores de eventos para realizar tareas. Esto reducirá la carga de trabajo del desarrollador en la creación de código para el establecimiento de la conexión.

Funciones

Una función es una unidad de implementación independiente y un servicio de servicio de Knative, como un microservicio. Su código está escrito para realizar una sola tarea, como por ejemplo:

  • Procesamiento de un archivo en una base de datos
  • Guardar un usuario en una base de datos
  • Realización de un trabajo programado

El marco sin servidor de Knative está diseñado para permitirle desarrollar e implementar funciones de manera efectiva y administrarlas.

Complementos

Amplíe o sobrescriba fácilmente la funcionalidad del marco sin servidor de Knative mediante complementos. Cada archivo serverless.yml contiene una propiedad de complemento que presenta varios complementos.

Recursos

Los recursos son los componentes de la infraestructura sin servidor de Knative que usa su función, incluidos:

  • Fuente de eventos de AWS SQS
  • Una tarea programada (ejecutar cada 5 minutos, 10 minutos, etc.)
  • Una fuente de eventos de Kafka

Y más.

Servicios

Los servicios son como un proyecto. Por lo tanto, un servicio es la unidad de organización del marco sin servidor de Knative. Aunque puede tener muchos servicios para una aplicación, puede pensar en el servicio como un archivo de proyecto.

Es donde podrá definir las funciones, eventos y recursos, todo en un solo archivo titulado serverless.yml, serverless.json o serverless.js. Cuando implementa los servicios con el marco sin servidor, todo en el archivo se implementa a la vez.

Servicio

Knative-serving está integrado en Istio y Kubernetes que admite la implementación de aplicaciones. Permite el desarrollo rápido de contenedores sin servidor, programación de red y escalado automático para componentes de Istio. Knative-serving considera los contenedores como un servicio escalable que puede abarcar desde una instancia hasta muchas instancias de contenedores.

Características de Knative

Analicemos algunas de las características del marco sin servidor de Knative:

  • Knative es un marco sin servidor basado en Kubernetes que le permite implementar servicios en Kubernetes.
  • Integra fácilmente Knative con el entorno compatible
  • Los desarrolladores pueden usar directamente la API de Kubernetes con la ayuda de Knative para implementar servicios sin servidor
  • Permite a los usuarios activar servicios sin servidor con la ayuda del sistema de eventos de Knative

¿Cómo funciona Knative?

El marco sin servidor de Knative funciona como un segmento de dirección de eventos y conecta Istio y Kubernetes. Kubernetes funciona como orquestador de microservicios y contenedores. Istio, por otro lado, es una tecnología de malla de código abierto que reúne varios componentes para interactuar con el usuario y ellos mismos.

Knative brinda a los usuarios múltiples componentes destinados a realizar el trabajo diario básico. Estos componentes se utilizan una y otra vez en una variedad de aplicaciones. Un desarrollador puede usar cualquier lenguaje de programación. Por lo tanto, no necesita conocimientos específicos de idiomas, ya que Knative solo reconoce imágenes de contenedores.

Hay tres componentes del marco sin servidor de Knative que son la clave para su funcionamiento.

Construcción de nuevos contenedores

El componente de construcción es responsable de construir nuevos contenedores. Puede convertir códigos fuente a un contenedor. Knative se puede configurar para satisfacer las necesidades específicas de la empresa.

Primero, Knative extrae el código fuente de la biblioteca como Github. Luego, se agregan dependencias subyacentes para que el código se ejecute de manera efectiva. Luego, las imágenes de contenedor se construyen y se colocan en archivos a los que puede acceder la plataforma Kubernetes.

El contenedor está disponible para los desarrolladores que utilizan Kubernetes y Knative. Por lo tanto, los contenedores se construyen siempre que se conozca el origen del código.

Servir o ejecutar la plataforma

El componente de servicio es responsable del funcionamiento de la plataforma. Implica:

  • Configuración: la configuración es segura en la gestión de múltiples versiones del servicio. Cada vez que se implementa la nueva característica de un contenedor, Knative guarda la versión existente y crea una nueva con los últimos cambios y características. Además, Knative define el estado de un servicio.
  • Escalado automático: para que los contenedores sin servidor funcionen mejor, debe ser capaz de escalar automáticamente los contenedores hacia arriba o hacia abajo. Knative puede escalar automáticamente los servicios a muchos si es necesario.
  • Enrutamiento inteligente de servicios: es una parte importante del mecanismo de trabajo de Knative. Permite a los desarrolladores dirigir el flujo y la cantidad de tráfico a diferentes versiones existentes de los microservicios. Mientras se introducen nuevas funciones y estrategias de implementación azul-verde, se puede utilizar el enrutamiento de servicio inteligente.

Le permite exponer a una fracción de usuarios a la prueba y versión recientes y gradualmente enrutar un gran tráfico a la nueva versión.

Eventos para definir funciones

El componente de eventos de Knative es responsable de describir la función de Knative. Permite definir el funcionamiento de los contenedores en base a eventos. Diferentes eventos desencadenan funciones específicas de contenedores.

Los desarrolladores pueden definir los activadores de eventos y los contenedores asociados para permitir que Knative haga su trabajo. Knative maneja la lista de eventos y la entrega de los eventos.

Beneficios de Knative

Knative proporciona servicios como gestión de rutas, lanzamiento por fases y conexión de servicios. Cuenta con una gran comunidad. Analicemos cómo Knative influye en las empresas para que adopten esta tecnología.

  • A diferencia de otras soluciones, Knative tiene eventos estándar y es compatible con la solución FaaS. Ofrece un marco estándar de CloudEvent que ayuda a diseñar una arquitectura sin servidor.
  • Aunque Knative no es una PaaS, le permite crear una PaaS sin servidor con la plataforma de orquestación sin servidor.
  • Knative tiene un diseño sin servidor completo y maduro.
  • Es compatible con varias plataformas y le brinda un estándar universal entre los proveedores de la nube para eliminar la posibilidad de vincular a los proveedores con una solución específica.

  • Knative proporciona un marco flexible.
  • Es compatible con lanzamientos graduales proporcionales.
  • Puede experimentar el ecosistema sin servidor dentro de un entorno en contenedores.
  • Knative elimina la confiabilidad en la gestión y las herramientas.
  • Puede migrar rápidamente a otros proveedores de la nube que estén integrados con Knative mediante la implementación de Kubernetes.
  • Ofrece un modelo informático basado en solicitudes.
  • Le permite administrar los flujos de trabajo como un servicio.
  • Con Knative, puede procesar datos de IoT, ejecutar comprobaciones de accesibilidad y validar configuraciones de sus grupos de seguridad.
  • Permite a los desarrolladores centrarse en la codificación y les permite crear código iterativo rápidamente.
  • Asegura que los desarrolladores incorporarán nuevas versiones.
  • El modelo basado en eventos de Knative ayuda a implementar diseños, incluida la suscripción, la conexión al sistema externo y el registro.

Desafíos de Knative (y algunas soluciones)

Desafíos de eficiencia

Un marco Knative que admita aplicaciones adecuadas proporciona un mejor rendimiento a un costo mínimo. Sin embargo, una combinación inadecuada de aplicaciones puede resultar en costos más altos y recursos de contenedores infrautilizados. Esto podría conducir a un mal rendimiento de la aplicación, que es el mayor desafío de la implementación sin servidor de Knative.

Por lo tanto, un grupo de recursos de tamaño deficiente o aplicaciones incorrectas pueden destruir muchos beneficios de Knative.

Puede superar este desafío realizando pruebas para verificar las cantidades de recursos y la combinación de aplicaciones en Knative. Mida las cargas de eventos dimensionando las cargas promedio y máximas para cada uno y calcule el consumo total de recursos. Repita esto para varias aplicaciones para crear y ejecutar una configuración de prueba para validar las estimaciones.

Desafíos funcionales

Los desafíos funcionales de Knative podrían ser:

  • Knative depende de las funciones que se ajustan a un modelo sin estado. Esto significa que no se almacenan datos en el propio componente. El desarrollo de las funciones no es una fase difícil, pero requiere un ligero cambio en el enfoque, lo que significa que un solo error puede arruinar el rendimiento del software.
  • Los datos comerciales consisten en transacciones de varios pasos, y las funciones sin estado mantienen el contexto en todos los pasos. Knative no tiene la capacidad que tienen las herramientas sin servidor de la nube pública.

El monitoreo regular y la solución de problemas pueden ayudarlo a mantener su rendimiento en puntajes decentes.

Desafíos operativos

En comparación con las ofertas sin servidor en una nube pública, Knative presenta un desafío operativo. Los administradores no controlan los servidores subyacentes con la nube pública. Pero necesitarán administrar servidores junto con Kubernetes, contenedores, Knative e Istio.

Knative amplía mínimamente la complejidad de las operaciones y el desarrollo para las empresas que ya se han comprometido con Kubernetes y contenedores. Aquellos comprometidos con la malla de servicios y los microservicios encontrarán en Knative una extensión natural.

Casos de uso de Knative

Para las aplicaciones que dan lugar a un número variable de eventos que se mantienen dentro o por encima de los límites de tiempo establecidos, Knative es lo mejor para ellas. Los casos de uso específicos del marco sin servidor de Knative incluyen:

La orientación al evento es fundamental. Si los equipos de TI no pueden imaginar una aplicación como una serie de eventos en lugar de transacciones, Knative puede no ser una buena opción por razones funcionales y de eficiencia.

Requisitos previos e instalación de Knative

Como vemos en las secciones anteriores, Knative es un conjunto de componentes, como eventos y servicio, que se ejecuta en una red de servicios y en un clúster de orquestación de cargas de trabajo. Hay utilidades de línea de comandos que necesitamos instalar para una operación sencilla. Por lo tanto, necesitamos algunas dependencias para garantizar que podamos continuar con la instalación.

requisitos previos

Hay varias opciones para instalar Kubernetes. Docker Desktop viene para habilitar un clúster de Kubernetes fácil que sirve para varios propósitos. El enfoque simple es usar Kubernetes en Docker para ejecutar el clúster de Kubernetes junto con los nodos de contenedor de Docker. La forma conveniente de trabajar con el clúster es usar la herramienta de línea de comandos Knative.

La CLI de Knative ofrece una interfaz fácil y rápida para crear sus recursos. Ayuda en tareas complejas como la división del tráfico y el escalado automático. La forma conveniente es descargar el binario compatible desde la página de GitHub.

Instalación

Una vez que tengamos todos los requisitos previos, podemos proceder a instalar los componentes. Para el entorno de desarrollo, hay un complemento de inicio rápido. El complemento ayuda a instalar un clúster Knative local utilizando el cliente Knative. Puede descargar el complemento de inicio rápido desde la página de lanzamiento oficial.

Conclusión: el futuro de Knative

Knative ha reemplazado la computación sin servidor al proporcionar escalado automático de aplicaciones. Tiene un impacto significativo en el sistema interoperable y modular.

En el futuro, se espera que Knative cubra las deficiencias actuales y se convierta en una de las tecnologías más eficientes para ejecutar la arquitectura sin servidor.

La tecnología Knative es más influyente para los desarrolladores al observar sus beneficios sobre las alternativas sin servidor. Knative lo ayudará a ahorrar mucho tiempo al reemplazar la necesidad de construir y mantener las extensiones de Kubernetes. Los desarrolladores están muy contentos con la tecnología de Knative, ya que es fácil de usar y una gran alternativa a las soluciones sin servidor.

Entonces, si desea maximizar el poder del entorno de Kubernetes en sus flujos de trabajo en la nube, adopte la tecnología Knative y sea testigo de los beneficios usted mismo.