Slide 1

Slide 1 text

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

Slide 8

Slide 8 text

Feature Area SIGs sig-auth sig-apps sig-autoscaling sig-cli sig-multicluster sig-network sig-node sig-scalability sig-scheduling sig-service-catalog sig-storage sig-ui

Slide 9

Slide 9 text

“Plumbing” SIGs sig-api-machinery sig-cluster-lifecycle sig-instrumentation

Slide 10

Slide 10 text

Meta sig-architecture sig-contributor-experience sig-release sig-testing

Slide 11

Slide 11 text

Documentation & Website sig-docs sig-docs-blog sig-security-docs

Slide 12

Slide 12 text

Cloud Provider Individual cloud providers are subprojects of this SIG. kubernetes-cloud-provider provider-alibaba-cloud provider-aws provider-azure

Slide 13

Slide 13 text

Cloud Provider provider-gcp provider-huaweicloud provider-ibmcloud provider-openstack provider-vsphere

Slide 14

Slide 14 text

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!!!

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

A Tour of the Kubernetes Repositories

Slide 31

Slide 31 text

Project k/community k/enhancements k/steering k/test-Infra k/perf-tests Contributor-experience Release, Architecture Steering Committee Testing Scalability, Testing Repository Associated SIG(s)

Slide 32

Slide 32 text

Docs/Website k/website - docs

Slide 33

Slide 33 text

Developer Tools k/sample-controller k/sample-apiserver k/code-generator k/k8s.io k/kubernetes-template-project

Slide 34

Slide 34 text

Staging Repos api apiextensions-apiserver apimachinery apiserver client-go code-generator kube-aggregator metrics sample-apiserver

Slide 35

Slide 35 text

SIG Repos k/release k/federation k/autoscaler

Slide 36

Slide 36 text

Cloud Provider Repos k/cloud-provider-azure k/cloud-provider-gcp k/cloud-provider-openstack k/cloud-provider-alibaba-cloud k/cloud-provider-vsphere k/cloud-provider-aws

Slide 37

Slide 37 text

Products & Tools kubeadm kubectl kops kompose ingress-nginx minikube dashboard kube-openapi

Slide 38

Slide 38 text

kubernetes-sigs subprojects

Slide 39

Slide 39 text

BREAK!!!

Slide 40

Slide 40 text

What is the process of adding a feature?

Slide 41

Slide 41 text

GitHub Issue - Feature Request GitHub PR - Feature Implementation

Slide 42

Slide 42 text

GitHub Issue - Feature Request GitHub PR - Feature Implementation Design

Slide 43

Slide 43 text

KEP! Kubernetes Enhancement Proposal https://git.k8s.io/enhancements

Slide 44

Slide 44 text

KEP! Kubernetes Enhancement Proposal https://git.k8s.io/enhancements

Slide 45

Slide 45 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

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

Slide 78

Slide 78 text

priority/ label priority/critical-urgent priority/important-soon priority/important-longterm priority/backlog priority/awaiting-evidence Example bot command: /priority critical-urgent

Slide 79

Slide 79 text

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

Slide 95

Slide 95 text

Hands-on session

Slide 96

Slide 96 text

No content

Slide 97

Slide 97 text

No content

Slide 98

Slide 98 text

Questions?

Slide 99

Slide 99 text

Welcome onboard!