Kubernetes y serverless: conceptos básicos

5min

Cuando aplicamos un enfoque serverless en Kubernetes reducimos la configuración repetitiva de forma independiente sobre el proveedor cloud. Es un paso más para la automatización continua del trabajo manual. En el artículo de hoy hablaremos de dos herramientas que permiten implementar serverless sobre Kubernetes de manera sencilla, despreocupándonos de la infraestructura. Se trata de Kubeless y Knative.

Pero antes de entrar en materia, aclaremos los conceptos básicos:

  • Kubernetes es un orquestador de contenedores que ayuda a mitigar los retos y problemas inherentes a los contenedores. Esto es, entre otros, la escalabilidad y la disponibilidad.  Soporta entornos de múltiples nubes, con lo cual se puede implementar el mismo entorno Kubernetes en diferentes nubes públicas, nubes privadas e incluso en bare-metal.
  • Serverless, por su parte, se refiere a un modelo de ejecución de cloud computing en el que el proveedor ejecuta el servidor y administra de manera dinámica la asignación de recursos de la máquina. Con ello se puede, por ejemplo, simplificar el proceso de despliegue de código en producción.

Y ahora ya sí, centrémonos en Kubeless y Knative.

Índice

Kubeless

Kubeless es un framework serverless de código abierto que se ejecuta sobre Kubernetes y que permite desplegar código sin tener que preocuparse por la infraestructura. Kubeless utiliza los recursos de Kubernetes para proporcionar autoescalado, enrutamiento, supervisión y resolución de problemas.

Kubeless es una extensión de Kubernetes y, por tanto, es nativo, ejecutándose sobre el flujo de Kubernetes. Para hacer posible esta implementación, Kubeless utiliza un mecanismo conocido como Custom Resource Definitions (CRD).

En líneas generales, hablamos de la adición de un controlador adicional dentro de un espacio de nombres en Kubernetes. Este controlador se encargará de desplegar funciones como recursos nativos en el clúster de Kubernetes. Básicamente lo que hace Kubeless para crear el CRD es:

  • Definir un manifiesto (en formato yaml) con todos los ajustes del controlador
  • Usando kubectl create, ejecuta el archivo de manifiesto
  • Al hacerlo, la API de Kubernetes devuelve un endpoint para el consumo del servicio creado

Los beneficios de utilizar Kubeless son tres, principalmente:

  • Gestión operativa más sencilla al proporcionar una separación entre el servicio de infraestructura y la aplicación que se ejecuta sobre ella.
  • Acelera la innovación, ya que los problemas «de ingeniería de sistemas» se quedan en la plataforma. Un menor tiempo para las operaciones se traduce en una aplicación fluida de las metodologías DevOps y Agile.
  • Reducción de los costes operativos. De la misma manera que IaaS y PaaS, la reducción de los costes de infraestructura y de recursos humanos es la principal ventaja de la lógica de la arquitectura sin servidor. En la solución Serverless, se paga para gestionar los servidores, las bases de datos y la lógica de la aplicación.

Knative

Knative es una plataforma basada en Kubernetes concebida para desplegar y gestionar cargas de trabajo serverless, ya sea en las propias instalaciones, en la nube o en un centro de datos de terceros.

Esta herramienta elimina, además, las tareas relacionadas con el aprovisionamiento y la gestión de servidores, permitiendo a los desarrolladores centrarse únicamente en el desarrollo de aplicaciones.

Al igual que Kubeless, Knative es nativo en Kubernetes. Con Knative, el proveedor de servicios cloud es irrelevante para su operación, como tampoco es relevante si el despliegue es en las instalaciones, o si se trata de alguna combinación de nube, la que sea. Si hay Kubernetes disponibles, los servicios Knative van a funcionar.

Knative proporciona una serie de componentes middleware que se pueden utilizar para ampliar Kubernetes. Entre sus principales ventajas, destacan:

  • Escala a cero. Si no hay tráfico, no se ejecutará nada. Esto significa que no hay uso de la memoria y un menor uso de la CPU, por lo que se ahorra en dinero y en recursos.
  • Escala desde cero. Al contrario del caso anterior, si se da un pico de tráfico por cualquier razón, los recursos se escalarán automáticamente.
  • Configuraciones y revisiones, por ejemplo, para facilitar los despliegues blue-green.
  • Construcción de imágenes en el clúster: Tekton es un potente marco basado en Knative para crear sistemas de integración y entrega continuas (CI/CD) que pueden utilizarse para desplegar en cualquier clúster de Kubernetes a través de múltiples proveedores de nube híbrida.
  • Knative permite dividir el tráfico entre las revisiones, y elegir cuánto tráfico se envía a cada una.
  • Sistema de eventos: Disparo de cargas de trabajo en eventos específicos.

Kubernetes es un sistema complejo y requiere cierto nivel de conocimientos y expertise. Por eso, hemos creado Managed Kubernetes, nuestra solución de infraestructura gestionada de contenedores. Con ella es sencillo desplegar un proyecto Kubernetes en unos pocos clics y, como en Arsys nos encargamos de la gestión, los usuarios pueden concentrarse en sus desarrollos y olvidarse de la necesidad de atender la infraestructura subyacente.

Fernando Fuentes

Productos relacionados: