前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如果您有全职工作,如何为Kubernetes做贡献

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

作者头像
Hyman.W
发布2019-11-15 10:38:50
1.4K0
发布2019-11-15 10:38:50
举报
文章被收录于专栏:Beyond Coding

您甚至可以在业余时间从事最大的开源项目之一的内部工作。

图片:  Opensource.com
图片: Opensource.com

当我在IBM产品安全事件响应团队工作时,我于2018年10月开始为Kubernetes(K8s)做出贡献。我被分布式系统所吸引,但在日常工作中无法与它们合作,因此我的导师Lin Sun建议我在业余时间为开源分布式系统做出贡献。我对K8感兴趣,再也没有回头!

我主要在Kubernetes特殊兴趣小组(SIG)参与 sig-testing,sig-storage 和 sig-release 中工作。我最引人关注的代码贡献是在Saad Ali的领导下实现了插件管理器。插件管理器是一个管理插件注册/注销的控制器,当插件(例如CSI或设备插件)注册失败时,这将为 Kubelet 提供插件注册重试和指数退避逻辑。

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

欢迎新的Kubernetes贡献者,如果您想遵循我的道路,并开始在业余时间贡献力量,请继续阅读。

在开始对Kubernetes做出贡献之前,您所需的掌握的技能

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

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

Golang

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

其他需求

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

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

在 Kubernetes 中找到需要处理的事情的第一种方法是查看 "open issue " 列表。您可以按标签过滤问题列表,例如“good first issue”和“help wanted”,这表明该问题是对新手友好的。有时,问题可能贴错标签;也许问题的技术复杂性被低估了,并且被错误地标记为“good first issue”。因此,如果“good first issue”似乎比您预期的要复杂,请不要感到惊讶。

查找需要处理的事情的第二种方法是在代码库中搜索“ TODO”。有数百个待办事项用于降低优先级。这是学习代码库并从某人的TODO列表中剔除一项的好方法-双赢!

如何处理一个问题(issue)

阅读任何 链接的问题 或 request(PR),以帮助您了解问题的背景和问题。如果问题描述不清楚,请确保在投入时间去研究问题之前与问题的创建者联系以获得更清晰的理解。如果这是一个 bug,请确认您可以重现该bug。请注意,这可能会花费大量时间。我花了很多时间来设置环境以尝试重现bug。

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

起初,我感到困惑的是,在就某个问题打电话给Dib之后,我应该在多久之后提交一份PR。由于我必须在全职工作之外从事 K8s 的工作,所以我也想知道这将如何影响我的工作与生活平衡。在查看了问题和其他PR之后,我发现我需要至少在两周内提供PR或状态更新。我认为,如果您的初始实施(initial implementation)尚未经过测试,则可以放心提交你的初始PR,这样就可以尽快获得有关您是否步入正轨的反馈。

在开发解决方案时,请确保添加单元测试或集成测试以确认该错误已修复或该功能按预期工作。K8S使用 Prow 来做持续集成/不断发展(CI / CD)系统,它会针对那些带有 ok-to-test 标签的 PR 运行所有单元和集成测试。如果您不是Kubernetes项目的成员,CI作业将不会对你的PR自动运行测试任务。在这种情况下,我建议您首先在本地运行测试,然后在相关的SIG Slack频道上要求Kubernetes GitHub组织的成员在您的PR上发表评论“/ ok-to-test”。

如何加入Kubernetes社区

对于日常交流沟通,Kubernetes Slack非常适合直接与其他贡献者进行交流并提出问题。我建议您加入您最感兴趣的SIG channel(例如sig-cli,sig-storage,sig-testing等)。

KubeCons 是与其他贡献者面对面交流的好地方。2019 2020年 11月在北美分别有1个,3月/ 4月在欧洲有1个,7月在亚洲有一个。我强烈建议所有有抱负的新手和经验丰富的贡献者参加以下两项活动:

  • Kubernetes Contributor Summit:这是KubeCon正式开始前一天的全天免费活动。有针对新的和现有的贡献者的讲习班,专注于学习和发展。
  • Networking + Mentoring Session:这里是与许多CNCF项目(包括Kubernetes)经验丰富的开源资深人士会面的地方。您将与其他两个人一起在结对,以探讨技术问题和社区问题,甚至可以对自己选择的问题进行结对编程。

其他贡献方式

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

您也可以作为“影子(shadow for a role) ”加入发布团队,为Kubernetes的发布过程做出贡献。访问角色手册以了解有关发布团队中不同角色的更多信息。我遮蔽了Test Infra潜在客户的两个版本,直到我们使流程自动化并取消了角色。

成为“影子”使我学到了很多东西,包括有关CI / CD自动化和项目管理的知识,这些产品背后是影响世界各地的公司的高度可见的产品。发布团队继续努力自动化任务并消除所有角色的手动任务,以获得更好的CI / CD,这给我留下了特别深刻的印象。

如果您有兴趣成为“影子”,请查看正式的申请流程

如果您在业余时间使用Kubernetes,请注意以下几点:有每周一次的发布团队会议,但是不需要参加所有会议的影子。会议通常在美国太平洋时区的工作时间内进行,持续半小时。幸运的是,我的工作足够灵活,我可以每周两次或两次预定会议室来参加发布团队的会议。

全职工作时如何管理时间

设置每周花费多少个小时用于K8s贡献的时间是很有帮助,否则你很容易陷入日常的开发事务中。当您的日常工作或生活忙碌时,请不要为K8贡献力量,这也很重要。K8s开发社区中的停机时间通常与发布削减之前的发布代码冻结期一致。这将是您休息的好时机,因为在此期间其他贡献者的参与较少,因此您不太可能收到有关PR或Slack消息的回复。

让您的团队和经理了解您的新爱好也是一件好事,因为分享您的知识可能会有所帮助。如果您的团队或公司使用Kubernetes(或任何容器技术),则您将从了解K8的内部结构中受益。即时你的团队或公司没有使用任何容易,与您的开发团队分享Kubernetes中的行业趋势,软件工程设计模式和体系结构设计决策仍然是很棒的。考虑举办有关这些主题的每月讲座,或介绍您在KubeCon和其他会议上学到的知识。

摘要

贡献给K8s是我有过的最有意义的经历之一。编程过去只是工作,但现在也成了业余爱好。如果您的日常工作不太苛刻,我强烈建议您尝试一下。

资源资源

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 您甚至可以在业余时间从事最大的开源项目之一的内部工作。
  • 在开始对Kubernetes做出贡献之前,您所需的掌握的技能
    • 任何版本控制系统(例如git,svn)
      • Golang
        • 其他需求
        • 如何选择您的第一个 Kubernetes 问题
        • 如何处理一个问题(issue)
        • 如何加入Kubernetes社区
        • 其他贡献方式
        • 全职工作时如何管理时间
        • 摘要
        • 资源资源
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档