diff --git a/cloud-native/define-cloud-native-app.md b/cloud-native/define-cloud-native-app.md index 81b962981..63bf73403 100644 --- a/cloud-native/define-cloud-native-app.md +++ b/cloud-native/define-cloud-native-app.md @@ -12,11 +12,11 @@ OAM 的规范中定义了以下对象,它们既是 OAM 规范中的基本术语也是云原生应用的基本组成。 -- **[Workload](../spec/workload)(工作负载)**:应用程序的工作负载类型,由平台提供。 -- **[Component](../spec/component)(组件)**:定义了一个 `Workload` 的实例,并以基础设施中立的术语声明其运维特性。 -- **[Trait](../spec/trait)(特征)**:用于将运维特性分配给组件实例。 -- **[ApplicationScope](../spec/application-scope)(应用作用域)**:用于将组件分组成具有共同特性的松散耦合的应用。 -- **[ApplicationConfiguration](../spec/application-configuration)(应用配置)**:描述 `Component` 的部署、`Trait` 和 `ApplicationScope`。 +- **[Workload](./workload.md)(工作负载)**:应用程序的工作负载类型,由平台提供。 +- **[Component](./component.md)(组件)**:定义了一个 `Workload` 的实例,并以基础设施中立的术语声明其运维特性。 +- **[Trait](./trait.md)(特征)**:用于将运维特性分配给组件实例。 +- **[ApplicationScope](./application-scope.md)(应用作用域)**:用于将组件分组成具有共同特性的松散耦合的应用。 +- **[ApplicationConfiguration](./application-configuration.md)(应用配置)**:描述 `Component` 的部署、`Trait` 和 `ApplicationScope`。 OAM 规范中提供了一个使用以上对象定义云原生应用的[工作流示例](https://github.com/oam-dev/spec/blob/master/examples/workflow.md)。 diff --git a/images/oam-spec.png b/images/oam-spec.png new file mode 100644 index 000000000..84e85bfbd Binary files /dev/null and b/images/oam-spec.png differ diff --git a/usecases/crossplane.md b/usecases/crossplane.md index 2c5a35cc6..ab347c572 100644 --- a/usecases/crossplane.md +++ b/usecases/crossplane.md @@ -6,7 +6,7 @@ [Crossplane](https://crossplane.io/) 是一个开源的 Kubernetes 插件,可以使用 kubectl 配置和管理基础设施、服务和应用。它的意义在使用 Kubernetes 风格的 API 统一了云基础设施和应用程序的管理。 -该项目是由 [Upbound](https://upbound.io/) 公司于 2018 年发起,开源社区主要参与者有微软、阿里巴巴、Gitlab、红帽等。 +该项目是由 [Upbound](https://upbound.io/) 公司和 [Rook](https://rook.io) 项目的创始人于 2018 年 12 月发起,开源社区主要参与者来自微软、阿里巴巴、Gitlab、红帽等。 ## Crossplane 的特性 @@ -132,4 +132,5 @@ example-appconfig-workload NodePort 10.99.30.250 80:31557/TC ## 参考 - [crossplane/addon-oam-kubernetes-local - github.com](https://github.com/crossplane/addon-oam-kubernetes-local) -- [Traits and workloads interaction mechanism in OAM - github.com](https://github.com/crossplane/oam-kubernetes-runtime/blob/master/design/one-pager-trait-workload-interaction-mechanism.md) \ No newline at end of file +- [Traits and workloads interaction mechanism in OAM - github.com](https://github.com/crossplane/oam-kubernetes-runtime/blob/master/design/one-pager-trait-workload-interaction-mechanism.md) +- [Crossplane CNCF Sandbox - docs.google.com](https://docs.google.com/presentation/d/1HEQtVMwQxrpkQg2UWUNi0RPdjmJ6TaZLr50Cr_anNeQ/edit#slide=id.g8801599ecb_0_72) \ No newline at end of file diff --git a/usecases/oam.md b/usecases/oam.md index d3bd68938..408f0418a 100644 --- a/usecases/oam.md +++ b/usecases/oam.md @@ -29,6 +29,22 @@ OAM 全称是 Open Application Model,从名称上来看它所定义的就是 - 是从管理大量 CRD 中汲取的经验。 - 业务和研发的沟通成本,比如 YAML 配置中很多字段是开发人员不关心的。 +## 设计原则 + +OAM 规范的设计遵循了以下[原则](https://github.com/oam-dev/spec/blob/master/9.design_principles.md): + +- 关注点分离:根据功能和行为来定义模型,以此划分不同角色的职责, +- 平台中立:OAM 的实现不绑定到特定平台; +- 优雅:尽量减少设计复杂性; +- 复用性:可移植性好,同一个应用程序可以在不同的平台上不加改动地执行; +- 不作为编程模型:OAM 提供的是应用程序模型,描述了应用程序的组成和组件的拓扑结构,而不关注应用程序的具体实现。 + +下图是 OAM 规范示意图。 + +![OAM 规范示意图](../images/oam-spec.png) + +图片来自 [oam/spec issue #346](https://github.com/oam-dev/spec/issues/346)。 + ### OAM 基本对象 OAM 模型中包含以下基本对象,以本文发稿时的最新 API 版本 `core.oam.dev/v1alpha2` 为准: @@ -65,11 +81,11 @@ OAM 模型中包含以下基本对象,以本文发稿时的最新 API 版本 ` ## Rudr -Rudr 是对 [OAM v1alpha1](https://github.com/oam-dev/spec/releases/tag/v1.0.0-alpha.1) 在 Kubernetes 环境下的实现,OAM 正在与 [Crossplane](https://github.com/crossplane/) 合作,Rudr 不建议再使用。 +> 注意:Rudr 是对 [OAM v1alpha1](https://github.com/oam-dev/spec/releases/tag/v1.0.0-alpha.1) 在 Kubernetes 环境下的实现,OAM 正在与 [Crossplane](https://github.com/crossplane/) 合作,不建议再使用 Rudr。 -> **Crossplane** -> -> 使用 Kubernetes 社区开创的以 API 为中心的声明式配置和自动化方法,使基础设施和应用管理标准化。官方网站:。 +**Crossplane** + +[Crossplane](./crossplane.md) 使用 Kubernetes 社区开创的以 API 为中心的声明式配置和自动化方法,使基础设施和应用管理标准化。官方网站:。 ### 安装 Rudr