如果您有全职工作,如何为 Kubernetes 做出贡献

即使在业余时间,您也可以参与到最大的开源项目之一的内部工作中。
180 位读者喜欢这篇文章。
A graduate degree could springboard you into an open source job

Opensource.com

我于 2018 年 10 月开始为 Kubernetes (K8s) 做出贡献,当时我在 IBM 的产品安全事件响应团队工作。我被分布式系统所吸引,但在日常工作中我无法接触到它们,所以我的导师 Lin Sun 建议我在业余时间为开源分布式系统做出贡献。我对 K8s 产生了兴趣,并且从此一发不可收拾!

我主要在 Kubernetes 特别兴趣小组 (SIG) sig-testing、sig-storage 和 sig-release 中工作。我最值得注意的代码贡献是在 Saad Ali 的领导下实施插件管理器。插件管理器是一个控制器,用于管理插件注册/取消注册。这为 Kubelet 插件注册提供了重试和指数退避逻辑,以应对插件(如 CSI 或设备插件)注册失败的情况。

我于 2019 年 1 月成为 K8s 成员,并于 2019 年 7 月加入 IBM 开源技术团队,担任开源贡献者和开发者倡导者,目前我在该团队为 Knative 做出贡献,Knative 是一个基于 Kubernetes 的平台,用于部署和管理无服务器工作负载。

我们非常欢迎新的 Kubernetes 贡献者,因此,如果您想追随我的道路并在业余时间开始贡献,请继续阅读。

开始为 Kubernetes 做出贡献所需的技能

任何版本控制系统(例如 git、svn)

K8s 的源代码托管在 GitHub 上,因此了解如何使用 Git 或其他版本控制系统非常重要。要开始使用,请熟悉这些常用命令

Golang

我来自 C/C++ 背景,在开始之前不懂任何 Golang。如果您熟悉面向对象编程,那么 Golang 应该很容易上手。我建议您在学习 K8s 代码库的同时学习 Go。我的同事 Wei Huang 向我介绍了 Ultimate Go Programming 视频系列,这对我帮助很大。

其他要求

在您的提交可以合并到 K8s 代码库之前,您必须签署贡献者许可协议 (CLA)。此外,请注意社区准则、行为准则、如何设置您的开发环境,以及 Kubernetes GitHub 存储库的“开始之前”中描述的其他事项。

如何选择您的第一个 Kubernetes 问题

在 Kubernetes 中查找工作内容的第一种方法是查看未解决问题列表。您可以按标签筛选问题列表,例如“good first issue”和“help wanted”,这些标签表明该问题对新手友好。有时,问题可能会被错误标记;也许问题的技术复杂性被低估了,并且被错误地标记为“good first issue”。因此,如果“good first issue”看起来比您预期的更复杂,请不要感到惊讶。

Kubernetes issues

查找工作内容的第二种方法是在代码库中搜索“TODO”。有数百个 TODO 用于较低优先级的改进。这是学习代码库的好方法,并且可以从别人的 TODO 列表中划掉一个条目——一举两得!

如何处理问题

阅读任何链接的问题或拉取请求 (PR),以帮助您理解问题的上下文和问题。如果问题描述不清楚,请务必联系问题创建者以获得更清晰的理解,然后再投入时间。如果是错误,请验证您是否可以重现该错误。请注意,这可能需要大量时间投入;我花了很多时间设置我的环境来尝试重现错误。

一旦您对解决方案有了想法,最好在 Slack 上联系问题创建者,以在创建 PR 之前验证您的方法。如果您在一周内没有收到创建者的回复,请继续创建 PR,以便该人员可以使用具体的解决方案进行审查。

起初,我感到困惑的是,在认领问题后,我应该多久提交 PR。由于我必须在全职工作之外处理 K8s,我也想知道这会如何影响我的工作与生活平衡。在查看问题和其他 PR 后,我发现我需要在至少两周内提供 PR 或状态更新。如果您有一个尚未经过测试的初始实现,我认为仍然可以创建初始 PR,以便您可以尽快获得关于您是否走在正确轨道上的反馈。

