作者:周欣元

个人简介

我们好,我是周欣元,本科就读于杭州师范大学,今年 9 月将去往云南大学进行研讨生学习。本科研讨方向为 docker 容器在网络攻防中的运用,目前作为 sealer member 参加了中心模块 sealer runtime 的研制作业。

个人主页:github.com/starComingu…

引言

sealer 是一款由阿里巴巴开源的集群镜像软件,是快速装置 Kubernetes 的交给东西,可以短时间“一键”完结新集群的装置。sealer 主打的“集群镜像”概念可以协助运用 docker 的用户滑润的过渡到 Kubernetes。

作为准研一“00 后”,在 2022 年 6 月初,我怀着对开源的神往参加了 sealer 的 Developers 的行列,此时距离 sealer 发动已经有一年了,在 2022 年 4 月左右进入了 CNCF sandbox 阶段。

我信任很多人都一样,接触到 Github 大多是从上面克隆一个下来然后随意改改交个作业,至少本科如此。而真实的作为一个 Github 杰出社区项目,需求有活跃的生态,活跃的提交(Pull Request),活跃的主张(Issues)。而我,凭仗实习用起来的 git commit/pull/clone/push 关于参加社区来说无从下手。

下面就以我个人与 sealer 的一段生长故事来带领我们体会从小白到中心功能开发者的开源之旅,一起本文也作为一篇引领开源小白入门的文章供我们参阅。

参加sealer 开源的偶尔与必定

大四上学期考完研后,我依靠本科项目经历所积累的 Java、SpringBoot、docker 等技能出来寻找作业。此时恰逢杭州的容器云岗位很多招募,我有幸进到了杭州谐云科技有限公司,并在一个机缘巧合下进入了和阿里云协作的云原生项目中,并在岗位上认识了团队的 Leader–孙宏亮。后面恰逢技能调研需求,天天在 Github 上逛,发现团队正在运营开源的交给东西 sealer,只不过仅仅传闻了 sealer 大名–声称“三分钟经过集群镜像交给一套集群”。因而 sealer 在我脑海中蒙上了奥秘的面纱,恰逢 4 月底选取通知发出,我想我往后是否能为开源贡献力量。

大概 5 月中旬,我确认了我去读研的方案,这个时分我比较苍茫,由于无法留在杭州,但又不舍坚持三年的云原生范畴。偶尔一次周会上传闻 sealer 正在招引开源志愿者参加开源之夏-2022(下称 OSPP),我一听:这不是明摆的时机吗?所以我在 5 月底离开了团队,开端着手 OSPP 上 sealer 关于支撑装置 K0s 的项目方案书。6 月份的当选如期而至–当然,背面少不了宏亮的鼎力支撑。

CNCF sealer 对我的奥秘引力

如果说经过 OSPP 参加开源是一种必定,那挑选众多的项目中总要有一个理由。刚开端关注了三个均有云原生的社区,一个 Java 调试天花板 Arthas 社区,另一个 Kubesphere 社区,以及 sealer.io 社区,且后两个社区的项目可以说互相代替(KubeKey 和 sealer)。为什么终究聚集在了 sealer,我想有三个坚定不移的原因:

  1. sealer 是 CNCF Sandbox 项目。信任我们多多少少见过 CNCF 的 Landscape 全景图,以及项目生长三个阶段:Sandbox,Incubating,Graduated。我想是否能让一个从沙箱到孵化终究到结业的项目陪同我的生长。

  2. sealer 具有“集群镜像”这一创新力。作为一个 docker 用户,我赞赏于 dockerfile 以及 docker 镜像技能带来的便当。看到集群镜像后,我又情不自禁的幻想 sealer 是怎么将云基础设施封装于 Kubefile。

  3. sealer 充满了更多的应战,在社区和用户的一起推动中,项目中呈现了一些不成熟的地方,这些问题罗列于 RoadMap 和 Issue 中,不止于 OSPP 的任务。

上手 sealer 开源的绊脚石

作为新人可以说,刚参加社区的我不会流通的 Git,不知道怎么提交 Issue,不会发起代码兼并请求(Pull Request),甚至由于代码技能不行硬而不敢和社区人员沟通,我信任大多数想参加开源的同学和我的境况比较相似。

半途参加社区尽管没有项目发动困难大,但关于一个新手来说也足够复杂。运用 sealer 装置集群体会其功能后,转型为 Developer 的重要一步便是熟悉代码,原以为对着代码编辑器 Goland 开冲就完事,但如同社区维护者所说,“Don’t buy in all”,开源代码和社区并不是 100% 优异。作为二进制装置东西,验证代码并不直观,单元测试不完善,也造成了验证代码逻辑的不少麻烦。

打虎第一棒:将官方文档和源码调配食用

在 6 月的项目发动期,将官方文档和项目中的 README 以及源码结合起来看,是一种丝滑的体会方式。首先从官方文档我们能了解其架构,模块,功能,这些关于半路上车的新人至关重要。从个人来看,我更专注 runtime 及其相关的架构,官方文档中首要侧重阅读集群镜像的构建,集群镜像库房的规划。代码方面临照 kubeadm 的官方装置文档看 runtime 模块中的业务逻辑、从cobra 命令行调用的接口跟从源代码至实现层。

