Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KCD BLR Kubernetes Contributor Workshop

KCD BLR Kubernetes Contributor Workshop

Nabarun Pal

June 24, 2021
Tweet

More Decks by Nabarun Pal

Other Decks in Technology

Transcript

  1. Kubernetes
    Contributors Workshop
    Nabarun Pal
    Nikhita Raghunath
    Divya Mohan
    Kubernetes Community Days Bengaluru

    View Slide

  2. Our Experiences

    View Slide

  3. Community

    View Slide

  4. What you should know
    ● The K8s community is organized into subgroups as below:
    ● Special Interest Groups, SIGs
    ○ Subprojects
    ● Working Groups, WGs
    ● Committees
    ● User Groups

    View Slide

  5. What you should know

    View Slide

  6. 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.

    View Slide

  7. Types of SIGs
    1. Feature Areas
    2. Plumbing
    3. Meta
    4. Docs
    5. Cloud Provider

    View Slide

  8. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 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)

    View Slide

  15. 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

    View Slide

  16. Subprojects
    Usually found in
    kubernetes-sigs/
    namespace
    Examples include...
    enhancements
    prod-readiness
    kubectl
    kustomize
    kubectl
    kubespray

    View Slide

  17. User Groups
    No codebase ownership
    Topics of interest shared
    across large groups of users
    ug-big-data
    ug-vmware-users

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 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.

    View Slide

  21. Quick reference
    Governance reference
    Project Group List
    sigs.yaml configuration file

    View Slide

  22. Communication

    View Slide

  23. Before we get started

    View Slide

  24. 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

    View Slide

  25. Meetings

    View Slide

  26. Slack - emojis!

    View Slide

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

    View Slide

  28. View Slide

  29. View Slide

  30. A Tour of the
    Kubernetes
    Repositories

    View Slide

  31. 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)

    View Slide

  32. Docs/Website
    k/website - docs

    View Slide

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

    View Slide

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

    View Slide

  35. SIG Repos
    k/release
    k/federation
    k/autoscaler

    View Slide

  36. 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

    View Slide

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

    View Slide

  38. kubernetes-sigs
    subprojects

    View Slide

  39. BREAK!!!

    View Slide

  40. What is the process of
    adding a feature?

    View Slide

  41. GitHub Issue -
    Feature Request
    GitHub PR - Feature
    Implementation

    View Slide

  42. GitHub Issue -
    Feature Request
    GitHub PR - Feature
    Implementation
    Design

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. 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

    View Slide

  47. KEP Reading Club

    View Slide

  48. Walkthrough of the
    Kubernetes codebase

    View Slide

  49. 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

    View Slide

  50. How to find your first
    issue?

    View Slide

  51. Good first issues
    https://go.k8s.io/good-first-issue
    Source: Bob Killen/Sahdev Zala on #sig-contribex

    View Slide

  52. For the initiated
    https://go.k8s.io/help-wanted
    Source: Bob Killen/Sahdev Zala on #sig-contribex

    View Slide

  53. Refactor, document code, write
    tests and help fix test failures!

    View Slide

  54. …. and a lot more ways
    https://k8s.dev/docs/guide/non-code-contributions/

    View Slide

  55. View Slide

  56. View Slide

  57. Getting involved

    View Slide

  58. View Slide

  59. Mentorship Programs

    View Slide

  60. Mentorship Programs
    ● Meet Our Contributors - #meet-our-contributors
    ● Group Mentoring
    ● Google Summer of Code
    ● Outreachy
    ● Linux Foundation LFX Mentorship Program

    View Slide

  61. Meet an awesome mentee!

    View Slide

  62. View Slide

  63. Release Shadow
    program

    View Slide

  64. 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

    View Slide

  65. 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

    View Slide

  66. How can I be a shadow?

    View Slide

  67. 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

    View Slide

  68. 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

    View Slide

  69. BREAK!!!

    View Slide

  70. Labels
    How to talk to the Kubernetes automation

    View Slide

  71. View Slide

  72. lgtm
    kind/bug
    sig/auth
    approved

    View Slide

  73. https://issues.k8s.io

    View Slide

  74. Required Labels for Issues
    On creation:
    sig/
    kind/
    Added later:
    priority/
    https://go.k8s.io/bot-commands

    View Slide

  75. The SIG Label
    Label
    sig/auth
    sig/testing
    sig/api-machinery
    sig/node
    Bot command
    /sig auth
    /sig testing
    /sig api-machinery
    /sig node

    View Slide

  76. Adding a label to a pull request or issue

    View Slide

  77. The Kind Label
    kind/bug kind/failing-test
    kind/feature kind/flake
    kind/documentation kind/cleanup
    kind/design
    Example bot command: /kind feature

    View Slide

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

    View Slide

  79. Additional Labels for Pull Requests
    release-note
    approved
    lgtm
    cherry-pick-approved (only during certain stages of the release cycle)

    View Slide

  80. https://prs.k8s.io

    View Slide

  81. View Slide

  82. 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

    View Slide

  83. View Slide

  84. View Slide

  85. Bots

    View Slide

  86. Say Hi to k8s-ci-robot!
    @TheNikhita

    View Slide

  87. Command
    /assign @username
    /retest
    /close
    /cc @username
    Result
    Assigns a Reviewer
    Reruns failed tests
    Closes PR
    Tags a user
    Other bot commands

    View Slide

  88. PRs and Bots: GitHub PR Flow

    View Slide

  89. 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

    View Slide

  90. Command
    /assign @username
    /retest
    /close
    /cc @username
    Result
    Assigns a Reviewer
    Reruns failed tests
    Closes PR
    Tags a user
    PRs and Bots: Useful Commands

    View Slide

  91. PRs and Bots: Reviewers/Approvers

    View Slide

  92. 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

    View Slide

  93. PRs and Bots: Test Results

    View Slide

  94. PRs and Bots: Following Up
    Answer questions
    Resolve:
    Bot messages
    Code comments
    Test failures

    View Slide

  95. Hands-on session

    View Slide

  96. View Slide

  97. View Slide

  98. Questions?

    View Slide

  99. Welcome onboard!

    View Slide