作者:OpenYurt 社区
背景
2021 年,中国开源软件推动联盟 COPU 牵头公布了《2021 中国开源倒退蓝皮书》,涵盖当今寰球开源的总体状况剖析、开发者剖析、项目分析、畛域案例,绘制了一副 ” 开源数字生态地图 ”。让咱们全面地看到了开源畛域的中国力量。报告指出:国内的企业,阿里开源活跃度排名第一,有的指标值甚至是其它公司之和,并且在社区化 / 凋谢等方面也做得不错。
同年,在中国科学院软件研究所面向高校学生发动的第二届“开源软件供应链点亮打算系列暑期流动”,即“开源之夏”中,阿里云原生开源大家族共有 14 大开源我的项目退出其中。通过积极参与流动,同学们在顶级开源导师的领导下,深度体验了真实世界的软件开发,感触到了开源技术共建的魅力,同时也为国内优良开源软件社区的蓬勃发展奉献出了一己之力。
尽管距“开源之夏”已过了大半年的工夫,由阿里云原生开源的 OpenYurt 我的项目,以其 非侵入的设计思维、部署过程中的丝滑体验 、被屡次提到的“ 易用性 ”、 社区沉闷凋谢的气氛 以及 富裕前景的倒退方向 依然吸引着越来越多酷爱开源的搭档参加其中。在“开源之夏——OpenYurt 体验核心”,同学们可能以低门槛的形式疾速上手并参加到我的项目当中,解决理论问题。从旁观者到社区贡献者的角色转变之间,让咱们通过采访内容,一起看看他们的实在感触,以及有哪些意想不到的播种。
采访问答
陈涛,浙江大学软件学院在读研究生
刘佳文,浙江大学软件学院在读研究生
陈璐,同济大学软件学院在读研究生
1. 请做个自我介绍,让大家很好地意识你~
陈涛:大家好,我叫陈涛,当初是一名浙江大学软件工程的在读研究生。
刘佳文:大家好,我是刘佳文,目前是浙江大学软件学院研二的学生。
陈璐:Hi, 大家好,我是陈璐。当初是同济大学软件学院一名研究生。
2. 平时有什么喜好?从什么时候开始喜爱上编程?以及如何接触到“开源”文化?
陈涛:平时的喜好次要就是读书,看电影,跑步。抛开高中的计算机课程,真正理解深刻编程还是因为本科抉择了软件工程这个业余。作为小白,起初在建设与计算机之间的“沟通”过程中,遇到了很多艰难,然而随着业余知识面的一直拓展,逐步喜爱上了编程这种间接、富裕逻辑性的人机沟通形式。
计算技术的倒退突飞猛进,许多技术问题可能并不是在书里就能够找到,在解决问题的过程中,会很天然地接触到开源我的项目,因为你遇到的问题很可能在最新的探讨中加以解决,这种凋谢、共享的开源文化,也是我认为计算机技术疾速倒退的重要翻新起源。
刘佳文:日常除了搬砖,个别就是刷刷剧。编程的话是因为业余的起因,缓缓接触,有所产出的时候就带来了正反馈,促使本人一直学习新常识。在这个过程中,就接触到了开源我的项目。
陈璐:平时喜爱浏览,乒乓球,追剧,篮球(排名已分先后: >)。接触编程还是因为大学抉择了计算机专业,然而起初幸运地发现当初误打误撞选的业余意外地符合本人喜爱折腾的 nerdy 气质。
接触开源天然也是“折腾”路上一件牵强附会的事件。在服务器上搭博客,尝试集体 RSS 服务,踩坑后去 StackOverflow 搜答复,去 GitHub 提 issue,有时遇到解决不了的问题本人写 PR。在这个过程里不盲目地就参加了开源社区。
3. 为何抉择加入“开源之夏”,心愿失去哪些播种?
陈涛:之前本人在社区里次要处于潜水状态,大部分工夫只是看看有没有可用的“轮子”来解决问题,然而心里其实始终有造轮子的想法,也是心愿加入开源之夏的过程中,从一位旁观者转变为贡献者。
刘佳文:在加入开源之夏之前,我曾经在参加 OpenYurt 社区的工作,起初看到 OpenYurt 也参加了开源之夏,所以就抉择加入了这个流动。一方面想要更加深刻理解相干的技术,另一方面也可能更加积极参与社区奉献。
陈璐:“开源之夏”流动是受同学安利加入的。当初加入这个流动只是抱着试试看的心态给本人寒假找点事做,当初看来这个流动给我的播种远超过我最后的期待。
4. 在加入开源之夏流动前,对 OpenYurt 是否有过理解?在泛滥我的项目中为什么抉择 OpenYurt?
陈涛:因为研究生的方向是边缘计算方向,就把眼光锁定在了与边缘计算相干的我的项目上,抉择 OpenYurt 是因为其非侵入的设计思维。刚接触 OpenYurt 时,本人只应用过 Docker、Kubernetes,本来下意识会感觉波及到边缘的我的项目应用起来会比较复杂,然而 无论部署还是应用过程都非常的丝滑,与 Kubernetes、容器等云原生技术做到了很好地交融。我认为在 反对泛滥边缘个性和场景的同时,可能兼容云原生个性,是一个很好地设计模式。
陈璐:加入流动之前,我齐全是一个边缘云原生畛域的小白,只在几篇技术文章中对 OpenYurt 略有耳闻,OpenYurt 于我还处于“犹抱琵琶半遮面”的状态。抉择 OpenYurt 也是心愿能通过这个我的项目到一个新的畛域“见见世面”,开辟一片新地图。
5. 如何对待 OpenYurt 所在的边缘云原生这个畛域的技术价值?
陈涛:随着云计算能力的一直下沉,将扩散但总量丰盛的边缘计算资源纳管进来曾经成为趋势。同时云原生技术作为云背景下诞生而出的一系列技术,能够充分利用云计算资源,已逐步成为规范。因而在纳管边缘设施的过程中,如何 利用云原生技术屏蔽底层设施差别,使得云上云下环境对立,是一个非常具备挑战和价值的方向。
刘佳文:OpenYurt 相比于其余计划,因为它对 Kubernetes 的 非侵入性 ,开发者和使用者都能感触到它的 易用性。另外,针对边缘场景的难题,OpenYurt 也设计了各种计划解决,给边缘云原生这个畛域中的难题提供了不同的解决思路。
陈璐:OpenYurt 致力于打造一个边缘云原生畛域的基础设施平台。因为 Kubernetes 作为云原生事实上的规范最后是为数据中心设计的,并没有思考很多边缘场景的非凡需要(比方不稳固的网络环境等)。OpenYurt 在做的事件是去针对这样的场景对 Kubernetes 做一些非侵入式的改良和拓展。
6. 在刚刚上手 OpenYurt 这个我的项目的时候,是否遇到过什么艰难?如果有,请开展介绍下吧~
陈涛:刚开始遇到的艰难次要在源码浏览方面,这是我第一次面对较大的架构,面对许多组件,不晓得从哪里动手,可能看某个个性的过程中,就会飘到其余的代码里,甚至会呈现读着读着就遗记之前代码的状况 …… 对初窥门径的我来说的确会造成肯定挫败感,但我认为这是接触每一个生疏我的项目时都必须经验的阶段。起初缓缓相熟过程中也逐步产生了一些本人的教训,例如:把握次要脉络,不要沉浸到不重要的细节中;巧用调试,在运行过程中能够很好地察看运行逻辑;以及多做笔记,将关键点和思考记录下来。
刘佳文:刚上手的时候遇到的艰难次要还是集群的搭建,过后社区集群搭建的工具性能比较简单,过程中遇到的问题还是须要本人手动排查。不过当初社区相干工具曾经很欠缺了,对老手也很敌对。
陈璐:坦白讲,OpenYurt 是有肯定学习老本的。首先它要求对 Kubernetes 有一个根本的理解,要了解它的设计背景还须要联合一些边缘计算的常识,而后想要上手体验又至多须要一个分布式环境和肯定入手能力。当然当初社区也留神到这些问题,比方我参加的体验核心我的项目尝试去做的事件就是心愿升高 OpenYurt 的应用门槛。
7. 理解到您次要参加奉献的局部是 OpenYurt 开发者体验核心,请向大家介绍下这个组件,包含设计的背景、实现形式、面临的挑战,解决的问题等
陈涛:OpenYurt 自开源以来,就吸引了许多关注边缘计算畛域的开发者与使用者,然而因为使用者的背景不同,可能短少 Kubernetes 等云计算畛域的相干常识,当应用、搭建 OpenYurt 集群时,就会呈现各种各样的问题,无奈施展出 OpenYurt 的能力。
在这个背景下,OpenYurt 社区思考推出一个 OpenYurt 体验核心,用户只须要通过体验核心申请账号,就能够取得并连贯上一个 OpenYurt 集群。与此同时,因为体验账户并非在生产环境中,也为了进步资源利用率,OpenYurt 体验核心将采纳软多租技术,实现多个租户共享一个 OpenYurt 集群,确保用户看到残缺 OpenYurt 集群的同时,保障资源的隔离与安全性。
在这个我的项目中,我次要负责开发 operator 治理租户和相干资源的生命周期,包含对租户 CRD 的设计、controller 的开发、租户证书签发等。其中印象较深的挑战可能波及到租户证书这方面,因为要进行租户的身份认证,必须在证书上增加相干的租户信息,因而须要短时间内梳理整个 Kubernetes 和 OpenYurt 相干的证书治理逻辑,同时设计在非侵入的状况下,实现认证信息的注入,这在过后花了较长时间。
刘佳文:OpenYurt 体验核心由多个局部组成,我次要负责多租组件的设计开发,简略来讲就是依据申请中租户的信息对其申请进行查看以及批改,使得租户无奈看到其余租户的资源状况。
在设计开发的过程中须要全面的思考租户的各类申请以及对应的申请如何解决,最终对于租户来说体验核心可能有较高的安全性。另外,为了实现申请解决的整个流程,还须要对 API-Server 解决申请的流程有具体的理解,所以就要求在较短的工夫内对 API-Server 源码的浏览,并可能把握使用。这对我来说是一个不小的挑战。
陈璐:体验核心的架构比较复杂,具体设计和实现能够参考 OpenYurt 体验核心 [1] 介绍文档。我次要负责其中 yurt-dashboard 的局部,实际上是一个蕴含前后端的 Web 利用。因为该项目标前后端开发都由我一个人实现,所以对我开发能力提出了很高的要求。在设计与实现过程中也遇到了一些 trivial 的问题,这里我举一个例子:
如何设计 Kubernetes API Client?为了在我的项目中更便捷的应用 client-go 提供的拜访 Kubernetes API 的能力,如何设计一套满足易用性,可拓展性的拜访接口。这个问题困扰了我很久,针对这部分的逻辑,我前后重构了几个版本,心愿找到一个正当的计划。
a. 间接调用 client-go 中提供的接口函数,形象出罕用函数,不进行类的封装。(可扩展性有余,代码冗余重大,难以测试)
b. 形象出一个 resourceClient 类,所有拜访申请通过该类收回。(可扩展性有余,不同资源须要不同申请逻辑时通过 switch 来辨别,不满足 拓展大于批改 的设计准则)
c. 为每个资源定义一个 Client 类,将所有资源共用逻辑放到 baseClient 基类。(有肯定冗余,可拓展性强)
另外,与我之前相熟的“面向问难编程”的玩具我的项目不同,这个我的项目最终会上线供理论用户试用,这种直面用户的压力对我的编码规范性,设计合理性提出了很高的要求。在开发过程中,很多中央都须要认真考量是否符合实际,会不会影响零碎可用性,是否会影响零碎的可扩展性。软件开发畛域有一句驰名的谚语,“Make it work, make it right, make it fast”。如果说我之前的开发经验大多停留在 “make it work” 的阶段,这个我的项目让我站上更高的中央,能尝试从 “make it right, make it fast” 的角度来思考。当然受限于集体程度,最终实现成果也只是差强人意,但能在开源之夏我的项目中领有这样宝贵的机会,我非常感谢。
8. 当初间隔 2021 年开源之夏的举办曾经过了大半年的工夫,是什么能源让你始终留在 OpenYurt 社区并参加奉献?
陈涛:除了本身的钻研方向以外,还因为社区沉闷凋谢的气氛,富裕前景的倒退方向。在 OpenYurt 社区里,能够找到本人感兴趣的点进行深刻参加,从刚开始解决一些 good-first-issue,到承当重要个性并被认可的过程中,能够播种极大的成就感。
刘佳文:一方面因为本身钻研方向为边缘云原生这方面,日常的学习工作都围绕这一块内容;另一方面抉择一个优质的开源我的项目并继续奉献,也会让本人很有成就感。
陈璐:能源当然是体验核心在一直迭代的需要(逃 > 哈哈,开个玩笑。我感觉是 OpenYurt 很棒的社区气氛 让人乐在其中,一句话来总结就是“一群业余的人,相互信任,做一件有价值的事”。
9. 回顾在 OpenYurt 社区的奉献经验,是否达到了你参加开源之夏流动的预期?有什么意料之外的播种,或者有意思的故事和大家分享吗?
陈涛:曾经完满达到了我的预期,即从一个旁观者转变为参与者。意料之外的播种可能就是在代码以及文档被一直 review 的过程中,越来越标准,以前可能不会太过重视这方面,然而参加到该 OpenYurt 当前,本人 写代码的过程中就会人不知; 鬼不觉的思考易用性、可移植性等方面,我认为这是我一个比拟大的播种。
刘佳文:意料之外的播种的话,应该是在报名这个流动刚开始,认为只是针对需要进行开发,我的项目完结就是起点。没想到流动完结之中并且之后,社区依然一直跟进咱们的我的项目,让咱们有机会给大家分享。这些持续性的反馈更让我感触到了开源的魅力。
陈璐:就像之前提到的,从这个我的项目失去的播种远远超出我的预期。在实现我的项目的过程中,昌蒲和新胜 两位导师给了我很多帮忙 ,在零碎设计,原型设计,具体实现细节等各个方面都给予了我很多踊跃的反馈和无效的倡议,而且不厌其烦地 帮我这个 Kubernetes 初学者解答一些 silly questions。这个我的项目的实现离不开他们的领导与帮忙。另外因为本我的项目还波及与陈涛和佳文两位同学的单干,所以咱们还会有定期的 sync 会议来同步停顿。大家一起剖析、解决问题的经验也非常欢快,让我意识了这些新的敌人。
10. 最初,有什么话想对正在参加开源社区奉献,或是加入开源之夏流动的同学说吗?
陈涛:通过此次经验,我领会到,在参加开源的过程中,不仅仅是单纯地解决问题,因为开源我的项目凋谢的特点,所有合入的代码都要思考到易读性、可扩展性等,包含标准代码、怎么设计能够更加优雅与通用以及编写相干文档等我的项目的方方面面。而在代码、文档被一直 review 和批改的过程中,也会极大地晋升本人在简单我的项目中参加单干的能力。
刘佳文:我感觉对于曾经参加过开源社区奉献的同学来说,可能会更加重视在社区中更加被动、踊跃的参加到社区的探讨中,晋升本人的参与度。对于还没有参加过奉献的同学来说,以我为例,我过后不晓得为社区奉献什么、怎么奉献,联合我本人的经验来看,如果身边有参加开源的同学,能够多问问,如果没有,也能够大胆的在社区提交 issue 寻求帮忙。
陈璐:不用有太多顾虑,放轻松,参加社区的门槛肯定没你想的那么高。参加一次探讨,提一个修 typo 的 PR,这些都是你在为社区变得更好做出的奉献。而 一旦你度过最后的生疏阶段,社区最终会回馈你意想不到的播种。
对于 OpenYurt
OpenYurt 基于原生 Kubernetes 构建,由阿里云于 2020 年 5 月开源,并于同年 9 月份入选 CNCF SandBox 我的项目,是业界首个对 Kubernetes 无侵入的边缘计算云原生开源平台。
OpenYurt 主打“云边一体化”的概念,针对边缘计算场景中的网络环境简单、大规模利用交付、运维艰难等痛点,提供了边缘自治、云边运维通道、单元化部署、一键式集群转化等能力,通过将云边节点对立治理,使得边缘节点领有与云端雷同的能力,帮忙开发者轻松实现在海量边缘资源上的大规模利用交付、运维、管控。
在过来两年内,OpenYurt 已实现全网笼罩和本地笼罩的全场景落地,全网笼罩的利用场景如 CDN、音视频直播、物联网、物流、工业大脑、城市大脑等;本地笼罩的利用场景和案例如阿里云 LinkEdge、优酷、盒马、AIBox、银泰商城等。
欢送退出 OpenYurt 体验核心
OpenYurt 作为边缘云原生我的项目,波及到边缘计算和云原生两个畛域,许多边缘计算的开发者不相熟云原生相干的常识。为了升高 OpenYurt 的应用门槛,帮忙更多地开发者疾速上手 OpenYurt,社区推出了 OpenYurt 体验核心这一平台。想要尝试 OpenYurt 能力的新用户无需从头搭建 OpenYurt 集群,只须要在平台上申请一个测试账号,即可马上领有一个可用的 OpenYurt 集群。
相干链接
[1]OpenYurt 体验核心:
https://openyurt.io/docs/inst…
[2] OpenYurt 官网:
https://openyurt.io/en-us/
点击此处,立刻理解 OpenYurt 我的项目!