聚光灯:日本的 Kubernetes 上游培训
我们是 日本 Kubernetes 上游贡献者培训 的组织者。我们的团队由积极为 Kubernetes 做贡献的成员组成,包括担任成员、评审人 (reviewer)、批准人 (approver) 和主席 (chair) 等角色的人员。
我们的目标是增加 Kubernetes 贡献者的数量并促进社区发展。虽然 Kubernetes 社区友好且协作性强,但新手可能会觉得迈出贡献的第一步有些挑战。我们的培训计划旨在降低这一门槛,创造一个即使是初学者也能顺利参与的环境。
什么是日本 Kubernetes 上游贡献者培训?
我们的培训始于 2019 年,每年举办 1 到 2 次。最初,Kubernetes 上游贡献者培训是作为 KubeCon(Kubernetes 贡献者峰会)的同期活动举办的,但我们发起日本 Kubernetes 上游贡献者培训,旨在通过在日本举办类似活动来增加日本贡献者的数量。
在疫情之前,培训是线下进行的,但自 2020 年以来,改为线上举行。该培训为尚未向 Kubernetes 做过贡献的人员提供以下内容:
- Kubernetes 社区介绍
- Kubernetes 代码库概述以及如何创建你的第一个 PR (Pull Request)
- 降低参与门槛的技巧和鼓励,例如语言方面
- 如何设置开发环境
- 使用 kubernetes-sigs/contributor-playground 的动手实践环节
在培训开始时,我们会解释为什么为 Kubernetes 做贡献很重要以及谁可以做贡献。我们强调,为 Kubernetes 做贡献可以让你产生全球影响力,并且 Kubernetes 社区期待你的贡献!
我们还解释了 Kubernetes 社区、SIGs(特别兴趣小组)和 Working Groups(工作组)。接下来,我们讲解成员 (Member)、评审人 (Reviewer)、批准人 (Approver)、技术负责人 (Tech Lead) 和主席 (Chair) 的角色和职责。此外,我们介绍了主要使用的沟通工具,如 Slack、GitHub 和邮件列表。一些日语使用者可能觉得用英语沟通是一个障碍。此外,社区新手需要了解在哪里以及如何进行沟通。我们强调迈出第一步的重要性,这是我们在培训中最为关注的方面!
接着,我们讲解 Kubernetes 代码库的结构、主要仓库、如何创建 PR (Pull Request),以及使用 Prow 的 CI/CD 流程。我们详细解释了从创建 PR 到合并的整个过程。
经过几次讲座后,参与者使用 kubernetes-sigs/contributor-playground 进行动手实践,在那里他们可以创建一个简单的 PR。目标是让参与者感受为 Kubernetes 做贡献的过程。
在培训结束时,我们还详细讲解了如何设置用于向 kubernetes/kubernetes
仓库做贡献的开发环境,包括本地构建代码、高效运行测试以及设置集群。
参与者访谈
我们对参加培训计划的人员进行了访谈。我们询问了他们参加的原因、感受以及未来目标。
Keita Mochizuki (NTT DATA 集团公司)
Keita Mochizuki 是一位持续为 Kubernetes 及相关项目贡献的贡献者。Keita 也是容器安全领域的专家,最近出版了一本书。此外,他还提供了一份新贡献者路线图,这对刚开始做贡献的人非常有益。
Junya: 你为什么决定参加 Kubernetes 上游贡献者培训?
Keita: 实际上,我参加了两次,分别在 2020 年和 2022 年。2020 年时,我刚开始学习 Kubernetes,想尝试参与工作之外的活动,所以偶然在 Twitter 上看到活动后就报名了。然而,当时我的知识储备不多,感觉给开源软件 (OSS) 做贡献是遥不可及的事情。因此,培训后我的理解很浅,结束后更多的是一种“嗯,好吧”的感觉。
2022 年,当我认真考虑开始做贡献时,我再次参加了培训。这次我事先做了研究,并在讲座期间解决了我的疑问,这是一次非常有益的经历。
Junya: 参加后你的感受如何?
Keita: 我觉得这个培训的意义很大程度上取决于参与者的心态。培训本身包含一些通用的讲解和简单的实践练习,但这不意味着参加培训就能立即开始做贡献。
Junya: 你做贡献的目的是什么?
Keita: 我最初的动机是“深入理解 Kubernetes 并积累经验”,也就是说,“做贡献本身就是目标”。现在,我也会贡献一些我在工作中发现的 Bug 或限制。此外,通过做贡献,我不再那么犹豫直接从源代码分析未文档化的特性了。
Junya: 做贡献过程中遇到的挑战是什么?
Keita: 最难的部分是迈出第一步。给 OSS 做贡献需要一定的知识储备,利用这次培训和来自他人的支持至关重要。有一句话一直激励着我:“一旦你迈出了第一步,向前走就会更容易。” 此外,就将贡献作为我工作的一部分持续下去而言,最具挑战性的是如何将成果作为绩效展示出来。要长期持续贡献,将其与业务目标和策略对齐很重要,但上游贡献并不总是能立即产生与绩效直接挂钩的结果。因此,与管理者达成共识并获得他们的支持至关重要。
Junya: 你未来的目标是什么?
Keita: 我的目标是为那些影响更大的领域做出贡献。到目前为止,我主要通过修复一些小 Bug 来积累经验,但未来我想挑战那些对 Kubernetes 用户影响更大或与我的工作相关的问题的贡献。最近,我也一直在努力将我对代码库所做的修改反映到官方文档中,我认为这是朝着实现目标迈出的一步。
Junya: 非常感谢!
Yoshiki Fujikane (CyberAgent 公司)
Yoshiki Fujikane 是 CNCF Sandbox 项目 PipeCD 的维护者之一。除了为 PipeCD 中的 Kubernetes 支持开发新特性外,Yoshiki 还积极参与社区管理并在各种技术会议上发表演讲。
Junya: 你为什么决定参加 Kubernetes 上游贡献者培训?
Yoshiki: 我参加培训时还是个学生。我只短暂接触过 EKS,但我觉得 Kubernetes 看起来复杂但很酷,我就随便了解了一下。那时,开源软件 (OSS) 感觉高不可攀,而 Kubernetes 的上游开发更是令人望而却步。虽然我一直对 OSS 很感兴趣,但我不知道从哪里开始。正是在这段时间,我了解到了 Kubernetes 上游贡献者培训,并决定挑战一下,为 Kubernetes 做贡献。
Junya: 参加后你的感受如何?
Yoshiki: 我觉得这次培训非常有价值,让我了解了参与开源软件 (OSS) 社区是什么样的体验。当时我的英语不太好,所以获取第一手资料对我来说是个很大的障碍。Kubernetes 是一个非常大的项目,我对它的整体结构不清楚,更不知道做贡献需要什么。上游培训用日语讲解了社区结构,并让我亲自动手尝试了实际的贡献。多亏了获得的指导,我学会了如何查找第一手资料,并将其作为进一步探索的切入点,这非常有帮助。这次经历让我意识到整理和查阅第一手资料的重要性,现在当我对某些事情感兴趣时,我经常会深入研究 GitHub issue 和文档。结果是,虽然我不再直接贡献 Kubernetes 本身,但这次经历为我贡献其他项目打下了坚实的基础。
Junya: 你目前在哪些领域做贡献,还参与了哪些其他项目?
Yoshiki: 现在我不再从事 Kubernetes 相关工作,而是 CNCF Sandbox 项目 PipeCD 的维护者。PipeCD 是一个 CD(持续部署)工具,支持各种应用平台的 GitOps 风格部署。这个工具最初是 CyberAgent 的内部项目。由于不同的团队采用了不同的平台,PipeCD 应运而生,旨在提供一个统一的 CD 平台,并具有一致的用户体验。目前,它支持 Kubernetes、AWS ECS、Lambda、Cloud Run 和 Terraform。
Junya: 你在 PipeCD 团队中扮演什么角色?
Yoshiki: 我在团队中全职负责改进和开发与 Kubernetes 相关的功能。由于我们在内部将 PipeCD 作为 SaaS 提供,我的主要工作是作为支持的一部分,添加新功能和改进现有功能。除了代码贡献,我还通过在各种活动中发表演讲和管理社区会议来帮助 PipeCD 社区发展。
Junya: 你能解释一下目前在 Kubernetes 相关方面正在进行哪些改进或开发工作吗?
Yoshiki:PipeCD 支持 Kubernetes 的 GitOps 和渐进式交付(Progressive Delivery),所以我参与了这些功能的开发。最近,我一直在开发简化跨多个集群部署的功能。
Junya:你在为开源软件(OSS)做贡献时遇到过什么挑战吗?
Yoshiki:一个挑战是开发既保持通用性又能满足用户用例的功能。当我们在运营内部 SaaS 时收到功能请求时,我们会首先考虑添加功能来解决这些问题。同时,我们希望 PipeCD 作为一款开源工具被更广泛的受众使用。因此,我一直在思考为某个用例设计的功能是否可以应用于其他用例,以确保软件保持灵活性和广泛可用性。
Junya:你未来的目标是什么?
Yoshiki:我想专注于扩展 PipeCD 的功能。目前,我们以“一站式 CD”(One CD for All)为口号开发 PipeCD。正如我之前提到的,它支持 Kubernetes、AWS ECS、Lambda、Cloud Run 和 Terraform,但还有许多其他平台,未来也可能会出现新平台。因此,我们目前正在开发一个插件系统,允许用户自行扩展 PipeCD,我想推动这项工作向前发展。我也在开发 Kubernetes 多集群部署的功能,我的目标是继续做出有影响力的贡献。
Junya: 非常感谢!
Kubernetes 上游培训的未来
我们计划继续在日本举办 Kubernetes 上游培训,并期待欢迎更多新的贡献者。我们的下一场培训定于 11 月底在 CloudNative Days Winter 2024 期间举行。
此外,我们的目标是将这些培训项目不仅在日本,而且推广到全球。今年 Kubernetes 庆祝了其十周年,为了社区更加活跃,全球各地的人们持续做出贡献至关重要。虽然上游培训已在多个地区举行,但我们致力于将其带到更多地方。
我们希望随着越来越多的人加入 Kubernetes 社区并做出贡献,我们的社区将变得更加充满活力!