云原生|KubeVela

在互联网与云计算技术发展的突飞猛进过去五年中,应用研发人员对效率与敏捷的极致追求,终于把业界带进了一个崭新的云原生时代。 而云原生理念的迅速普及,火了 Docker,红了 Kubernetes ,也间接让一个编程语言成为了现在服务端的“当家花旦”。 不消多讲,这位在云原生领域里正红的发紫的“角儿”,就是 Golang。

不过,正如同 “PHP 不必定是最好的编程语言”同样,Go 语言自己也不是“万能钥匙”。Go 语言之因此可以乘上云原生这趟高速列车,究其缘由,更可能是与它以下几个特质密切相关:

  • 语法简单,容易上手 。云原生社区是一个对开源和贡献者很是看重的生态,这就使得不多须要纠结于语法细节的 Go 语言迅速成为了这个社区的“不二之选”。不然的话,云原生 CNCF 社区里大量项目都得忙着讨论这个指针那个引用,什么 Kubernetes CRD 之类的创新设计估计都得凉。

  • golang.org 库很是丰富 。我们现代软件开发行业,讲究的就是“面向 library” 编程,谁没事儿都不会手撸一个 HTTP 框架或者并发库。开箱即用的库越多,咱研发效率就越高。在这一点上,Go 语言不只有先天优点,并且雪球越滚越大,已然是云原生一霸了。

  • 部署简单 。Go 语言项目开发完了,一个静态文件就能够运行了,特别适合直接扔在 Docker 里跑。你们能够想象一下若是 Kubernetes 是 Python 或者 Ruby 开发的,这玩意儿线上部署得多头疼。
 
  • 性能还不错,优化也相对简单 。Go 语言不能说是性能之王,但它很好的平衡了性能和程序员的心智负担。对于 Docker、Kubernetes 这几个项目的定位来讲,这个平衡点恰到好处。

因此到了 2020 年,Go 语言已经成为了”云原生“这个圈子最重要的一枚“入场券”:Linux 内核不懂,咱还有机会慢慢学;Go 语言不会?您可就真要步履维艰了。

而俗话说得好:要想语言学得好,动手练习不能少 !我们云原生社区最大的一个好处,就是 Go 语言开源项目多,优质的 Go 语言开源项目更多!从最底层的 containerd,到编排层的 Kubernetes,再到现在正红的发紫的 Istio,随便拿出一个来,那就足够我们好好钻研一阵子了。

不过,这些知名项目如今大多已经比较成熟,基本上不多接受大颗粒的 feature 进去。并且即便提 Pull Request(PR)上去了,它的合并速度也是慢的使人发指。因此你们都在问,在云原生领域中,还有哪些比较早期的、热门的 Go 语言项目还能让我们广大的 YAML 工程师们”一展宏图“呢?

这不,就在刚刚结束的、云原生领域最权威的 KubeCon 北美峰会 2020 上,由 Open Application Model (OAM)社区发布的 KubeVela 开源项目,着实让人眼前一亮。

  • KubeVela 项目官网 http://kubevela.io/
  • GitHub 项目地址 https://github.com/oam-dev/kubevela/

更使人咋舌的是,仅仅在宣布开源的第四天,KubeVela 就直接登上了 GitHub 趋势榜 Go 语言区榜首的位置,其发展潜力可见一斑!


而在 KubeCon 上的三场 KubeVela/OAM 相关的技术演讲中,KubeVela 项目更是受到了 “360 度”的关注与好评。好比,在 CNCF 应用交付领域小组对 KubeVela 项目进行介绍的过程当中,来自 Airbnb 的“网红” 云原生工程师 Melanie 全程直播了这个演讲,最后给 KubeVela 项目点了个大大的赞!

“若是我想要一个 K8s 上的 Heroku,该怎么办?”  git


“那就用 KubeVela 吧!”程序员



看到这,相信你已经对这个项目充满了好奇。GitHub 趋势榜 Go 语言第一,这个项目究竟是什么来头

KubeVela 是什么?


一言以蔽之,KubeVela 是一个简单易用且高度可扩展的应用管理平台与核心引擎。KubeVela 是基于 Kubernetes 与 Open Application Model(OAM) 技术构建的。

详细地讲,KubeVela 是一个很是低心智负担的云原生应用管理平台,核心功能是让开发人员方便快捷地在 Kubernetes 上定义与交付现代微服务应用,无需了解任何 Kubernetes 自己相关的细节。在这一点上,KubeVela 能够被认为是云原生社区的 Heroku

再通俗点说,若是你是一个应用开发人员,想要在 K8s 上部署应用,不再须要去学习复杂的 K8s 知识啦,只须要使用 KubeVela 就能够简单的上手各类 K8s 的功能。

另外一方面,对于 PaaS 平台团队来说,KubeVela 是一个强大而且高可扩展的云原生应用平台核心引擎。基于这样一个引擎,平台团队能够快速、高效地以 Kubernetes 原生的方式在 KubeVela 中植入任何来自云原生社区的应用管理能力,从而基于 KubeVela 打造出本身须要的云原平生台,好比:云原生数据库 PaaS、云原生 AI 平台、甚至 Serverless 服务。在这一点上,KubeVela 能够被认为是一个“以应用为中心”的 Kubernetes 发行版,以 OAM 为核心,让平台团队能够基于 KubeVela 快速打造出属于本身的 PaaS、Serverless 乃至任何面向用户的云原平生台项目。

