概念术语
- 1: Function
- 2: Builder
- 3: Serving
- 4: EventSource
- 5: EventBus(ClusterEventBus)
- 6: Trigger
1 - Function
Function 是直接由使用者定义、控制的资源,它是使用者对其业务应用的一段描述,即用何种原料(源代码)加工成何种制品(应用镜像),最终又将以何种方式运作(工作负载、运行时)。
在 OpenFunction 中,Function 资源会根据配置有序控制 Builder 和 Serving 资源的协调过程,进而实现使用者函数的生命周期管理。
参考
Function 是一种 CustomResourceDefinitions(CRD)。你可以访问 Function CRD Spec 了解更多信息。
2 - Builder
Builder 定义了 OpenFunction 中由源代码生成应用镜像的构建工作。
当前,OpenFunction Builder 使用 Shipwright 和 Cloud Native Buildpacks 来构建应用镜像。它通过 Shipwright 控制应用镜像的构建过程,包括通过 Cloud Native Buildpacks 获取代码、生成镜像制品和发布镜像。
支持的构建器
Shipwright
Shipwright 是一个可扩展的镜像流水线框架,用于在 Kubernetes 上构建容器镜像。
Cloud Native Buildpacks
Cloud Native Buildpacks 是一个 OCI 标准的镜像构建框架,无需 Dockerfile 即可根据自定义步骤(buildpack)将源代码转化为容器镜像制品。
参考
Builder 是一种 CustomResourceDefinitions(CRD)。你可以访问 Builder CRD Spec 了解更多信息。
3 - Serving
Serving 的目标是以高度弹性的方式(动态伸缩:0 <-> N)为使用者运行应用负载。
当前,OpenFunction Serving 支持两种负载运行时:Knative 和 OpenFuncAsync。设置其中一种负载运行时之后,Serving 才能正常工作。
Knative
Knative Serving 建立在 Kubernetes 之上,支持部署和运行 Serverless 应用。Knative Serving 很容易上手,并可延伸支持复杂的应用场景。
OpenFuncAsync
OpenFuncAsync 是一个事件驱动的负载运行时。它基于 KEDA 与 Dapr 实现。OpenFuncAsync 负载的函数可以由各类事件、消息触发,如 MQ、cronjob、DB 事件等。在 Kubernetes 集群中,OpenFuncAsync 负载的函数可以通过无状态工作负载或任务的形式运行。
参考
Serving 是一种 CustomResourceDefinitions(CRD)。你可以访问 Serving CRD Spec 了解更多信息。
4 - EventSource
EventSource 代表一个事件的生产者,如 Kafka 服务器、对象存储服务,也可以是一个应用。它包含这些事件生产者的定义,以便于从这些生产者处获取事件。它同时定义了这些事件将去往何处。
支持的事件源
参考
EventSource 是一种 CustomResourceDefinitions(CRD)。你可以访问 EventSource CRD Spec 了解更多信息。
5 - EventBus(ClusterEventBus)
EventBus 负责聚合事件并持久化事件。
EventBus 包含对事件总线后端服务的描述(通常是一个消息服务器,如 NATS Streaming、Kafka 等),然后为 EventSource 和 Trigger 提供这些配置(让它们可以从事件总线中获取事件)。
EventBus 默认负责 namespace scope 的事件总线适配,同时我们也为 cluster scope 提供了一个事件总线适配器 ClusterEventBus ,它将在命名空间中不存在 EventBus 时生效。
支持的事件总线服务器
参考
EventBus 是一种 CustomResourceDefinitions(CRD)。你可以访问 EventBus CRD Spec 了解更多信息。
6 - Trigger
Trigger 是对事件目的的抽象,即在收到一个消息时需要做什么。
Trigger 包含了使用者对事件目的的描述,它指导 Trigger 应该从哪些事件源获取事件,随后根据给定的条件决定是否触发目标函数。
参考
Trigger 是一种 CustomResourceDefinitions(CRD)。你可以访问 Trigger CRD Spec 了解更多信息。