Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

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 /wiki/spaces/PT/pages/1701773313.

Recomendamos echar un vistazo a esta guía para comprender los diferentes conceptos involucrados en esta funcionalidad.

Conceptos

Se ha integrado un módulo nuevo en la plataforma que permite desarrollar componentes en forma de Funciones, utilizando una arquitectura serverless. Este módulo está basado en el proyecto Open Source fn project.

Siguiendo el esquema que propone fn, distinguimos dos conceptos a tener en cuenta: aplicaciones y funciones.

Las aplicaciones engloban un conjunto de funciones, y cada usuario de plataforma puede crearse tantas aplicaciones como necesite. Estás aplicaciones tendrán asociado un repositorio de Git de trabajo, donde residirá el código de todas las funciones que pertenezcan a dichas aplicaciones.

Así mismo, dentro de cada aplicación se podrán crear N funciones. A efectos prácticos, una función será un proyecto de código (Java/Maven, Python,…) con una estructura que detallaremos más adelante. Cada función será responsable de ejecutar una funcionalidad específica.

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 cómo 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.

  • No labels