起源 | 阿里巴巴云原生公众号
在互联网与云计算技术倒退的突飞猛进过来五年中,利用研发人员对效率与麻利的极致谋求,终于把业界带进了一个簇新的云原生时代。而云原生理念的迅速遍及,火了 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,该怎么办?”
“那就用 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 在内的任何云端基础设施提供一个对立、面向最终用户的利用定义模型;而 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 的具体设计文档,这个应该说是贡献者必读的一篇参考资料。
那么 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 我的项目将在稳固之后,即整体捐献给云原生社区中立基金会。
如果你有任何疑难,欢送搜寻钉钉群号:23310022 进群交换!