函数定义

函数

FunctionBuildServing的控制平面,也是用户使用OpenFunction的接口。用户无需单独创建BuildServing,因为Function是定义函数的BuildServing的唯一地方。

一旦创建了函数,它将控制BuildServing的生命周期,无需用户干预:

  • 如果在函数中定义了Build,则一旦部署函数,将创建一个builder自定义资源来构建函数的容器镜像。

  • 如果在函数中定义了Serving,则将创建一个serving自定义资源来控制函数的服务和自动缩放。

  • BuildServing可以一起定义,这意味着首先将构建函数镜像,然后将其用于服务。

  • 可以定义Build而不定义Serving,在这种情况下,函数仅用于构建镜像。

  • 可以定义Serving而不定义Build,函数将使用先前构建的函数镜像进行服务。

构建

OpenFunction使用ShipwrightCloud Native Buildpacks将函数源代码构建成容器镜像。

一旦创建了包含Build规范的函数,就会创建一个builder自定义资源,该资源将使用Shipwright管理构建工具和策略。然后,Shipwright将使用Tekton控制构建容器镜像的过程,包括获取源代码、生成镜像工件和发布镜像。

服务

一旦创建了包含Serving规范的函数,就会创建一个Serving自定义资源来控制函数的服务阶段。目前,OpenFunction Serving支持两种运行时:Knative同步运行时和OpenFunction异步运行时。

同步运行时

对于同步函数,OpenFunction目前支持使用 Knative Serving 和 KEDA http-addon 作为运行时。

异步运行时

OpenFunction的异步运行时是一个基于KEDADapr实现的事件驱动运行时。异步函数可以由各种事件类型触发,如消息队列、cronjob和MQTT等。