在开发解决方案时,请确保添加单元测试或集成测试,以验证错误是否已修复或功能是否按预期工作。K8s 使用名为 Prow 的持续集成/持续开发 (CI/CD) 系统,如果 PR 具有 /ok-to-test 标签,则该系统会运行 PR 的所有单元测试和集成测试。如果您不是 Kubernetes 项目的成员,CI 作业将不会自动运行。在这种情况下,我建议您先在本地运行测试,然后在相关的 SIG Slack 频道上请求 Kubernetes GitHub 组织的成员评论您的 PR 上的 /ok-to-test

如何加入 Kubernetes 社区

对于日常沟通,Kubernetes Slack 非常适合直接向其他贡献者发送消息和提问。我建议加入您最感兴趣的 SIG 频道(例如 sig-cli、sig-storage、sig-testing 等)。

KubeCon 是与其他贡献者面对面交流的好地方。2019 年 11 月北美2020 年各有一场,2020 年 3 月/4 月在欧洲有一场,7 月在亚洲有一场。我强烈推荐以下两个活动给所有有抱负的、新的和经验丰富的贡献者

  • Kubernetes 贡献者峰会:这是一个免费的全天活动,在 KubeCon 正式开始的前一天举行。为新老贡献者都设有研讨会,重点是学习和发展。
  • 网络 + 指导会议:这是一个与包括 Kubernetes 在内的许多 CNCF 项目的经验丰富的开源资深人士会面的地方。您将与另外两个人以 pod 式设置配对,以探索技术问题和社区问题,您甚至可以在您选择的问题上进行结对编程。

其他贡献方式

除了编写代码之外,还有许多其他贡献方式。代码审查非常重要,因为它有助于现有审查者和维护者减轻审查工作量,并提供多样化的意见。这也是学习 K8s 代码库的最佳方式之一!

您还可以通过加入发布团队担任某个角色的影子来为 Kubernetes 发布过程做出贡献。访问角色手册以了解有关发布团队中不同角色的更多信息。我曾担任两个版本的测试基础设施主管的影子,直到我们自动化了该流程并取消了该角色。

担任影子教会了我很多东西,包括高度可见的产品背后的 CI/CD 自动化和项目管理,该产品影响着世界各地的公司。发布团队为自动化任务和消除所有角色的手动任务以实现更好的 CI/CD 所做的持续努力给我留下了深刻的印象。

如果您有兴趣担任影子,请查看正式的申请流程

如果您在业余时间处理 Kubernetes,请注意:每周都有发布团队会议,但影子不需要参加所有会议。会议通常在美国太平洋时区的工作时间举行,持续半小时。幸运的是,我的工作足够灵活,让我每周可以预订两到三次会议室来参加发布团队的会议。

当您有全职工作时,如何管理您的时间

设定您每周想要投入 K8s 贡献的时长很有帮助,因为很容易沉迷于开发活动。当您的日常工作或生活变得忙碌时,暂停为 K8s 做出贡献也很重要。K8s 开发社区通常会有一段停工期,这段时间通常与发布代码冻结期重合。这将是您休息的好时机——因为在此期间其他贡献者的参与度较低,您不太可能收到关于您的 PR 或 Slack 消息的回复。

让您的团队和经理知道您的新爱好也是有好处的,因为分享您的知识可能是有益的。如果您的团队或公司使用 Kubernetes(或任何容器技术),那么您了解 K8s 的内部原理将对他们有所帮助。即使没有,与您的开发团队分享行业趋势、软件工程设计模式和 Kubernetes 中的架构设计决策仍然很棒。考虑每月举办关于这些主题的讲座,或者在 KubeCon 和其他会议上展示您所学到的知识。

总结

为 K8s 做出贡献是我经历过的最有益的体验之一。编程曾经只是一份工作,但现在它也是一种爱好。如果您有一份不太忙碌的日常工作,我强烈建议您尝试一下。

资源

接下来阅读什么
标签
User profile image.
Tara 是 IBM 的一名软件工程师。她于 2018 年开始作为业余爱好者为 Kubernetes 做出贡献。她最近加入了 IBM 数字业务集团开源技术部门,现在全职为 Knative 做出贡献。她是 Knative 和 Kubernetes 的成员。她喜欢在业余时间跑步和举重。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.