池剑锋 译 分布式实验室
月圆之夜在游泳池学习骑独角兽是不容易的,特别是对不会游泳的人。但是我知道可以依靠别人帮我浮起来。
Kubernetes社区也是同样的热情和乐于助人,愿意帮助新手避免其淹没在无穷无尽的可能性中。准备好来实践了吗?请看下文。
2017年12月的KubeCon会议[1],有超过4100名注册参与者,是上一期的4倍,其中将近80%的人是首次参加。这也是我们看到的Kubernetes去年爆炸性增长的一个方面。
会议上其中一个最普遍的问题是:我是Kubernetes新手,但也想做贡献。我该如何起步?
你也许觉得这不就是发送pull request并修复bug吗,但正如我下面会提到的,其实有许多贡献的方式,你可以选择几种。
逛逛slack频道:大量关于Kubernetes的讨论发生在slack频道[2]。Kubernetes项目的每个领域都有许多相关的频道,但对于新用户,你可能会发现 #kubernetes novice和#kubernetes users是最有用的。我和其他许多开发者会在每月的Office Hour[3]栏目中报到,在那里我们回答#office hours频道的用户提出的问题。
加入邮件列表:讨论也发生在邮件列表中。确保自己理解每个列表的目的,最好在投入之前先观察几天。主要的列表有:
kubernetes users[4] 列表针对通用的Kubernetes相关的讨论及Q&A
kubernetes dev[5] 列表针对开发Kubernetes的开发者,以及想要理解底层细节的高级用户。
参加社区会议:最重要的例会应该是每周的Kubernetes社区会议,它是获取最新消息的最佳场所。之前会议的录屏[12]可以看到这些会议是如何运作的。他们趋向于谈论高级以及特定的主题,一般以一个demo开始,然后是release和SIG的状态更新。
提issue:你在尝试Kubernetes的一个新特性,但是发现其行为和文档不匹配?你可能发现了一个问题了,但在你提issue前,记得搜索已有issue,确认是否被提过。github.com/kubernetes项目有多个子项目,因此确保在正确的地方提bug,例如是在kubernetes/kubectl而不是kubernetes/kubernetes项目。(对于kubernetes/kubernetes的子仓库,可以在这里[13]提issue。)为了确保你的issue可以被快速找到,你还应该使用bot命令[14]给issue打上合适的SIG标签[15],这个过程最开始可能有点困难。
*[16]是另一个提问的好地方(或者有一天你成为了一个有经验的Kubernetes用户或者开发者,也可以在这里[回答问题[17])。
Kubernetes文档[18]令人望而生畏,但是它一直在提升,甚至只是修改一个拼写错误或者某个需要被澄清的注释。当然,你也可以在这里提交issue,或者,如果你知道怎么修改,发送pull request[19]。
贡献样例:我对Kubernetes的最早的一个贡献是,简单的展示了如何使用Wildfly和MySQL来运行一个Java EE的例子。你的第一个pr可能会难以应对,因为你需要签署Contributor License Agreement(CLA),或许在与你的主管协商后,遵循过程提交pr,然后在最终合入前,查看代码检视中产生的所有评注。坚持住!最终你将成功。
修改issue:当前kubernetes/kubernetes仓库[20]有超过4800个issue。这还不算子仓库的!如何启动修改?Help-wanted[21]标签就是为此设计的。要启动pull request,可以从这里[22]开始。
AWS的Kubernetes演练场:为了使AWS上的Kubernetes部署更容易,我们创建了一个演练场[23],展示如何在AWS上操作一个Kubernetes集群,以及在集群中部署应用。你可以尝试一下。如果某些文档有误,请提issue。如果你知道如何修复,你甚至可以发送一个pr,以帮助提高其他新用户的体验。
聚会,演讲:你一直在玩Kubernetes?找到了某个解决了你的问题的集群配置?或者知道如何使现有应用Kubernetes化?那么可以考虑在当地的聚会上分享你的经验。全世界有超过100个Kubernetes Cloud Native聚会[24](截至目前)。和当地的聚会组织者讨论一下,找到一个入口点来一场演讲,不管是一个小时的,还是10到15分钟的快速演讲都可以。根据主题的不同,你甚至还可以考虑去当地的Java用户讨论组,Docker聚会,微服务聚会,或者其它相关的聚会。没有当地的聚会组?没问题:你创一个新的[25]!
如果你想在更大的地方演讲,或想成为第一批掌握最新消息的人,KubeCon/CloudNativeCon会议就是关注Kubernetes和云原生技术的最大的会议。每年都会在北美和欧洲召开两次(从2018年起,亚太地区也会召开)。其它大的技术会议,比如AWS re:invent也包含了Kubernetes相关的主题。
博客:如何你喜欢写作,那么还可以考虑一下博客。主题可以是你的某个痛点,然后你是如何解决的。(确保包含某个架构图或者其它的图)即使你的问题看起来很偏,其他人可能就是在找这个场景。(如果你的Kubernetes集群运行在AWS上,我们很欢迎你发送pr,贡献那个用例到AWS Kubernetes演练场[26]。)
值得注意的一点是,代码不是唯一贡献的方式。推动一个大型项目前进包含许多任务和技能:项目管理、社区管理、市场、编辑加工、技术协作,这些都是需要的。如果你不确定如何应用你的特定技能,请询问有贡献经验[27]的人们。
还有别的问题吗?可以参考CNCF的Kubernetes社区概览和贡献指南[28]。或者参考所有会议的整体时间总表[29]。Kubernetes贡献指南[30]值得一读,它带你浏览开始贡献需要了解的法律要求和社区最佳实践。
准备好了吗?你的独角兽在等你了,爬上去实践吧!
相关链接:
https://kccncna17.sched.com/
http://kubernetes.slack.com/
https://git.k8s.io/community/events/office-hours.md
https://groups.google.com/forum/#!forum/kubernetes-users
https://groups.google.com/forum/#!forum/kubernetes-dev
https://github.com/kubernetes/community/blob/master/governance.md#sigs
https://github.com/kubernetes/community/blob/master/sig-aws/README.md
https://github.com/kubernetes/community/blob/master/sig-multicluster/README.md
https://github.com/kubernetes/community/blob/master/sig-apps/README.md
https://github.com/kubernetes/community/blob/master/sig-list.md
https://www.youtube.com/channel/UCZ2bu0qutTOM0tHYa_jkIwg/playlists
https://www.youtube.com/playlist?list=PL69nYSiGNLP1pkHsbPjzAewvMgGUpkCnJ&disable_polymer=true
https://github.com/kubernetes/kubernetes/issues
https://github.com/kubernetes/test-infra/blob/master/commands.md
https://github.com/kubernetes/community/tree/master/contributors/guide#find-a-sig-that-is-related-to-your-contribution
https://*.com/users/login?***c=anon_ask&returnurl=https%3a%2f%2f*.com%2fquestions%2fask%3ftags%3dkubernetes
https://*.com/questions/tagged/kubernetes
https://kubernetes.io/docs/home/
https://kubernetes.io/editdocs/
https://github.com/kubernetes/kubernetes/issues
https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22
https://github.com/kubernetes/community/tree/master/contributors/guide#open-a-pull-request
https://github.com/aws-samples/aws-workshop-for-kubernetes
https://www.meetup.com/pro/cncf/
https://github.com/cncf/meetups/blob/master/Meetup_Best_Practices.md
https://github.com/aws-samples/aws-workshop-for-kubernetes
https://github.com/kubernetes/community/blob/master/sig-contributor-experience/README.md
https://docs.google.com/presentation/d/1JqcALpsg07eH665ZXQrIvOcin6SzzsIUjMRRVivrZMg/edit
https://kubernetes.io/community/
-
https://github.com/kubernetes/community/tree/master/contributors/guide