写点什么

微软为 Kubernetes 等平台发布 Open Application Model

  • 2019-11-08
  • 本文字数:1982 字

    阅读完需:约 7 分钟

微软为Kubernetes等平台发布Open Application Model

微软最近发布了Open Application Model(OAM),一个用于描述应用程序与其实现解耦(这样就可以清楚地分离关注点)的规范。OAM 的目标是 Kubernetes 和其他平台。


在实施 DevOps 时通常需要维护开发(dev)和部署(ops)之间的描述,帮助协调交付工作流,而 OAM 规范的目标就是要促进这一过程。OAM 的既定目标是“让简单的应用程序变简单,让复杂的应用程序易于管理”。Kubernetes 平台的最初实现叫作Rudr,它满足了上述的大部分目标。


下图(https://github.com/oam-dev/spec/#introduction)说明了不同的角色及其各自的职责,以及 OAM 规范的不同组成部分。



微软还发布了Dapr,一个开源的“可移植、基于事件驱动的运行时,开发人员可以很容易地构建可在云端运行的无状态和有状态微服务弹性应用程序”。Dapr 的目标受众是微服务开发人员,而 Rudr 的目标受众是运维人员。


InfoQ 采访了微软项目经理、规范负责人 Vaclav Turecek。


Turecek 谈到了基于 Kubernetes 的平台的快速增长,以及 OAM 如何区分开发人员和运维人员的职责,从而简化整个软件开发生命周期。他谈到了其他一些平台与 OAM 之间的重叠,以及 OAM 的独特性。最后,他介绍了 OAM 社区及其路发展线图。


InfoQ:OAM 解决了哪些问题?


Vaclav Turecek:当谈到应用程序的开发和部署时,我们认为区分开发人员和运维人员的职责是很重要的一点。如果这些角色混淆不清,就会导致沟通问题,出现 bug,甚至是服务中断。OAM 试图根据应用程序构建和基础设施运维的角色对应用程序进行建模,以此来解决这个问题。

具体地说,对于 Kubernetes,我们已经发布了一个叫作 Rudr 的参考实现。我们认为,OAM 有助于简化应用程序的组合和运维。Kubernetes 专注于容器基础设施,它的核心资源(如服务和部署)代表了应用程序的不同部分。它们不代表应用程序本身,而且实际上也并没有可用于表示整个应用程序及其运维的构造。OAM 为应用程序提供了某种构造,将应用程序及其运维特征(如自动伸缩、流量路由、摄入,等等)建模成一个整体。


InfoQ:OAM 在 Kubernetes 生态系统中有何独特之处?


Turecek:现如今,Kubernetes 拥有一个巨大的工具和库生态系统。在应用程序建模领域,我们还没有看到太多与 OAM 类似的东西。我们可以拿 Helm 和 CNAB 与 OAM 作一下对比,但这并不仅仅是因为 Helm 和 CNAB 的作者也是 OAM 的作者之一,还因为它们都涉及部署应用程序的某个方面。

Helm 和 CNAB 实际上是互补的,它们符合 Unix“把单个事情做到极致”的哲学,因为它们在这个领域解决了不同的问题,并且能够很好地协作。例如,你可以描述应用程序的组件以及如何使用 OAM 操作它,并将其直接部署到 Kubernetes 上。需要引入其他依赖项?将 OAM 定义和依赖项放入 Helm 的 chart 中,然后一起安装就可以了。需要在没有访问容器镜像权限的 Kubernetes 集群上运行?将 Helm chart 和容器镜像一起放入 CNAB 包中,然后一起安装就可以了。

OAM 还允许基础设施运维人员配置底层系统,底层操作系统可能提供了 OAM 应用程序可以访问的运维特性。这意味着你可以挂载各种现有的工具和库。例如,你可以挂载任何与 SMI 兼容的服务网格(如 Istio 或 Linkerd),获得负载均衡和流量路由功能。这样可以满足基础设施运维人员在不同环境下的独特需求,例如合规性或安全性,并为开发人员和应用程序运维人员提供一个良好的应用程序环境。


InfoQ:OAM 的目标包括多云吗?换句话说,它是否试图跨多个 K8s 云平台“标准化 YAML”?


Turecek:OAM 的主要思想是标准化应用程序的组合和运维模型,不管最终的运行环境是怎样的。因此,当你从一个平台转移到另一个平台,你将拥有一致的体验、一个可转移的过程和潜在的可移植性。也就是说,我们预想实现平台的功能会有所不同,模型就是围绕这个假设而设计的。这是 Kubernetes 之上的一个层,Kubernetes 只是一个支持平台。


InfoQ:OAM 规范是如何定义应用程序的,它与 Helm 有什么不同?


Turecek:经过研究我们发现,人们无法在微服务“应用程序”的定义上达成一致。目前,OAM 的设计并没有打算为微服务定义一个严格的“应用程序”结构。我们有应用程序范围的概念,可以将它看成是应用程序服务分组的边界。例如,将服务分在“健康”分组中,当升级其中一个服务时,我们会评估分组中每个服务的健康状况。这与 Helm 的 chart 不同,后者没有提供操作一组资源的功能。


InfoQ:是谁创建了 OAM?谁在维护?它的发展路线图是怎样的?


Turecek:OAM 是由 Helm、OpenKruise 和 Service Fabric 的作者开发的,目前微软和阿里巴巴的工程师在维护,他们遵循的是 Open Web Foundation 协议。我们的最终目标是将规范捐赠给基金会。


Kubernetes 平台的最初实现叫作 Rudr,可以在GitHub上找到。OAM规范提供了更详细的信息,包括不同的角色、各自的职责,等等。


原文链接


Microsoft Announces Open Application Model for Kubernetes and Other Platforms


2019-11-08 08:002152

评论 1 条评论

发布
用户头像
OAM 的目标包括多云吗?这个问题被采访者没有直接回答,不过他说 OAM 是 Kubernetes 之上的一个层,又与平台无关,那答案就是肯定的了。
2020-02-03 22:41
回复
没有更多了
发现更多内容

K8S学习笔记--安装Docker环境

IT蜗壳-Tango

IT蜗壳 6月月更

《Java编程思想》作者Bruce Eckel新作,到底做了哪些升级?

图灵教育

Java

使用Mycat进行MySQL单库分表

迷彩

架构 运维 mycat 分布式数据库中间件 6月月更

坚持五件事,带你走出迷茫困境!

博文视点Broadview

在线JSON转CSharp(C#)Class工具

入门小站

工具

高效的远程办公经验 | 社区征文

极客飞兔

远程办公 6月月更 初夏征文

Linux开发_摄像头编程(实现拍照、网页监控功能)

DS小龙哥

6月月更

quarkus+saas多租户动态数据源切换实现简单完美

weir威尔

SaaS 多租户 Quarkus 动态数据源

消息队列的丢失、重复与积压问题

Xiao8

6月月更

元素的常用事件

Jason199

js 事件 6月月更

大一学生课设c——服装管理系统

秋名山码民

6月月更

5 个关于 NFT 的技术漏洞

devpoint

区块链 以太坊 NFT 6月月更

Android 11适配指南之系统相机拍照、打开相册

yechaoa

android 适配 6月月更 11.0

Angular 服务器端渲染应用一个常见的内存泄漏问题

Jerry Wang

typescript 前端开发 angular Spartacus 6月月更

实战监听Eureka client的缓存更新

程序员欣宸

Java SpringCloud 6月月更

APM 工具 SkyWalking 是什么

耳东@Erdong

监控 Skywalking 6月月更

直播带货app源码搭建中,直播CDN的原理是什么?

开源直播系统源码

软件开发 直播带货 直播系统 app源码

Kafka ETL 之后,我们将如何定义新一代实时数据集成解决方案?

tapdata

kafka ETL 数据集成 实时数据 DaaS

怎样能在小程序中实现视频通话及互动直播功能?

Geek_99967b

小程序 小程序容器 小程序营销

电商如何借助小程序发力

Geek_99967b

小程序 电商

【云舟说直播间】-数字安全专场明天下午正式上线

浪潮云

云计算

成熟的知识管理,应具备哪些条件?

小炮

运行时应用自我保护(RASP):应用安全的自我修养

SEAL软件供应链安全

RASP

开发增效利器—2022年VsCode插件分享

中原银行

ide vscode 插件 中原银行 降本增效

java程序员培训 | Java设计模式之桥接模式

@零度

设计模式 JAVA开发

【愚公系列】2022年06月 Java教学课程 01-Java语言背景介绍

愚公搬代码

6月月更

redis 精讲系列介绍八 - 淘汰策略

Nick

Redis 核心技术与实战 6月月更 redis 底层原理 redis 淘汰策略 redis 精讲

JSON入门教程

倔强的牛角

json Fastjson 6月月更

NodeJS 防止xss攻击

德育处主任

Node 6月月更

flutter系列之:flutter中的Wrap

程序那些事

flutter 程序那些事 6月月更

mysql存储引擎之Myisam和Innodb的区别

乌龟哥哥

6月月更

微软为Kubernetes等平台发布Open Application Model_容器_Rags Srinivas_InfoQ精选文章