AWS Open Source Blog
Riding the unicorn: A newbie contributor’s guide to Kubernetes
Editor’s note: Broken links removed July 2020.
Learning to ride a unicorn in a swimming pool on a full moon night isn’t easy, especially for a non-swimmer. But I knew I could rely on others to help keep me afloat.
The Kubernetes community is similarly welcoming and supportive, and is happy to help a newbie avoid drowning in an ocean of possibilities. Ready to get your feet wet? Read on!
KubeCon in Dec 2017 had over 4100 registered attendees, four times the number at the previous edition, with almost 80% attending for the first time. This is just one hint of the explosive growth that Kubernetes has seen in the last year.
One of the most common questions I heard at the conference was: “I’m new to Kubernetes and would like to contribute. How do I get started?”
You might think it’s all about sending pull requests and fixing bugs, but there are many ways to contribute, as I’ll cover below, and you can choose how much to be involved.
Hang out in Slack: A lot of discussion around Kubernetes happens in the slack channel. There are channels for just about every area in the project, but, as a new user, you may find #kubernetes-novice and #kubernetes-users most helpful. Myself and other developers are available during monthly Office Hours, where we answer user questions live in the #office-hours channel.
Join email lists: Discussions also take place in email lists. Make sure you understand the purpose of each list, and it’s always wise to lurk for a few days before jumping in. The main lists are:
- kubernetes-users for general Kubernetes-related discussions and Q&A
- kubernetes-dev for developers building Kubernetes, and experienced users who want to understand what’s happening under the hood.
Join a SIG: Special Interest Groups (SIG) focus on specific topic areas within Kubernetes. There’s SIG-AWS for discussing Kubernetes and AWS. If you’re trying to run multiple clusters of Kubernetes, SIG-Multicluster is for you. Trying to define applications? SIG-Apps. Have a look at the full list of SIGs, which links to information about meetings (which are also recorded and made available on YouTube), etc. Don’t be afraid to ask questions: the SIGs welcome opportunities to improve the onboarding experience for newbies.
Attend community meetings: The most important regular meeting is probably the weekly Kubernetes community meeting, which is the best place to get the latest news. Recordings from previous meetings provide context on how the meetings are run. They tend to cover advanced and specialized topics, generally starting with a demo, followed by release and SIG status updates.
File an issue: You’re trying a feature, but its behavior does not match the documentation? You might have hit an issue in Kubernetes, but, before you file, search existing issues to see if yours is already covered. github.com/kubernetes has multiple sub-projects, so make sure you file your bug in the right place, for example under kubernetes/kubectl rather than kubernetes/kubernetes. (For the kubernetes/kubernetes sub-repository, file new issues here.) To ensure that your issue is addressed promptly, you should also tag the appropriate SIG in the issue with a bot command, which may be tricky at first.
StackOverflow is another good place to ask questions about Kubernetes (or, once you’re an experienced Kubernetes operator or developer, to answer them).
The Kubernetes documentation is pretty awesome, but it can always be improved, even just fixing a typo or noting that something needs to be clarified. Here, too, you can submit an issue and, if you know what the fix is, send a pull request.
Contribute examples: One of my earliest contribution to Kubernetes simply showed how to run a Java EE sample using WildFly and MySQL. Your first PR may seem overwhelming, because you’ll need to sign a Contributor License Agreement (CLA), perhaps after checking with your employer, follow the process to submit a PR, then address any comments that arise in code review before you finally get to see it merged. Persevere! You’ll get there in the end.
Fix an issue: There are currently over 4800 issues in the kubernetes/kubernetes repo. And don’t forget the sub-projects! Don’t know where to start? The Help-wanted label is designed for this. To open a pull request, start here.
AWS workshop for Kubernetes: To help make it easier to deploy Kubernetes on AWS, we’ve built a workshop that shows how to operate a Kubernetes cluster on AWS and deploy applications to it. Please give it a try. If something does not work as documented, please submit an issue. If you know the fix, you could even send a PR, and help improve the experience for other new users.
Meetups, talks: Have you been playing with Kubernetes? Found a particular cluster configuration that worked for you? How about kubernetes-izing an existing application? Consider sharing your experience at a local meetup. There are more than a hundred Kubernetes Cloud Native meetups worldwide (so far). Talk to the local meetup leader to find a slot to give a talk, whether a full 60 minutes or a 10-15 minute lightning talk. Depending upon the topic, you might also consider reaching out to your local Java User Group, Docker meetup, microservices meetup, or some other related meetup. No local meetup group? Not a problem: create a new one!
If you’d like to speak at a larger event, or be the first to hear the latest news and announcements, KubeCon/CloudNativeCon conferences are the largest conferences focused on Kubernetes and cloud native technologies. They take place bi-annually in North America and EMEA (and, starting from 2018, in APAC as well!). Other large tech conferences, such as AWS re:invent, also include Kubernetes-related topics.
Blogging: If you like writing, in addition to or instead of speaking, how about blogging? A topic might be something that was a pain point for you, and how you solved it. ( Be sure to include an architecture diagram or other illustration.) Even if your problem seems narrow, there’s a good chance that someone else is looking at exactly that use case. (And, if your Kubernetes cluster is running on AWS, we’d love you to contribute that use case to the AWS Workshop for Kubernetes by sending a PR.)
Keep in mind that code is not the only way to contribute. There many tasks and skills involved in keeping a large project moving forward: program/project management, community management, marketing, copy editing, and technical writing are always needed. If you’re not sure where to apply your particular skills, ask our contributor experience folks.
Still have questions? Check the Kubernetes Community Overview and Contributions Guide by CNCF. Or have a look at the master calendar for all the meetings. Read the Kubernetes Contributor Guide, which walks you through the legal requirements and community best practices to begin contributing.
All set? Your unicorn awaits – mount up and get wet!
I’d like to thank the following people for their contributions to this post:
Ihor Dvorteskyi (@idvoretskyi), a Developer Advocate at Cloud Native Computing Foundation, focused on Kubernetes-related efforts in the open source community. He is a Product Manager for Kubernetes, co-leading the Product Management Special Interest Group, focused on enhancing Kubernetes as an open source product. He also participates in the Kubernetes release process as a features lead for multiple Kubernetes releases.
Guinevere Saenger (@guincodes) – In 2016, Guinevere Saenger transitioned from being a full-time professional pianist to a career in tech. To do so, she obtained a spot at the highly competitive Ada Developers Academy in Seattle. As part of her training, Guinevere interned at Samsung SDS on the Cloud Native Computing Team, where, after graduating in July 2017, she accepted a full-time software engineer position working on Kubernetes deployment tools such as Kraken. She has been an active member of Kubernetes Contributor Experience Special Interest Group, and drove the effort to improve the Kubernetes Contributor Guide with the aim of clarity for newcomers. Guinevere spoke at KubeCon North America, and is a featured speaker at SCaLE16x in March of 2018.
Jorge Castro (@castrojo) works as a Kubernetes Community Manager for Heptio. Feel free to contact him directly if you need help getting started contributing to Kubernetes.