OpenFunction 是一个云原生、开源的 FaaS(函数即服务)框架,旨在让开发人员专注于他们的开发意图,而不必关心底层运行环境和基础设施。用户只需提交一段代码,就可以生成事件驱动的、动态伸缩的 Serverless 工作负载。
OpenFunction 特性:
-
云原生,开源
-
自动构建代码为 OCI 标准镜像
-
自动部署具有动态伸缩能力的应用程序
-
提供事件框架,使函数具备事件驱动能力
-
提供函数版本控制和入口流量管理功能
OpenFunction 的核心功能是使用户能够开发、运行和管理以代码函数为执行单元的业务应用程序。为此,OpenFunction 实现了以下的自定义资源定义(CRD):
- Function:Function 是直接由使用者定义、控制的资源,它是使用者对其业务应用的一段描述,即用何种原料(源代码)加工成何种制品(应用镜像),最终又将以何种方式运作(工作负载、运行时)。在 OpenFunction 中,Function 资源会根据配置有序控制 Builder 和 Serving 资源的协调过程,进而实现使用者函数的生命周期管理。
- Builder:Builder 定义了 OpenFunction 中由源代码生成应用镜像的构建工作。当前,OpenFunction Builder 使用 Shipwright 和 Cloud Native Buildpacks 来构建应用镜像。它通过 Shipwright 控制应用镜像的构建过程,包括通过 Cloud Native Buildpacks 获取代码、生成镜像制品和发布镜像。
- Serving:Serving 的目标是以高度弹性的方式(动态伸缩:0 <-> N)为使用者运行应用负载。当前,OpenFunction Serving 支持两种负载运行时:Knative 和 OpenFuncAsync。设置其中一种负载运行时之后,Serving 才能正常工作。