Kubernetes
Contributors Workshop
Nabarun Pal
Nikhita Raghunath
Divya Mohan
Kubernetes Community Days Bengaluru
Slide 2
Slide 2 text
Our Experiences
Slide 3
Slide 3 text
Community
Slide 4
Slide 4 text
What you should know
● The K8s community is organized into subgroups as below:
● Special Interest Groups, SIGs
○ Subprojects
● Working Groups, WGs
● Committees
● User Groups
Slide 5
Slide 5 text
What you should know
Slide 6
Slide 6 text
Special Interest Group
SIG sounds like of like a
meetup group, and it both isn't
and also is.
Each SIG is its own
sub-community in Kubernetes,
because it's a huge project and
we can't all be in one giant
pool of 2000 contributors.
Slide 7
Slide 7 text
Types of SIGs
1. Feature Areas
2. Plumbing
3. Meta
4. Docs
5. Cloud Provider
Working Groups and Subprojects
Working Groups: inter-SIG efforts
Subprojects: focus areas for SIGs
For specific:
● Tools (ex. Kubectl)
● Goals (ex. Code Cleanup, Contributor Site)
● Areas (ex. Machine Learning)
Slide 15
Slide 15 text
Working Groups
wg-api-expression
wg-component-standard
wg-data-protection
wg-iot-edge
wg-k8s-infra
wg-multitenancy
wg-naming
wg-policy
wg-reliability
wg-structured-logging
Slide 16
Slide 16 text
Subprojects
Usually found in
kubernetes-sigs/
namespace
Examples include...
enhancements
prod-readiness
kubectl
kustomize
kubectl
kubespray
Slide 17
Slide 17 text
User Groups
No codebase ownership
Topics of interest shared
across large groups of users
ug-big-data
ug-vmware-users
Slide 18
Slide 18 text
Committees
project governance oriented
join by invite or election only
there are currently three
committees:
Steering
Security Response
Code of Conduct
https://github.com/kubernetes/community/blob/master/README.md#governance
Slide 19
Slide 19 text
Picking the right SIG
1. Figure out what specific projects/areas you want to work on.
2. Find out which SIG/WG/subproject covers that
a. Ask on #sig-contribex
b. Go to the SIG intros at this conference
3. Join that SIG/subproject
a. If joining a WG/subproject, also join a SIG
Slide 20
Slide 20 text
How Do I Join A SIG?
1. Join the sig-specific mailing list.
This is open to anyone.
2. That’s it. You’ve joined a SIG.
Slide 21
Slide 21 text
Quick reference
Governance reference
Project Group List
sigs.yaml configuration file
Slide 22
Slide 22 text
Communication
Slide 23
Slide 23 text
Before we get started
Slide 24
Slide 24 text
Keeping in touch
● How do we do it?
○ Mailing List
○ Slack
○ Zoom meetings
● Some async initiatives:
○ Alternating between Slack threads & Zoom meetings in #sig-contribex
○ APAC friendly timings introduced for Release team meetings
○ More talk on Slack and Mailing Lists, less reliance on Meetings
Slide 25
Slide 25 text
Meetings
Slide 26
Slide 26 text
Slack - emojis!
Slide 27
Slide 27 text
India specific Slack channels
Step 1
Join the Slack -> slack.k8s.io
Step 2
Find #in-dev, #in-users, #in-events
Step 3
Say Hi! 👋, introduce yourself and send emojis!!!
When should you file a KEP?
● Significant changes to Kubernetes
features
● Changes involving multiple stakeholders
● Notable policy changes in the codebase
● Changes impacting the UX of
Kubernetes
Slide 46
Slide 46 text
When should you file a KEP?
● Significant changes to Kubernetes
features
● Changes involving multiple stakeholders
● Notable policy changes in the codebase
● Changes impacting the UX of
Kubernetes
● Test fixes
● Code Refactors
● Increasing log verbosity
● Adding more events
● Performance improvements not changing
UX
Slide 47
Slide 47 text
KEP Reading Club
Slide 48
Slide 48 text
Walkthrough of the
Kubernetes codebase
Slide 49
Slide 49 text
Core Repository
Most SIGs are stakeholders in the monolith.
Areas of SIG ownership can be found in
https://git.k8s.io/community/sigs.yaml
kubernetes/kubernetes
Slide 50
Slide 50 text
How to find your first
issue?
Slide 51
Slide 51 text
Good first issues
https://go.k8s.io/good-first-issue
Source: Bob Killen/Sahdev Zala on #sig-contribex
Slide 52
Slide 52 text
For the initiated
https://go.k8s.io/help-wanted
Source: Bob Killen/Sahdev Zala on #sig-contribex
Slide 53
Slide 53 text
Refactor, document code, write
tests and help fix test failures!
Slide 54
Slide 54 text
…. and a lot more ways
https://k8s.dev/docs/guide/non-code-contributions/
Slide 55
Slide 55 text
No content
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
Getting involved
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
Mentorship Programs
Slide 60
Slide 60 text
Mentorship Programs
● Meet Our Contributors - #meet-our-contributors
● Group Mentoring
● Google Summer of Code
● Outreachy
● Linux Foundation LFX Mentorship Program
Slide 61
Slide 61 text
Meet an awesome mentee!
Slide 62
Slide 62 text
No content
Slide 63
Slide 63 text
Release Shadow
program
Slide 64
Slide 64 text
Kubernetes Release Team
● Periodically releases a new version of Kubernetes
● Collects features in a time frame and tracks whether the features go past the line
● Ensures quality of the artefacts generated as part of the release
Image Source: https://git.k8s.io/sig-release/release-team/release-team.svg
Slide 65
Slide 65 text
What is the Release Shadow program?
● Follows the apprenticeship model
● Learn by doing and tagging along the lead
● Helps contributors broaden their area of knowledge
https://git.k8s.io/sig-release/release-team/shadows.md
Slide 66
Slide 66 text
How can I be a shadow?
Slide 67
Slide 67 text
What do I need to do?
1. Read the role handbooks to understand the responsibilities of each role
2. Ask on #sig-release if in doubt
3. Fill up the form
4. Wait for the selection announcements
Slide 68
Slide 68 text
Contributor License Agreement
● Contributions to the Kubernetes project require you to sign a CLA
● Required to determine the legal status of contributions
● There are two kinds of CLA:
1. Individual
2. Corporate
Note: Check in with your organization if you would need to sign the corporate CLA
https://git.k8s.io/community/CLA.md
Slide 69
Slide 69 text
BREAK!!!
Slide 70
Slide 70 text
Labels
How to talk to the Kubernetes automation
Slide 71
Slide 71 text
No content
Slide 72
Slide 72 text
lgtm
kind/bug
sig/auth
approved
Slide 73
Slide 73 text
https://issues.k8s.io
Slide 74
Slide 74 text
Required Labels for Issues
On creation:
sig/
kind/
Added later:
priority/
https://go.k8s.io/bot-commands
Slide 75
Slide 75 text
The SIG Label
Label
sig/auth
sig/testing
sig/api-machinery
sig/node
Bot command
/sig auth
/sig testing
/sig api-machinery
/sig node
Slide 76
Slide 76 text
Adding a label to a pull request or issue
Slide 77
Slide 77 text
The Kind Label
kind/bug kind/failing-test
kind/feature kind/flake
kind/documentation kind/cleanup
kind/design
Example bot command: /kind feature
Additional Labels for Pull Requests
release-note
approved
lgtm
cherry-pick-approved (only during certain stages of the release cycle)
Slide 80
Slide 80 text
https://prs.k8s.io
Slide 81
Slide 81 text
No content
Slide 82
Slide 82 text
Labels can help you find your first issue!
help wanted
● Low Barrier to Entry
● Clear Task
good first issue
● Vetted for new contributors
● Provides ongoing support and guidance
Slide 83
Slide 83 text
No content
Slide 84
Slide 84 text
No content
Slide 85
Slide 85 text
Bots
Slide 86
Slide 86 text
Say Hi to k8s-ci-robot!
@TheNikhita
Slide 87
Slide 87 text
Command
/assign @username
/retest
/close
/cc @username
Result
Assigns a Reviewer
Reruns failed tests
Closes PR
Tags a user
Other bot commands
Slide 88
Slide 88 text
PRs and Bots: GitHub PR Flow
Slide 89
Slide 89 text
PRs and Bots: Kubernetes PR Flow
1. You submit Pull Request (PR)
2. You add labels & notes
3. Bots validate and comment on the PR
release-note cncf-cla: no needs-ok-to-test needs-kind needs-sig
4. You add more labels & notes & resolve review comments
5. SIGs & OWNERS review and /approve → approved
6. Other contributors /lgtm → lgtm
7. Tests pass
8. Tide merges the PR
https://prow.k8s.io/command-help
Slide 90
Slide 90 text
Command
/assign @username
/retest
/close
/cc @username
Result
Assigns a Reviewer
Reruns failed tests
Closes PR
Tags a user
PRs and Bots: Useful Commands
Slide 91
Slide 91 text
PRs and Bots: Reviewers/Approvers
Slide 92
Slide 92 text
PRs and Bots: Reviewers/Approvers
● Attach /sig label
● Contact your mentor(s)
● Contact the SIG
○ attend SIG meeting
○ ask Slack
○ send email to list
● Contact OWNERS
Slide 93
Slide 93 text
PRs and Bots: Test Results
Slide 94
Slide 94 text
PRs and Bots: Following Up
Answer questions
Resolve:
Bot messages
Code comments
Test failures