作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者

导读:什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 QCon 上海 2019 重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM)开源项目。

OAM 的核心关注点

  • 关注点分离:开发者关注应用本身,运维人员关注模块化运维能力,让应用管理变得更轻松、应用交付变得更可控;
  • 平台无关与高可扩展:应用定义与平台层实现解耦,应用描述支持任意扩展和跨环境实现;
  • 模块化应用运维特征:可以自由组合和支持模块化实现的运维特征描述。

OAM 的核心模块

1. 应用组件(Components)

在 OAM 中,“应用”是由多个概念共同组合而成。第一个概念是:应用组件(Components),它是整个应用的重要组成部分。应用组件既可以包括应用运行所依赖的服务:比如 MySQL 数据库,也包括应用服务本身:比如拥有多个副本的 PHP 服务器。开发者可以把他们写的代码“打包”成一个应用组件,然后编写配置文件来描述该组件与其他服务之间的关系。

应用组件的概念让平台架构师等能够将应用分解成一个个可被复用的模块,这种模块化封装应用组成部分的思想,代表了一种构建安全、高可扩展性应用的最佳实践:通过一个完全分布式的架构模型,实现了应用组件描述和实现的解耦。

2. 应用部署配置文件(Application Configuration)

为了将这些应用组件描述变成一个真正运行起来的应用,应用运维人员会通过一个专门的、包含了所有应用组件信息的部署配置文件来实例化这个待运行的应用。这个配置文件本身也是 OAM 规范中的一个声明式 API,用来让应用运维人员能够根据开发者或者平台提交的应用描述,实例化出对应的、真正运行起来的应用。

3. 应用运维特征(Traits)

最后一个概念是一组应用运维特征(Traits),它们描述了应用在具体部署环境中的运维特征,比如应用的水平扩展的策略和 Ingress 规则,这些特征对于应用的运维来说非常重要,但它们在不同的部署环境里却往往有着截然不同的实现方式。 举一个简单的例子,同样是 Ingress,它在公有云上和本地数据中心的实现可能完全不同:前者一般是 SLB 这样的云服务,而后者则可能是一个专门的硬件。这也就意味着针对这两个环境的 Ingress 运维工作,将会有天壤之别。 但与此同时,无论是在哪个环境里,这个 Ingress 规则对于应用开发人员来说,可能是完全相同的。

应用特征的设计,让这种关注点分离成为可能:只要这两个环境在 OAM 模型下提供了对 Ingress 这个应用运维特征的实现,那么应用就可以使用统一的 Ingress 规则描述,无差别地在这两个地方运行起来。与此同时,这两个环境的基础设施供应商可以继续通过配置这些应用特征的实现,来满足它们各自的运维要求(例如:不同环境里 Ingress 实现在满足合规性和安全性上的差异)。

一个基于 OAM 的可视化实现介绍

目前该平台主要基于 OAM 的 V1 alpha1 版本实现,并且对于 OAM 的核心理念进行的抽象和封装,以更符合用户的使用习惯。在本文介绍的可视化部分背后,是完整的 OAM 格式的 yaml 文件。可视化 OAM 平台主要包含两大核心功能:

1. 运维特征模型

运维特征模型主要是针对 OAM 的 Traits 的具体实例化,让用户可以把复杂的一些运维特性可以直接以插拔的形式直接让应用发布者去使用。目前平台已经封装了包含服务发布、日志搜集、自动伸缩、存储挂载等 8 个运维特征的封装。


图 1 运维特征模型仓库

2. OAM 应用编排

OAM 应用编排功能将 OAM 的应用发布全流程进行了可视化的实现,将应用组件添加、配置文件修改以及运维特征添加等 OAM 的核心功能进行了抽象和封装。OAM 应用编排目前包含以下核心功能:

  • 组件编排: 可视化添加平台的组件并且进行组件的参数设置;
  • 运行特征编排:在添加的平台组件基础上进行运维特征的添加和编排(也为后续开发、运维关注点分离做准备);
  • OAM 版本管理:平台会保存所有的 OAM 发布版本,并且提供升级和回滚功能。


图 2 OAM 应用编排主界面

接下来,我们会以一个典型应用(nginx+tomcat+redis)的部署来全面解析,如何在平台上进行 OAM 的可视化发布。

前置条件

运维特征(Traints)应用模型已安装,在界面上,可以快速查看有哪些运维特征应用模型,以及它们的运行状态。当前只支持系统定义的运维特征,后续会开发自定义的运维特征的生命周期管理。让用户可以编写自己的运维特征并且安装到平台进行使用。

OAM 应用创建流程

OAM 应用基本发布流程:应用创建->新增组件->应用编排->保存版本->发布应用。

  • 创建应用: 点击应用->OAM 应用菜单, 点击【创建应用】按钮,输入必填项;
  • 添加组件: 点击【新增组件】按钮,设置工作负载类型,容器配置等;

