¿Cómo utilizar el módulo Serverless Manager?

Disponible desde la versión 3.2.0

Introducción

En esta guía explicaremos cómo utilizar el módulo Serverless de plataforma, para poder desplegar funciones de manera similar a la funcionalidad de los microservicios.

Recomendamos echar un vistazo a esta guía para comprender los distintos conceptos que implica esta funcionalidad.

Aplicaciones

Listado

Si nos dirigimos dentro del menú de Desarrollo a Mis aplicaciones Serverless/ Gestión de aplicaciones Serverless (dependiendo del role que tengamos), iremos a un listado donde se mostrarán todas nuestras aplicaciones creadas.

Para cada función se mostraran datos en la tabla como: propietario, repositorio de Git, nº de funciones en la aplicación…

Creación

Para crear una nueva aplicación, tendremos que darle dentro del listado al icono del ‘+'.

A la hora de crear una nueva aplicaciones, se nos pedirán las credenciales de Git (GitHub o GitLab), y se nos preguntará si queremos crear un proyecto nuevo asociado a dicha aplicación, en caso negativo tendremos que especificar también la URL del repositorio Git existente.

Este repositorio Git creado o ya existente, será el repositorio de trabajo donde desarrollaremos las funciones de la aplicación.

NOTA: próximamente se incorporará una funcionalidad que permitirá crear las aplicaciones con varios arquetipos a modo de ejemplo sobre los que empezar a desarrollar las funciones.

Modificación

En la pantalla de modificación de aplicación, accesible desde el listado a través del icono del lápiz, podremos únicamente modificar la información relativa al nombre y la configuración de Git.

Borrado

La aplicación podrá ser borrada tanto desde el listado como desde las páginas de edición y vista.

Lo único que hay que tener en cuenta, es que aunque se borre tanto la aplicación como sus funciones, el repositorio de Git no se borrará.

 

Vista

Desde la página de vista podremos ver tanto la información general de la aplicación como el listado de funciones de la misma.

Información general:

Aquí encontraremos la información relativa al Git, así como las variables de entorno definidas en la aplicación.

Estas variables de entorno serán accesibles desde todas y cada una de las funciones de la aplicación, no obstante podrán ser sobrescritas a nivel de función.

Listado de funciones:

En la segunda pestaña de la vista, podremos ver un listado de funciones con datos relevantes como: versión de la función, memoria asignada, nombre, ruta relativa dentro del proyecto Git, endpoints de invocación

Además desde este listado, podremos crear, editar, borrar y desplegar funciones.

 

Funciones

Creación

Desde la vista de una aplicación podemos crear nuevas funciones.

A la hora de crear una función se nos pedirá únicamente el nombre de la función y el path relativo dentro del repositorio Git. En el momento de la creación no es necesario que exista el código asociado a la función dentro del repositorio, pero sí tendrá que existir a la hora de desplegarla.

Estructura de código de una función

La estructura de la función vendrá dada por el lenguaje de programación que se vaya a utilizar, podrá ser un proyecto maven, java, go, python… Aquí hay una lista de los lenguajes soportados.

Sea cual sea el lenguaje, será necesario incluir en el directorio raíz de la función un fichero ‘func.yaml’, donde vendrá la información necesaria para la compilación, despliegue y ejecución de la función.

A continuación se muestra un ejemplo de estructura con una función maven y otra python.

Para completar el fichero func.yaml, recomendamos ver este documento dónde se explica cada propiedad.

Func.yaml de una función java

 

schema_version: 20180708 name: ontology version: 0.0.26 runtime: java11 build_image: fnproject/fn-java-fdk-build:jdk11-1.0.124 run_image: fnproject/fn-java-fdk:jre11-1.0.124 cmd: com.minsait.onesait.OntologyCalculationFn::handleRequest config: API_KEY: 26104876616f40908e3643ed1f6357d1 GRAYLOG_HOST: log-centralizer GRAYLOG_PORT: "12201" triggers: - name: endpoint type: http source: /calculate

 

Func.yaml de una función python

 

schema_version: 20180708 name: pythonfn version: 0.0.1 runtime: python entrypoint: /python/bin/fdk /function/func.py handler memory: 256 config: API_KEY: 26104876616f40908e3643ed1f6357d1 triggers: - name: endpoint type: http source: /pythonfn

 

A continuación dejamos un zip con 3 ejemplos de funciones.

 

Modificación

En la pantalla de modificación de una función podremos actualizar tanto el nombre de nuestra función como la ruta relativa dentro del repositorio.

Borrado

Podremos borrar una función (pero no el código del repositorio) desde el listado de funciones de una aplicación o desde la pantalla de modificación.

Despliegue

Cuando tengamos lista nuestra función, podremos desplegarla desde el icono del cohete, en el listado de funciones.

Este podrá tardar hasta 1 minuto. Una vez finalizado el despliegue, se recargará la página y veremos como se incrementa la versión de la función desplegada (quedará reflejado en el func.yaml del repositorio con un commit).

 

Invocación HTTP

Una vez desplegada la función, podremos invocarla via HTTP para ejecutarla/probarla. Existen dos tipos de endpoints invocables: auto-generados y triggers HTTP.

Los primeros los genera automáticamente el gestor de fn, y los segundos se definen desde el func.yaml

Los auto-generados siempre tienen la forma de /fn/invoke/{UUID} , y serán siempre peticiones POST.

Los triggers pueden ser invocados con el verbo GET o POST, en función de si nuestra función necesita recibir algún payload o no.

 



(c) 2020 Indra Soluciones Tecnologías de la Información, S.L.U.