打虎第二棒:对 sealer 的第一次 Issue

第一个在 sealer 社区的 Issue 比较生猛,上来就提出 Runtime 模块耦合度高,对 K0s、K3s、K8s 的扩展支撑不太友爱,一起笼统出顶层的集群办理接口。第一次点击 comment 的时分反反复复用中英翻译软件把每个句子都查看了一遍,生怕语法和单词不对。不过很快社区维护者就给出了回应,并表明愿意把这个改造的时机给我,所以我就开端了长达半个月的 K8s 及其下流版别的装置调研以及改造。

打虎第三棒:对 sealer 的第一次 Pull Request

参加一个 CNCF 认可的社区的优点是有 CODE_OF_CONDUCT,CONTRIBUTING 等等的引导文档,我很快学会了 fork、rebase 等 Git 技能。第一次的提交是关于修正过错反应的 Github Issue 模板,也是首先把 PR 的流程熟悉起来。但在第一次提交 PR 的时分,关于 DCO 签名的第一项查看就失利了,在着急中折腾了良久,总算把签名给弄好了,结果由于多次的提交,使得 commits 呈现了分支。终究直接把这个 PR 又重新 open 了一次,第一次 PR 在 3 次意外后得到了社区的认可并兼并。

逐渐融入 sealer

sealer 支撑 K0s、K3s 的装置功能将在不久后和我们见面了,以下是运用的简单演示,经过 Kubefile 将自己的运用打包进集群镜像中,经过 sealer run 即可发动一个 K3s 集群。

FROM k3s:v1.24.1
COPY imageList manifests

在完结参加开源的根本步骤后,我投入了中心模块 runtime 的重构,开发之前的规划稿打磨了很多个版别,在运用了 Kubeadm、K0s、K0sctl、K3s-install 等官方装置东西多次装置集群后,构成了各种集群的装置经历以及共性接口的笼统。其间也有不少问题的存在,例如:选用何种装置引导程序、办理集群的动作是否一致、配置文件修正镜像库房为 SeaHub:5000 后能否从 Registry 中拉取镜像、怎么制作 K0s、K3s 的集群镜像等等。

下图是我进行 K0s、K3s、K8s 引导程序调研时构成的草稿,经过研讨 K8s 的各个下流版别的装置,协助 sealer 完结了 runtime 模块的重构,弥补了单元测试,便利后续扩展 runtime 的开发。

开源小白到核心开发——我与 sealer 的成长故事

逐渐参加社区会议

sealer 社区每两周有一次 Maintainer 的会议,我非常喜爱这个会议,一群有着技能热心的同学,在这里处理一些 Feature 和 Issue 相关的问题,我们有不同的思路,为 sealer 的未来功能和 Bug 提出一些理解,协助 sealer 社区建造地更好。记住第一次在社区会议讲话比较紧张,刚好需求分享 runtime 的规划稿,规划稿已经写得蛮清楚了,但由于要介绍,一起要接受社区维护者的提问,讲话的时分有一丝紧张。终究参加下来,发现我们都和蔼可亲,并没有提出质疑,相反给我了很多主张促进了思考。

作为新手怎么参加开源的社区

第一种是有明确方针的,开源社区制定的 RoadMap。这种情况下开源社区一般会经过一些开源活动来招募社区志愿者,这样的时机每年都有,例如国内外开源之夏,以及各个互联网厂商定期给出的开源命题,这些命题大多数愿意给学生时机。

第二种是在运用过程中发现过错并定位到代码,或者发现官方文档的描绘不精确。这种时分可以经过提 Issue 并提交 PR 来引起社区对个人的关注。

当然,如果有很大的爱好要参加开源社区,学会发送一封自荐的邮件是迈向社区的重要一步,一起在参加过程中,要及时的和社区维护者进行沟通沟通,这样自己会收获更多的思路。

总结

开源是一种包容和敞开的形式,引用《开源规律》中的一句话来说:“开源并不是免费的代名词,他是技能敞开的成功实践,是创新得以持续发展的原动力,充满着机遇和风险。”

参加开源社区并不是一件轻松的工作,特别是想要将社区维护得更好。作为开源的新手,当没有丰厚的代码经历和开源经历的时分,首先容易劝退的便是自己的心里。但作为新人我想:sealer 现在很优异,那我可以在社区中汲取养分,当生长到一定的程度,那我也可以反过来推动 sealer 的前进。回顾参加社区的这一个半月,现在面临 sealer 问题的时分,我可以轻松的在 Github 上提出或评论 Issue,也可以在 Maintainer Group 参加评论,sealer 社区从代码标准、注释标准、功能规划、协同建造等方方面面给予了我快速生长的空间。

从软件运用到提 Issue 再到发起 Pull Request,从用户转变为开发者,如此一个参加开源的切入点是开源小白不错的起步方式。

当然,sealer 也在用户和开发者的一起努力下朝着愈加安稳的方向前进。在这里,也让我们一起等待 sealer 的生态将在未来愈加强壮。

欢迎钉钉扫描下方二维码或搜索群号 34619594 参加 CNCF sealer 社区沟通钉群!

开源小白到核心开发——我与 sealer 的成长故事

戳此处,立即了解 sealer 项目!