Kubeless

Kubeless is an open source effort. Mostly maintained by engineers at Bitnami, it was first showcased at the Kubernetes community meeting in December 2016.

Kubeless is a Kubernetes native serverless solution. It let’s your go from source to deployment extremely quickly without having to care about the infrastructure plumbing underneath and without having to build containers. It extends the Kubernetes API to provide an AWS Lambda clone on-prem using Kubernetes primitives. Kubeless offers HTTP and event based triggers and supports Python, Node.js and Ruby functions.

Kubeless uses Prometheus for monitoring and fluentd for logging. A default event-based broker can be used to publish events that trigger functions. The CLI mimics the Google Cloud Functions and AWS Lambda CLI.

How It Works

Kubeless is a Kubernetes API server extension which defines a function primitive in a Kubernetes cluster. When you deploy a kubeless function, a controller injects the function source code into a Kubernetes pod. For HTTP triggers, the functions are exposed via Kubernetes services and if the user decides they can also be exposed via an ingress resource (which provides an API gateway). Functions can also be triggered by events in a Kafka broker topic.

All language runtimes are instrumented for metrics collection which allows kubeless to leverage the Kubernetes horizontal pod autoscaler (HPA) primitives.

[insert diagram to showcase usage]

Language Support

Supports Node.js, Python and Ruby.

Security

Kubeless is a Kubernetes API extension. To deploy functions, users need to have access to a Kubernetes cluster and have enough privileges in a given Kubernetes namespace. Kubernetes RBAC is the main security mechanism. Functions can be exposed to the public internet using Kubernetes ingress rules which can be secured via TLS.

Tooling

Most of the kubeless tooling is developed in the kubeless GitHub organization, except the serverless plugin which is hosted upstream in the serverless GitHub organization.

Monitoring, Logging & Alerting

Kubeless monitoring relies on Prometheus. The language runtimes are instrumented to automatically collect metrics for each function. Prometheus will scrape those metrics and display them in the default Prometheus dashboard or a Grafana dashboard.

Logging is available through fluentd. It stores logs in elastic and displays them through Kibana.

Alerting is configurable using the Prometheus Alert Manager.

Debugging & Diagnostics

Standard Kubernetes debugging and troubleshooting mechanisms.

Pricing

Kubeless is open-source and free, there is no commercial version.

Limitations

Memory limits can be set via the CLI or the serverless plugin function definition.

Resources


Credits: Nguyen Anh-Tu (ng.tuna@gmail.com) ***