1、CNCF Application Definition & Image Build 概览
CNCF Application Definition & Image Build 涵盖应用定义、开发工具、调试、环境配置、镜像构建、发布等方方面面的内容。截止2022.10.01 共 52 个项目,其中:
-
- CNCF 项目:16 个
- CNCF 毕业项目: 1个,Helm
- CNCF 孵化项目:4个,Backstage、Buildpacks、KubeVirt、Operator Framework
- CNCF 沙箱项目:11个,Artifact Hub、Devfile、Konveyor、Krator、KubeVela、KUDO、Nocalhost、Porter、sealer、Serverless Workflow、Telepresence
- CNCF 项目:16 个
-
- CNCF 成员产品/项目:37 个,包括 Open Application Model(OAM)
- 非 CNCF 成员产品/项目:10 个
2、Open Application Model(OAM)
2.1、OAM是什么
OAM,“An open model for defining cloud native apps. ”,一个定义云原生应用的开放模型。
"Developers think in terms of application architecture, not of infrastructure."
Open Application Model (OAM) is a set of standard yet higher level abstractions for modeling cloud native applications on top of today's hybrid and multi-cloud environments.
OAM 是为在混合和多云环境之上用于建模原生应用的一组标准的、高级的抽象。
Focused on application rather than container or orchestrator, Open Application Model brings modular, extensible, and portable design for defining application deployment with higher level API. This is the key to enable simple, consistent yet robust application delivery across hybrid environments including Kubernetes, cloud, or even IoT devices.
专注应用而非容器或编排器,OAM带来模块化、可扩展性和可移植性的设计,使用高级的API定义应用部署。这是实现跨混合环境(包括Kubernetes、云,甚至物联网设备)的简单、一致、健壮的应用交付的关键。
Purpose and Goals:
The goal of Open Application Model is to define a standard, infrastructure-agnostic way to describe application deployment across hybrid environments, clouds or even edge devices.
OAM 的目标是定义一种标准的、与基础设施无关的方法,以描述跨混合环境、云甚至边缘设备的应用程序部署。
总的来说,OAM 是一种基础设施无关的、面向云原生应用建模的标准/抽象。基础设施无关意味着实现需考虑混合环境(原生Kubernetes、云/多云、边缘等等),面向应用体现在OAM对应用的组成、运维、策略、发布过程有充分的关注和清晰的定义。
2.2、OAM的核心概念
2.2.1、云原生应用的定义
A cloud native application is a collection of interrelated, but discrete components (services, tasks, workers) that, when coupled with configuration and instantiated in a suitable runtime infrastructure, together accomplish a unified functional purpose.
云原生应用是一组相互关联但又相互独立的组件(服务、任务、工作者),当与配置结合并在合适的运行时基础设施中实例化时,这些组件共同实现统一的功能目的。
OAM定义的内容(还在不停的演进):
- Components,组件,一个可运行的单元。
- Workload types,工作负载类型,表示组件实际执行的方式,由平台提供的基础设施。
- Traits,运维特征,是用附加的特定操作功能增强组件的叠加,例如扩所容、路由、流量、指标等。特征是运营商的关注点。
- Application scopes,应用范围,表示应用的边界。
- An application configuration,应用配置,配置参数和元数据,包括一组组件实例,他们的特征和他们所在的应用范围。(其实就是一个CR,里面包括了Components、Taints、Scope等)
2.2.2、OAM 在整个架构的位置
OAM在应用定义和基础设施之间的位置如下。
2.2.3、总结
应用包含了1个或多个组件,组件拥有工作负载类型(超过K8S工作负载的范畴,可以是云产品,例如数据库)、运维特征(例如route、scaling、rollout、traffic、metric等,底层可以是自动伸缩的云产品)、应用范围(包括健康范围、网络范围等)等。OAM 应用定义很重要,它让针对应用进行编排有了基础环境。
Application 定义例子:
apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: my-example-app annotations: version: v1.0.0 description: "Brief description of the application" spec: components: - name: publicweb type: web-ui properties: # properties targeting component parameters. image: example/web-ui:v1.0.2@sha256:verytrustworthyhash param_1: "enabled" # param_1 is defined on the web-ui component traits: - type: ingress # ingress trait providing a public endpoint for the publicweb component of the application. properties: # properties are defined by the trait CRD spec. This example assumes path and port. path: / port: 8080 scopes: "healthscopes.core.oam.dev": "app-health" # An application level health scope including both components. - name: backend type: company/test-backend # test-backend is referenced from other namespace properties: debug: "true" # debug is a parameter defined in the test-backend component. traits: - type: scaler # scaler trait to specify the number of replicas for the backend component properties: replicas: 4 scopes: "healthscopes.core.oam.dev": "app-health" # An application level health scope including both components. |