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 full-size slide

  2. Our Experiences

    View full-size slide

  3. 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 full-size slide

  4. What you should know

    View full-size slide

  5. 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 full-size slide

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

    View full-size slide

  7. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. 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 full-size slide

  14. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  17. 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 full-size slide

  18. 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 full-size slide

  19. 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 full-size slide

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

    View full-size slide

  21. Communication

    View full-size slide

  22. Before we get started

    View full-size slide

  23. 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 full-size slide

  24. Slack - emojis!

    View full-size slide

  25. 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 full-size slide

  26. A Tour of the
    Kubernetes
    Repositories

    View full-size slide

  27. 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 full-size slide

  28. Docs/Website
    k/website - docs

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  32. 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 full-size slide

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

    View full-size slide

  34. kubernetes-sigs
    subprojects

    View full-size slide

  35. What is the process of
    adding a feature?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  40. 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 full-size slide

  41. 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 full-size slide

  42. KEP Reading Club

    View full-size slide

  43. Walkthrough of the
    Kubernetes codebase

    View full-size slide

  44. 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 full-size slide

  45. How to find your first
    issue?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  50. Getting involved

    View full-size slide

  51. Mentorship Programs

    View full-size slide

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

    View full-size slide

  53. Meet an awesome mentee!

    View full-size slide

  54. Release Shadow
    program

    View full-size slide

  55. 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 full-size slide

  56. 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 full-size slide

  57. How can I be a shadow?

    View full-size slide

  58. 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 full-size slide

  59. 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 full-size slide

  60. Labels
    How to talk to the Kubernetes automation

    View full-size slide

  61. lgtm
    kind/bug
    sig/auth
    approved

    View full-size slide

  62. https://issues.k8s.io

    View full-size slide

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

    View full-size slide

  64. 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 full-size slide

  65. Adding a label to a pull request or issue

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  69. https://prs.k8s.io

    View full-size slide

  70. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  73. PRs and Bots: GitHub PR Flow

    View full-size slide

  74. 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 full-size slide

  75. 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 full-size slide

  76. PRs and Bots: Reviewers/Approvers

    View full-size slide

  77. 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 full-size slide

  78. PRs and Bots: Test Results

    View full-size slide

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

    View full-size slide

  80. Hands-on session

    View full-size slide

  81. Welcome onboard!

    View full-size slide