选择想要创建的工作负载类型,目前已经将 Server、Singleton Server、Task、Singleton Task、Worker 以及 Singleton Worker 等六种核心的工作负载进行了封装,用户只需要在下拉框中勾选自己想要创建的负载类型即可。

在选择完负载类型之后,用户可以以可视化的形式去选择想要发布的镜像以及容器的基本配置参数。同时,目前也支持基于多个容器的编排发布。

  • 根据我们的需求,我们依次添加 tomcat、redis、mysql 三个组件,在界面上就可以看到组件的状态,同时点击“详情”可以看到对应的 Kubernetes 资源信息;

查看组件的详细信息。

  • 应用编排:在创建完需要部署的组件之后,我们的 OAM 应用已经具备了开发的属性。

之后我们需要根据需求给每一个组件添加运维特征:点击进入应用编排界面,你可以看到刚才添加的组件已经展示在画布之上;在画布上点击单个组件,可以看到目前适合该组件的运维特征,勾选你所需要的运维特征即可快速添加;在添加完运维特征之后,会在右边栏弹出运维特征的配置参数,配置保存之后这些运维特征即可生效;

  • 在添加完所有组件的运维特征之后,我们就可以看到一个完整的编排完的 OAM 应用了。在 OAM 的 V2 版本,我们同时会再增加应用的依赖关系,用户可以通过拖拽和连线来实现应用之间的依赖编排;

  • 保存版本:最后,我们可以点击【保存当前内容为版本】按钮,输入版本号,点击【确定】;

  • 发布应用:点击【发布】按钮,发布应用

发布应用后,组件状态显示‘已实例化’。应用实例状态显示“健康”。

点击事件 tab 页,显示事件。

用户可以快速查看已经创建的 ingress,并且进行访问。


  • 用户可以通过修改 traints 信息,快速对当前的应用进行修改和升级。

点击进入应用编排界面,并且编辑 tomcat 实例数为 4。

将编辑后的版本,保存为当前版本则会直接讲修改的配置更新到当前实例。如果选择保存为新版本,则会将当前配置修改保存为模板,等待发布。我们将此修改保存为新版本。

点击更新为此版本,进行刚才修改的配置发布。发布完成之后,我们可以看到有两个版本的 OAM 应用模板。


查看详情,确认 tomcat 实例数已经变更为 4,但是由于我们同时设置了自动扩缩容的实例为 3,因此在扩容之后又迅速变回实例 3。

至此,一个完整的部署和更新 OAM 应用的可视化流程就演示完了。

总结

如今 OAM Spec 已经迭代到了 v1alpha2 版本,新版本在坚持 OAM Spec 平台无关的基础上,整体变得更 Kubernetes 友好化,很大程度上平衡了标准与可扩展性,更好的支持已有的 CRD。也就是说,如果你已经编写了现成的 CRD Operator,可以平滑的接入到 OAM 体系中,并且享受到 OAM 模型的红利。

更详细的新版本介绍可以阅读《OAM v1alpha2 新版发布:平衡标准与可扩展性,灵活接入 CRD operator》。

该可视化平台也已经在全面升级到 v1alpha2 的过程中,新版的支持可以更好的允许用户编写插件扩充平台的功能。

该平台来自于阿里云战略合作伙伴杭州谐云科技,该平台基于 OAM 实现的开源版本也已经在路上,大家敬请期待。

  • OAM 平台试用网址:http://139.196.197.117:30088/ 用户名/密码: admin/Ab123456
  • Demo 中所有的 yaml 文件请访问 github 地址查看: https://github.com/harmonycloud/oam-simple-demo

目前,OAM 规范和模型实际已解决许多现有问题,但它的路程才刚刚开始。OAM 是一个中立的开源项目,我们欢迎更多的人参与其中,共同定义云原生应用交付的未来。

杭州谐云科技有限公司成立于 2016 年 7 月,公司核心团队来自于浙江大学 SEL 实验室,谐云团队在云计算及相关领域具备深厚的技术积淀,在全球顶级开源社区 Docker、Kubernetes、Cloud Foundry 等项目贡献累计超过 200 万行代码,排名全球第四,国内第一。团队曾著书中国第一本深度解析容器云的专业书籍《Docker 容器与容器云》,是国内为数不多掌握底层核心技术的容器云提供商。建设了目前中国最大的容器集群落地案例,支撑着国内最大的互联网电视云。

课程推荐

为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。

点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

原文链接
本文为云栖社区原创内容,未经允许不得转载。

