Open Application Model(OAM)发布:在Kubernetes及其他平台上开发及操作应用程序的开放标准...
Kubernetes已经成为当下最强大的容器编排环境。它的成功,也使得各类公有云平台上Kubernetes服务在数量上呈现出惊人的增长。然而,Kubernetes中的核心资源(例如服务与部署)对应着应用程序整体中的不同组成部分。同样的,Helm表等对象则代表着潜在的可部署应用程序;而一旦开始实际部署,运行方式将不再以应用程序为中心。这就要求我们建立起一套拥有完整定义的模型,用以代表整体应用程序(而不仅仅是其中的模板及/或组成部分)。以此为基础,微软以及阿里云决定通过Open Web基金会联手构建Open Application Model(OAM)[1]项目。
OAM是一种用于描述应用程序的范式,旨在将应用程序描述同应用程序在基础设施中的部署以及管理方式区分开来。为什么要加以区分?当然是有理由的。在现实场景中,从入口到CNI再到Service Mesh,每个Kubernetes集群都有着自己的独特属性。将应用程序定义与集群运营细节区分开来,能够确保开发人员专注于应用程序当中的关键元素,而不必为部署场景的运营细节而分神。此外,这种关注点区分还使得平台架构师能够开发出可复用组件,同时帮助应用程序开发人员将这些组件同自己的代码集成起来,最终快速轻松地构建起稳定可靠的应用程序。总结来讲,Open Application Model的目标分为两点:让简单应用程序的开发更简单,让复杂应用程序的管理更轻松。
在OAM项目中,应用程序由多个基本概念共同构成。首先就是组件,即组成应用程序的各个元素。这些组件可以是服务(例如MySQL数据库),也可以是带有负载均衡器的PHP服务器副本。开发人员可以将这些组件打包至代码当中,而后编写出负责描述这些组件与其他微服务间关系的清单。组件概念的存在,使得平台架构师以及应用程序开发人员得以构建起可复用模块,并通过模块封装实施符合安全性及可扩展性部署要求的最佳实践。此外,这种方式也让我们能够将组件实现与整体分布式应用程序架构内各组件的整合方式明确区分开来。
为了将这些组件转换为具体应用程序,运营人员需要配置各组件以建立起应用程序的特定部署实例。换言之,应用程序运营人员的工作,就是通过由开发人员及平台提供的组件实现应用程序的实际运行。
“特性”又是另一项重要概念,负责描述应用程序环境的某些特征,包括对应用程序运行非常重要、但可能在不同环境中以不同方式实现的自动规模伸缩及入口路由等功能。举个简单的例子,负载均衡器既可以由超大规模云服务平台提供,也可以由本地硬件实现。从应用程序开发人员的角度来看,二者的作用完全相同;但在运营人员眼中,二者则可谓截然不同。特性概念旨在区分关注点,以确保应用程序能够以特性为前提在任意部署中部署并运行。以此为基础,基础设施运营人员可以配置这些特性,从而满足当前环境中的独特运营要求(例如合规性及安全性)。
与传统PaaS应用程序模型相比,OAM也有着自己的一些独特之处。最重要的一点,OAM具有明确的平台中立性。虽然OAM的早期形态(名为Rudr)以Kubernetes为基础,但OAM本身并不高度依赖于Kubernetes。大家完全可以在其他环境当中使用OAM完成应用程序开发,包括小型边缘设备(例如边缘部署)等并不适合Kubernetes的运行场景。同理,在无服务器环境中,用户没必要也不需要使用Kubernetes这种复杂度极高的解决方案。
更重要的是,OAM范式可以在设计层面进行扩展,而不像以往的PaaS或者常规应用环境那样以隔离方式隐藏运行场景的特性及影响。同样的,OAM使得平台供应方可以通过特性机制公开其当前平台的独特属性,帮助开发人员结合特性支持需求构建起跨平台应用成果。硬件供应商也能够以类似的方式公布自己的硬件特性。OAM的整体设计思路在于防止可移植平台中的“最小公分母”问题。相反,OAM希望立足设计实现可移植性,同时确保各平台仍然保留自己的特性与实用性功能。OAM允许开发人员更自由地在可移植性与功能性之间寻求平衡,最终更好地通过标准方式完成跨平台开发。
我们很高兴能够在面向应用程序的开放模型以及Kubernetes具体实现当中贡献自己的力量。目前,OAM范式根据Open Web基金会协议开发而成,我们的目标是将Open Application Mode打造成完全中立于供应商之外的基础,最终实现真正开放的治理与协作能力。如果大家希望了解更多项目信息,请参阅OAM规范[2]以及GitHub上的Rudr Kubernetes开放实现项目[3]。当然,这些只是开始,我们期待大家的反馈意见与积极参与。希望能和更多朋友共同为Kubernetes以及云环境创造出一种更简单、可移植且可复用的应用程序开发模型。
相关链接:
https://oam-dev.github.io/
https://github.com/oam-dev/spec/
https://github.com/oam-dev/rudr/
原文链接:https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-open-application-model/
Kubernetes入门与实战培训
Kubernetes入门与实战培训将于2019年11月22日在北京开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等等,点击下方图片或者阅读原文链接查看详情。