En colaboración con: Martín Elías Quintero Osorio

Saludos amigos Kubernetes aficionados, este artículo se basa en  el capítulo #42 de la serie La Hora de Kubernetes, hoy vamos a hablar sobre Serverless en Kubernetes con Kubeless.

Introducción

Kubeless es un framework nativo de Kubernetes que te permite desplegar pequeños trozos de código (functions) sin tener que preocuparte por la infraestructura subyacente. Es importante resaltar que para cualquier lenguaje de programación debe incluir un parámetro event quien contiene toda la información respectiva de la petición y context da información sobre el entorno ejecución de la función.

¿Para qué está diseñado Kubeless?

Kubeless está diseñado para ser desplegado sobre un clúster de Kubernetes y aprovechar todas las funciones primitivas de Kubernetes. Por ejemplo, Function As A Service (FAAS) permite ejecutar código en respuesta a eventos sin la infraestructura compleja típicamente asociada con la creación y el lanzamiento de aplicaciones de microservicios. Entre las características principales tenemos: 

  • Entornos de ejecución (runtimes) variados como: Python, Golang, PHP, Ruby.
  • Utiliza un artefacto llamado Triggers para satisfacer diferentes mecanismos de interacción con las funciones. Entre ellas: CronJob, HTTP y Kafka.
  • Compatible con Serverless Framework.

Una de las más populares plataformas para ejecutar contenedores a escala es Kubernetes, una fuente abierta con muchas funciones de sistemas de orquestación que permite automáticamente completar ciclos vitales de contenedores,incluyendo desarrollo de aplicaciones y monitorear el estado de estas. A pesar de todos los beneficios, Kubernetes puede añadir un nivel adicional de complejidad, como requerir dedicación de recursos DevOp para mantener el grupo saludable y asegurar que este escale.

Hasta hace poco, han habido muchos intentos para traer aplicaciones serverless a Kubernetes, pero la mayoría de los Frameworks han sido enfocados en desplegar funciones serverless (Functions as a Service) que existen en grupos de Kubernetes, en lugar de provisionar un servicio de nube que provea automáticamente nodos de trabajo en Kubernetes (data plane) para correr un contenedor serverless.

https://betterprogramming.pub/serverless-kubernetes-cluster-on-aws-with-eks-on-fargate-a7545cf179be

La arquitectura de servidores permite a los desarrolladores enfocarse más en los negocios de expansión e innovación, sin preocuparse acerca de compra de servidor, mantenimiento de Hardware, topología de red y cambio de tamaño de recursos.

https://alibaba-cloud.medium.com/kubeless-a-deep-dive-into-serverless-kubernetes-frameworks-1-fe3e581a27ec

Demo

En el siguiente vídeo tenemos preparado los conceptos y el demo de despliegue que te permitirá conocer aún más sobre Serverless en Kubernetes con Kubeless.

Conclusiones

El éxito de Kubernetes en orquestación de contenedores es debido a la reputación de Google y el trabajo fuerte de Cloud Native Computing Foundation (CNCF). En adición, estos son los respaldos de la experiencia de Google Borg y las mejoras en la programación de recursos distribuidos a gran escala y O&M automatizado.

  • API declarativas: Kubernetes usa API declarativas. Esto significa que los desarrolladores pueden centrarse en sus aplicaciones en lugar de los detalles de ejecución del sistema. Por ejemplo, diferentes tipos de recursos como desarrollo, conjunto con estado y trabajo abstracto con diferentes tipos de cargas de trabajo. El nivel de implementación activada basada en API declarativas proporciona una implementación de sistema distribuido más robusta para Kubernetes que la activada por el borde.
  • Arquitectura escalable: todos los componentes de Kubernetes se implementan e interactúan con cada función de API abiertas y coherentes. Los desarrolladores externos proporcionan implementaciones extendidas específicas del campo a través de la Definición de recursos personalizados (CRD) o el Operador, el cual mejora en gran medida las capacidades de Kubernetes.
  • Portabilidad: con varias abstracciones como Service Load Balancer (SLB), Ingress, Container Network Interface (CNI) y Container Storage Interface (CSI), Kubernetes protege las aplicaciones comerciales de las diferencias de implementación de la infraestructura y permite la migración flexible de datos.

https://alibaba-cloud.medium.com/from-serverless-containers-to-serverless-kubernetes-d162faaa8a0

Si deseas sumergirte en el tema y obtener más información, te puedes dirigir a nuestro Canal Cuemby en Youtube, nuestra comunidad está creciendo y nuestro equipo está dispuesto a ayudarte. ¡No dudes en enviarnos un mensaje en cualquier momento con tus preguntas y nos aseguraremos de responder!