社区首款 OAM 可视化平台发布!相关推荐

  1. 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低

    作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者 **导读:**什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品 ...

  2. 第一款鸿蒙摄像头,随时随地看一看!华为首款鸿蒙智能摄像头发布

    原标题:随时随地看一看!华为首款鸿蒙智能摄像头发布 当我们进入科技飞速发展的时代,越来越多的角落开始布控了一些摄像装置.截止到如今,不仅仅在一些公共死角位置安排了电子猫眼,一些养了宠物的年轻人也在家中 ...

  3. 有信宣布推出首款语音直播平台:红豆Live

    9月12日消息,有信宣布正式推出国内首款语音直播平台红豆Live,其主要通过图文.问答.语音直播回放.付费等形式为各领域垂直大V服务. 红豆Live是为各领域垂直大V打造内容直播的工具,提供语音为主的 ...

  4. 华为mate20x5g系统是鸿蒙吗,华为国内首款5G商业手机发布 自主研发的鸿蒙系统也有新动向...

    原标题:华为国内首款5G商业手机发布 自主研发的鸿蒙系统也有新动向 南都讯 记者刘晨 7月26日,伴随着华为国内首款5G商用手机的发布,此前备受关注的"鸿蒙系统"也有了新动向. 华 ...

  5. 中国首款L4级Robovan发布!文远知行商用落地两条腿走路

    雷刚 发自 副驾寺 智能车参考 报道 | 公众号 AI4Auto 你的城市出行,RoboTaxi.Mini Robobus- 你的同城货运,现在开始,进入Robovan时间. 就在今日(9月9日)中国 ...

  6. 英特尔首款AI芯片终于发布:训练推理两用,历时4年花费5亿美元买来4家公司...

    边策 鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 历时4年,壕购4家创业公司,花费超过5亿美元,终于发布第一款AI芯片. 这就是芯片半导体巨头英特尔,今日搞出的大新闻. 该AI芯片取 ...

  7. 中国首个工业云平台发布 徐工阿里华为联合打造

    11月23日讯,近日由徐工集团与华为.阿里巴巴.中国电信4家联合打造的中国首个工业云平台"徐工工业云"在上海对外发布,并公布了其已经获得的"效果". " ...

  8. 智维数据nCompass防火墙策略可视化平台发布

    ​1 防火墙策略收敛的困境: "一个月只能收敛一条策略, 太影响防火墙性能了,我们不敢再开了!" 安全策略的配置是发挥防火墙防护作用的关键,精细化安全策略配置成为应对威胁的重要手段 ...

  9. 中国首款7nm座舱芯片发布 2022年率先在吉利旗下车型量产上车

    继去年地平线等国产芯片厂商在巨头盘踞的车规芯片市场拿到前装量产"上车"项目之后,国产车规级先进制程芯片也迎来了重要的突破. 2021年12月10日,芯擎科技于武汉正式发布车用芯片品 ...

最新文章

  1. SAP UI5 应用启动(bootstrap)过程单步调试
  2. 在linux下添加路由
  3. ADN中国团队參加微软的Kinect全国大赛获得三等奖
  4. MySQL学生人数统计小案例
  5. 你想过没有,学校从来没教过你怎么赚钱
  6. 新中大软件 java班不_新中大gsoft-12.0-软件安装说明.doc
  7. QQ互联本地测试【QQ互联第一步】
  8. OPNsense用户手册-硬件要求
  9. 学会可视化大屏布局技巧,让领导都赞不绝口
  10. 扒一扒那些叫欧拉的定理们(九)——群论观点下的欧拉公式初步
  11. 2021年1~12月语音合成和语音识别论文月报
  12. Redis缓存详解(黑马-未完结)
  13. 1.Windows server 2022 AD域的安装与如何加入域中
  14. 错误解决:failed calling webhook “dec-autonomy.xxx.io“: failed to call webhook:post
  15. VR旅游应用案例解析,世界那么大用VR去看看!
  16. python def 识别print_Python零基础快速入门(一):print()函数与变量
  17. Tencent SSL 数字证书安装部署
  18. 前端之HTML 表格
  19. towhee+elasticsearch实现本地以图搜图
  20. 集群间实现Session共享

热门文章

  1. python异步asy_Python 异步编程之asyncio【转载】
  2. java彩票案例_java彩票例子
  3. erlang安装_消息中间件(八)- RabbitMQ - 安装
  4. android webview 加载本地,webview加载本地资源的各种尝试
  5. plotwidget横坐标日期_plotly详解(标签)x轴日期标签、y轴百分比标签设置
  6. _Linux进程信号详解
  7. 让读博轻松、愉快的10种方法
  8. 985研究生连论文都不会写,还面试什么大厂
  9. 支付宝「集五福」的阳谋
  10. 2020诺奖预测出炉!“引文桂冠”奖今日公布,华人学者戴宏杰入选