为何能这么火?


在不久前 KubeVela 项目负责人接受国内某技术媒体的专访中提到:“目前,不少业务用户对‘云原生’、Kubernetes 的价值其实广泛缺少体感,这个状况在整个社区里都是个让人头疼的问题。这里最根本的缘由,在于 Kubernetes 与用户之间,还存在着一层名叫“应用层”抽象亟待填补”。

诚然,Kubernetes 和云原生技术的各类核心概念,距离业务用户其实很遥远。经过这些技术实际的落地过程也不难看出,仅仅有基础设施层抽象,离云原生“丝般顺滑”的云端应用管理与交付体验,仍是存在着巨大的鸿沟。

而 Open Application Model(OAM)开放应用模型,以及它的 Kubernetes 实现 KubeVela 项目,正是阿里云联合微软等云原生社区中坚力量,共同推出的“以解决用户侧诉求”为核心的云原生应用层项目。其中,OAM 的设计思想是为包括 Kubernetes 在内的任何云端基础设施提供一个统1、面向最终用户的应用定义模型;而 KubeVela,则是这个统一模型在 Kubernetes 上的完整实现

“只有当业务研发接触到的是‘代码’、‘应用’,而不是 'Pod'、'StatefulSet' 时,让研发专一于写代码’这个美好、朴素的云原生愿望,才可以真正得以实现” ,张磊这样表示。

我能成为 KubeVela 项目的贡献者吗?


固然!

而成为 KubeVela 贡献者的主要基础,天然是 Go 语言啦。详细的说, KubeVela 对以下几个 Golang 生态工具备依赖:

  • Golang 开发环境:1.13+;
  • Ginkgo 1.14.0+ ,Ginkgo 是 KubeVela 运行 E2E 测试的依赖;
  • Golangci-lint 1.31.0+,Golangci-lint 是 KubeVela 检查你的代码风格和规范是的依赖。

除此以外,KubeVela 会但愿你对 Kubernetes 有一些基本的了解。固然了,成为 Kubernetes 专家大可没必要:有了 Go 语言这枚”入场券“,你还有啥可担忧的。

另外,贡献 KubeVela 以前,请你必定要详细阅读它的贡献者文档,这个文档里还连接了 KubeVela 的详细设计文档,这个应该说是贡献者必读的一篇参考资料。github


那么 KubeVela 项目中,又有哪些技术点能够贡献呢?


做为一个”高可扩展“的云原生应用平台,KubeVela 是一个几乎每个特性都是可扩展、可插拔,有着很高可玩度的一个项目。

这不,就在 KubeVela 开源的次日,来自社区的贡献者就已经为 KubeVela 加上了 Contour Ingress 控制器的支持 。并且这个 PR 已经被合并,这也意味着下个 Release 里,KubeVela 就会原生支持基于 Envoy 的应用访问路由。相似的,KubeVela 里的其余特性好比 Autoscaler 等,都以 Kubernetes 原生的方式提供了大量的可扩展的空间。

另外一方面,整个 KubeVela 平台的设计是由 Workload Type (工做负载类型)和 Trait (应用特征)组成的。因此,你能够自由地为 KubeVela 里添加各类各样的 Workload Type 和 Trait,好比 StatefulSet 工做负载,CloneSet 工做负载,蓝绿发布 Trait,流量管理 Trait 等等。对于这部分应用管理能力,只有你想不到,没有你作不到,将来的 KubeVela 具有什么能力,抽象怎么设计,你说了算!

而后是用户接口与模型层。即 KubeVela 的 Appfile 与它背后的 OAM 模型引擎。这部分是 KubeVela 中最核心的部分,可是通常来讲比较稳定,比较适合对 KubeVela 和 OAM 有必定了解的中级开发者。尤为是已经在内部场景中进行过 OAM 落地的同窗,大能够在这个领域继续一展身手。

最后,也是最重要的,是任何 KubeVela 相关的分享与案例文章。是的,贡献 KubeVela 项目大可没必要从代码开始,任何一篇对 KubeVela 使用、集成甚至吐槽的分享,都是对整个社区价值巨大的贡献,咱们对此无比期待!

KubeVela 遵循 CNCF 贡献者阶梯,设计了两级 Maintainer 级别。具有必定贡献量的项目贡献者,将被现有 Maintainer 提名为 Reviewer,得到必定的项目维护权限并成为 KubeVela 项目 Member. 而 Reviwer 中表现突出的成员,将会被提名为 Approver,成为项目核心维护者。

KubeVela 便是现今阿里自身多个互联网级应用平台产品(好比阿里云 EDAS 服务)背后的核心引擎,也是一个诞生自云原生社区的开源项目。KubeVela 项目将在稳定以后,即总体捐赠给云原生社区中立基金会。

本文分享自微信公众号 - 云服务圈(heidcloud)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。golang

相关文章
相关标签/搜索