I began contributing to Kubernetes (K8s) in October 2018, once I was engaged on the Product Security Incident Response Team at IBM. I used to be drawn to distributed programs, however I could not work with them in my day job, so my mentor, Lin Sun, instructed I contribute to open supply distributed programs in my spare time. I turned fascinated about K8s and have by no means regarded again!
I’ve labored primarily within the Kubernetes particular curiosity teams (SIGs) sig-testing, sig-storage, and sig-release. My most notable code contribution was implementing the plugin manager beneath the lead of Saad Ali. The plugin supervisor is a controller that manages plugin registration/unregistration. This offers Kubelet plugin registration retry and exponential backoff logic in instances the place registration of plugins (like CSI or system plugin) fails.
I turned a member of K8s in January 2019 and joined the IBM Open Technology group as an open supply contributor and developer advocate in July 2019, the place I at the moment contribute to Knative, a Kubernetes-based platform for deploying and managing serverless workloads.
New Kubernetes contributors are greater than welcome, so if you need to comply with my path and begin contributing in your spare time, proceed studying.
Skills you’ll want to begin contributing to Kubernetes
Any model management system (e.g. git, svn)
K8s’ supply code is hosted on GitHub, so it is essential that you know the way to work with Git or one other model management system. To get began, familiarize your self with these common commands.
I come from a C/C++ background and didn’t know any Golang earlier than I began. If you might be conversant in object-oriented programming, Golang must be pretty simple to choose up. I counsel learning Go when you’re studying the K8s code base. My coworker Wei Huang launched me to the Ultimate Go Programming video sequence, which helped me immensely.
Before your commits may be merged into the K8s code base, you should signal the Contributor License Agreement (CLA). Also, pay attention to the neighborhood pointers, code of conduct, the way to arrange your dev surroundings, and different issues described in “before you get started” in Kubernetes’ GitHub repo.
How to choose your first Kubernetes subject
The first technique to discover issues to work on in Kubernetes is to take a look at the checklist of open points. You can filter the checklist of points by tag, equivalent to “good first issue” and “help wanted,” which point out the problem is newcomer-friendly. Occasionally, a difficulty may be mislabeled; possibly the problem’s technical complexity is underestimated, and it is mislabeled as “good first issue.” So, do not be shocked if a “good first issue” appears extra sophisticated than you anticipate.
The second technique to discover issues to work on is to seek for “TODO”s within the codebase. There are a whole bunch of TODOs for decrease precedence enhancements. It’s an effective way to study the codebase and cross an merchandise off of somebody’s TODO checklist—a win-win!
How to work on a difficulty
Read any linked points or pull requests (PRs) that can assist you perceive a difficulty’s context and downside. If the problem description is just not clear, be certain to succeed in out to the problem creator to get a clearer understanding earlier than investing time in it. If it is a bug, confirm you can reproduce the bug. Note that this will take a major funding of time; I’ve spent loads of time organising my surroundings to attempt to reproduce bugs.
Once you may have an concept for an answer, it’s a good suggestion to succeed in out to the problem creator on Slack to confirm your method earlier than making a PR. If you haven’t heard again from the creator inside per week, go forward a make a PR so the individual can evaluation it with a concrete resolution.
At first, I used to be confused about was how rapidly I ought to submit a PR after calling dibs on a difficulty. Since I needed to work on K8s exterior my fulltime job, I additionally puzzled how this could have an effect on my work-life stability. After wanting by points and different PRs, I found I wanted to supply a PR or standing replace inside a minimum of two weeks. If you may have an preliminary implementation that is not examined but, in my view, it is nonetheless okay to make the preliminary PR so you will get suggestions as quickly as potential about whether or not you might be heading in the right direction.
While growing your resolution, be certain so as to add unit checks or integration checks to confirm the bug is fastened or that the function works as meant. K8s makes use of a steady integration/steady growth (CI/CD) system referred to as Prow, which runs all unit and integration checks for a PR if it has the /ok-to-test label. The CI jobs won’t run routinely for those who’re not a member of the Kubernetes mission. In that case, I counsel that you simply run the take a look at domestically first, then ask on the related SIG Slack channel for a member of the Kubernetes GitHub org to remark /ok-to-test in your PR.
For on a regular basis communication, the Kubernetes Slack is nice for direct messaging different contributors and asking questions. I counsel becoming a member of the SIG channels you might be most fascinated about (equivalent to sig-cli, sig-storage, sig-testing, and so forth.).
KubeCons are a fantastic place to satisfy different contributors face-to-face. There’s one in North America in November 2019 and 2020, one in Europe in March/April, and one in Asia in July. I extremely advocate the next two occasions for all aspiring, new, and seasoned contributors:
- Kubernetes Contributor Summit: This is a free, all-day occasion the day earlier than KubeCon formally begins. There are workshops for each new and present contributors which might be targeted on studying and growth.
- Networking + Mentoring Session: This is a spot to satisfy with skilled open supply veterans throughout many CNCF initiatives, together with Kubernetes. You will likely be paired with two different folks in a pod-like setting to discover technical points and neighborhood questions, and you may even do pair-programming on an issue of your selection.
Other methods to contribute
There are many different methods to contribute in addition to writing code. Reviewing code is essential, because it helps present reviewers and maintainers with their evaluation workload and offers a variety of opinions. It’s additionally probably the greatest methods to study the K8s codebase!
You also can contribute to the Kubernetes launch course of by becoming a member of the discharge group as a shadow for a task. Access the role handbooks to study extra concerning the totally different roles on the discharge group. I shadowed the Test Infra lead for 2 releases till we automated the method and eradicated the position.
Being a shadow has taught me rather a lot, together with concerning the CI/CD automation and mission administration behind a extremely seen product that impacts corporations all world wide. I used to be particularly impressed by the persevering with effort of the discharge group to automate duties and remove guide duties for all roles to attain higher CI/CD.
If you are fascinated about being a shadow, try the formal process for applying.
One observe for those who’re engaged on Kubernetes in your spare time: There are weekly launch group conferences, however shadows should not required to attend all of them. The conferences normally occur throughout work hours within the US Pacific time zone and final a half hour. Fortunately, my job was versatile sufficient for me to ebook a convention room two or thrice per week to attend conferences with the discharge group.
How to handle your time when you may have a full-time job
It’s useful to set quite a lot of hours per week you wish to dedicate to K8s contribution, as it is extremely simple to get sucked into growth actions. It’s additionally essential to take a break from contributing to K8s when your day job or life will get busy. There are downtimes within the K8s growth neighborhood that normally coincide with the discharge code freeze interval earlier than a launch minimize. This can be a good time so that you can take a break—as a result of different contributors are much less concerned throughout this era, you might be much less prone to get a reply in your PRs or Slack messages.
It’s additionally good to let your group and supervisor at your job find out about your new pastime since it may be useful to share your information. If your group or firm makes use of Kubernetes (or any container applied sciences), it’ll profit out of your figuring out the internals of K8s. If not, it is nonetheless nice to share developments within the business, software program engineering design patterns, and architectural design selections in Kubernetes along with your growth group. Consider internet hosting month-to-month talks on these subjects or presenting what you study at KubeCon and different conferences.
Contributing to K8s is without doubt one of the most rewarding experiences I’ve ever had. Programming was once only a job, however now it is also a pastime. If you may have a day job that is not too demanding, I extremely advocate attempting it out.