A New Serverless Plugin: Kubeless

We have been hard at work developing a kubeless plugin for the serverless framework and I want to give you a glimpse of what is at HEAD right now.

But first couple thoughts: I was recently at the first JeffConf a community led one day conference to focus on the users of serverless and get past the name. Two things struck me:

1The user base! Serverless in general has a ton of users. And not just beginners, there were some super advanced technical discussions around real use cases during the open space. Things like scaling lambdas for apps with unpredictable bursts of 150k requests/sec… Users are mostly on AWS lambda but no doubt that other clouds will pick up.

2The serverless framework from serverless.com is by the far the main tool to deploy functions. Wirtten in Node.js, and with support for Lambda, Azure Functions, Google Cloud Functions and Apache Openwhisk, it is the leading serverless abstraction for deployment of functions.

So for Bitnami to spend some energy on one new application paradigm makes total sense. Piggy backing on our Kubernetes work and building kubeless on top of Kubernetes is the logical step for us.

Kubeless

Yes, Kubeless is Kubernetes Native. That means that you need a Kubernetes cluster to run Kubeless, you cannot run it without. So check that you have a Kubernetes endpoint:

$ kubectl version$ kubectl get nodes

Now download the `kubeless` CLI (e.g on OSX with brew), create a k8s namespace to put kubeless in and deploy it using the released manifest:

Note the support for multiple language runtimes and deploying functions in different kubernetes namespace. Support for function memory allocation, environment variable and labels is coming super shortly. By default a function is HTTP triggered but we also support event triggers.

Deploy a function

This is the standard serverless usage. Multiple functions can be defined in a service. Removing a function is also supported (thankfully :))

Invoke a function

Logs and Info

In the information about a function you can Kubernetes specific metadata, like the Self Link and port definitions. Each function is exposed via a k8s service. Ingress support for functions that need to be externally exposed is currently in a PR under on-going review.

The coverage is almost complete. What we need to add now is better metadata in kubeless itself so that a function deployed on AWS Lambda or any other provider can be also deployed in Kubeless (granted a few function interfaces issues).

But the door is open now. You can use serverless with kubeless . And that means you can have a serverless solution on-premise that mimics what you find in a public cloud.