DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’» is a community of 963,274 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in

Serverless functions con Kubernetes

Actualmente hay mucho movimiento alrededor de los servicios serverless, por definiciΓ³n se trata de un servicio en el que lo primordial es el cΓ³digo y donde la infraestructura que corre por debajo se sobreentiende suficiente, de modo que un desarrollador sin conocimientos de sistemas puede por si solo desarrollar una aplicaciΓ³n y todos sus flujos, un buen articulo donde profundiza mΓ‘s en este concepto es el de sPamRucinque aquΓ­.

La teorΓ­a del serverless o FaaS estΓ‘ muy bien, pero que pasa si queremos controlar un poco la infraestructura que hay por debajo, o si simplemente queremos tener nuestro propio servicio serverless, la respuesta es clara: es un infierno! la cantidad de cosas que hay que automatizar es totalmente inviable para un equipo pequeΓ±o o incluso de una sola persona. Por suerte existen proyectos como fission.io con el cual podemos tener nuestro propio servicio serverless sobre cualquier clΓΊster manejado con Kubernetes.

Hay que tener en cuenta que a fecha de escribir este artΓ­culo se pode una versiΓ³n mΓ­nima de Kubernetes 1.6 para poder usar fission

Antes de empezar hay unos requisitos que hay que tener para poder instalar fission.io, ademΓ‘s de la versiΓ³n mΓ­nima de Kubernetes, hay que tener instalada la herramienta kubectl, puedes consultar como instalarlo en β€œHerramientas bΓ‘sicas para administrar Kubernetes desde el terminal”, tambiΓ©n se necesita tener instalado helm, la forma mΓ‘s sencilla de instalar helm es siguiendo las instrucciones aquΓ­. Pero los mΓ‘s impacientes tansolo han de abrir la consola Cloud shell en la cuenta de Google Cloud en la vayΓ‘is a crear vuestro clΓΊster y ejecutar lo siguiente:

$ curl -LO [https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz](https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz)
$ tar xzf helm-v2.7.0-linux-amd64.tar.gz
$ sudo mv linux-amd64/helm /usr/local/bin/

Tras esto lo que necesitaremos es un clΓΊster con kubernetes funcional y listo para instalar fission, para ello puedes seguir los pasos descritos en β€œKubernetes en 5 min con GKE”, con esto ya tenemos un clΓΊster operativo sobre Google Cloud Platform.

Antes de poder ejecutar helm necesitamos hacer un pequeΓ±o fix en la consola de Cloud Shell ya que helm no es capaz de funcionar en esta consola con la instalaciΓ³n tΓ­pica, en cambio si que funciona en un pc. Por lo tanto necesitamos ejecutar las siguientes lineas antes de poder usar helm:

$ kubectl create serviceaccount --namespace kube-system tiller
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
$ kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' 
$ helm init --service-account tiller --upgrade

En caso de tener todos los requisitos comentados anteriormente basta con ejecutar el siguiente comando para instalar fission usando helm:

$ helm install --namespace fission [https://github.com/fission/fission/releases/download/0.7.1/fission-all-0.7.1.tgz](https://github.com/fission/fission/releases/download/0.7.1/fission-all-0.7.1.tgz)

Una vez ejecutado el comando anterior podremos ver una serie de secciones en las cuales se nos muestra el proceso de instalaciΓ³n que ha realizado helm

Los siguientes pasos que nos propone la propia instalaciΓ³n es instalar el cliente de fission, de la misma forma que hemos instalado helm anteriormente podemos instalar el clietne de fission ejecutando las siguientes lineas:

$ curl -Lo fission [https://github.com/fission/fission/releases/download/0.7.1/fission-cli-linux](https://github.com/fission/fission/releases/download/0.7.1/fission-cli-linux)
$ chmod +x fission
$ sudo mv fission /usr/local/bin/

Una vez instalado el cliente de fission podemos ejecutar nuestro primera aplicaciΓ³n, que por supuesto va a ser β€œHello, World!”, para ello podemos ejecutar las siguientes lineas:

# Create an environment
$ fission env create --name nodejs --image fission/node-env# Get a hello world
$ curl [https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js](https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js) \> hello.js# Register this function with Fission
$ fission function create --name hello --env nodejs --code hello.js# Run this function 
$ fission function test --name hello

Tan simple como esto y ya tenemos nuestro propio servicio serverless sobre Kubernetes listo para desarrollar.

Top comments (0)

About Real-time

Join DEV and MongoDB to build a front-end application using MongoDB Atlas. Change streams to display live updates as your database changes for your entry in the DEV x MongoDB Atlas Hackathon 2022.

β†’ Join the Hackathon