kubeless is a Kubernetes-native serverless framework that lets you deploy small bits of code without having to worry about the underlying infrastructure plumbing. It leverages Kubernetes resources to provide auto-scaling, API routing, monitoring, troubleshooting, and more.
Before we move on to the tutorial, Little bit of intro on Serverless, it allows developers to build and run applications and services without thinking about the servers actually running the code. Serverless services, or FaaS (Functions-as-a-Service) providers, instrument this concept by allowing developers to upload the code while taking care of deploying running and scaling it. AWS Lambda was the first one in the market to offer this kind.
Popular cloud providers that support Function As A Service (FaaS) as follows:
Kubeless aims to be an open-source FaaS solution to clone the functionalities of AWS Lambda/Google Cloud Functions.
For more details on Serverless & comparison of the platforms, look up here.
Quick Snapshot
Serverless services or FaaS lets you run code without provisioning or managing servers (but still servers are needed). You pay only for the compute time you consume there is no charge when your code is not running. You can run code for virtually any type of application or backend service all with zero administration. Just upload your code and FaaS provider would take care of everything required to run and scale your code with high availability. You can set up your code to automatically trigger other services or call it directly from any web or mobile app.
With Kubeless you can deploy functions without the need to build containers. These functions can be called via regular HTTP(S) calls or triggered by events submitted to message brokers like Kafka.
Currently, Kubeless Functions have three possible types:
Step #1: Create a kubeless namespace where you will install the controller.
Step #2: Install the latest stable version with a kubectl create command
curl -sL https://github.com/kubeless/kubeless/releases/download/v0.3.0/kubeless-rbac-v0.3.0.yaml | kubectl create -f -
You can see that few pods are being started in the kubeless namespace. The controller will watch for function objects to be created and also two Pods to enabled PubSub function (Kafka & Zoo pods).
Step #3: Check the status of the pods using get pods
command
Once the controller is in ‘Running’ state, we can start deploying functions.
To deploy a function, we are going to use the kubeless CLI. For the function that we are going to deploy, we have to specify a run time which language the function is in.
Also, we need to specify the file that contains the function, how the function will get triggered (here we are using an HTTP trigger), and finally specify the function name as a handler.
kubeless function deploy toy --runtime python2.7 --handler toy.handler --from-file toy.py --trigger-http
Congrats! Now we have created a new function.
We can check the list of functions with the kubeless
CLI:
kubeless function ls
Kubeless would have automatically created a Kubernetes deployment and service. You can check that a Pod containing your function is running:
To test the function, call the function using the kubeless CLI command:
If the proxy is configured, we can call it using curl
command
curl --data '{"hello":"world"}' localhost:8080/api/v1/proxy/namespaces/default/services/toy:8080/ --header "Content-Type:application/json"
For viewing the logs of the function, use logs command
kubeless function logs toy
To get the description of the function, use describe
command like below
kubeless function describe toy
To update a function use the kubeless function update
command. For example, to replace the toy function which we have created with the method from the toy-udpate.py
script, do:
kubeless function update toy --from-file toy-update.py
As clean up activity, we can also remove the functions and the deployments we have created.
kubeless function delete toy
The deployment and Kubernetes services will be removed automatically. You can use get deployments, services to check the same.
Congrats! Today we have learned how to create, update, and call the function via HTTP.
Like this post? Don’t forget to share it!
In today's digital-first world, businesses must adopt effective strategies to stay competitive. Social media marketing…
62% of UX designers now use AI to enhance their workflows. Artificial intelligence (AI) rapidly…
The integration of artificial intelligence into graphic design through tools like Adobe Photoshop can save…
The cryptocurrency trading world has grown significantly in recent years, with automation playing a key…
The non-fungible token (NFT) market has witnessed explosive growth over the past few years, transforming…
There are few things as valuable to a business as well-designed software. Organizations today rely…
This website uses cookies.