Welcome to OpenFunction
Documentation GitHub

OpenFunction is a cloud-native open-source FaaS (Function as a Service) platform aiming to let you focus on your business logic without having to maintain the underlying runtime environment and infrastructure. You can concentrate on developing business-related source code in the form of functions.

OpenFunction Architecture

OpenFunction Features

  • Cloud-native and open-source

  • Automatically build code into OCI-compliant images

  • Automatically deploy application with dynamic scaling capabilities

  • Provide events framework to make functions event-driven

  • Provide function version control and ingress traffic management capabilities

Custom Resource Definitions

The core functionality of OpenFunction enables you to develop, run, and manage business applications with functions acting as execution units. Thus, OpenFunction implements the following custom resource definitions.

Function

Function is a resource that you can define and manage according to your needs. It describes your applications, including what raw materials (source code) are used to make an artifact (application image) and the way it works (workload, runtime).

In OpenFunction, the Function resource controls the coordination between Builder and Serving in an orderly manner based on your configurations to implement the lifecycle management of your functions.

See Function for more information.

Builder

Builder defines the build process in OpenFunction for generating application images from source code.

Currently, OpenFunction Builder uses Shipwright and Cloud Native Buildpacks to build application images. It uses Shipwright to control the process of building application images, including acquiring code, generating image artifacts, and publishing images through Cloud Native Buildpacks.

See Builder for more information.

Serving

Serving aims to run applications in a highly elastic way (dynamic scaling: 0 <-> N).

Currently, OpenFunction Serving supports two kinds of workload runtimes: Knative and OpenFuncAsync. You need to configure a runtime to ensure that Serving works properly.

See Serving for more information.

After you install OpenFunction,

refer to OpenFunction samples to run a sample function.

Contributions Welcome!

New contributors are always welcome!

Find us on GitHub and create a pull request.