Slide 1

Slide 1 text

Kubernetes Code Contribution 入門 〜 K 8 sにコードコントリビューションをしよう! 〜 Kubernetes Novice Tokyo # 3 2 ( 2 0 2 4 / 5 / 2 1 ) @bells 1 7

Slide 2

Slide 2 text

▶ @bells 1 7 ▶ Software Engineer@ 3 -shake inc. ▶ kubernetes & kubernetes-csi member ▶ Kubernetes SIG-Docs ja localization reviewer ▶ Kubernetes Internal Organizer ▶ Kubernetes Novice Tokyo Organizer ▶ #kubenews ▶ X(Twitter): @bells 1 7 _ ▶ GitHub: @bells 1 7

Slide 3

Slide 3 text

Kubernetesへのコントリビューション 方 法を考える

Slide 4

Slide 4 text

Kubernetesへのコントリビューション ▶ Stack Over fl ow/SlackなどでKubernetesに関する質問に答える ▶ 何かしらのバグに遭遇したらissueを 立 ててみる ▶ ドキュメントを書く/翻訳する ▶ コードを書いてPRを作る/PRをレビューする ▶ etc …

Slide 5

Slide 5 text

Kubernetesへのコントリビューション ▶ Stack Over fl ow/SlackなどでKubernetesに関する質問に答える ▶ 何かしらのバグに遭遇したらissueを 立 ててみる ▶ ドキュメントを書く/翻訳する ▶ コードを書いてPRを作る/PRをレビューする ▶ etc … まず先にこのあたりを見てきましょう

Slide 6

Slide 6 text

Stack Over fl ow/Slackなどで Kubernetesに関する質問に答える

Slide 7

Slide 7 text

Stack Over fl owで質問に答える

Slide 8

Slide 8 text

Kubernetes Slackで質問に答える

Slide 9

Slide 9 text

Stack Over fl ow/Slackなどで Kubernetesに関する質問に答える ▶ こんな経験が積める + 自 分の知識の整理と理解を深めるきっかけになる (質問にちゃんと答えるために確認してから答えたりする) + Kubernetesに関するいろんな知 見 を深めるきっかけになる → 自 分が知らないことでも「ちょっと 見 てみるか〜」という 気分でやってみたり

Slide 10

Slide 10 text

何かしらのバグに遭遇したらissueを 立 ててみる

Slide 11

Slide 11 text

kubernetes-csi/external-provisionerの例

Slide 12

Slide 12 text

kubernetes/prowの例

Slide 13

Slide 13 text

何かしらのバグに遭遇したら issueを 立 ててみる ▶ こんな経験が積める + issueを 立 てるためにちょっとコードを読んでみたり、 いつもより深い動作確認でテストしてみたりして普段とは違う経験を するきっかけになる + 自 分の 立 てたissueに対して実際にPRが作られたりするのは結構楽しい (OSS開発に参加した気分を感じられる) + 次は 自 分でPR作ってみようかな〜という気持ちにさせてくれる

Slide 14

Slide 14 text

ドキュメントを書く/翻訳する

Slide 15

Slide 15 text

ドキュメントを書く/翻訳する よく考えたら新規のドキュメント書いたことなかった…

Slide 16

Slide 16 text

ドキュメント翻訳に関するissueを 立 てたり

Slide 17

Slide 17 text

ドキュメント翻訳のPRを作ったり

Slide 18

Slide 18 text

他の 方 のPRをレビューしたり

Slide 19

Slide 19 text

ドキュメントを書く/翻訳する ▶ こんな経験が積める + 翻訳/レビューするにあたって英語ドキュメントをしっかり 読むことになるので、Kubernetesのいろんな機能について ちゃんと勉強するきっかけになる (場合によっては対象機能の動作確認などをして確認したり) + 直接PRを作って翻訳活動に参加できるので、OSSにダイレクトに 貢献できる + KubernetesのOSSサイクルやCIツール(prow)などについて学べる + 英語に触れるきっかけになる (ちなみに僕は英語苦 手 )

Slide 20

Slide 20 text

翻訳活動の詳しいことは下記の資料をみてください! https://speakerdeck.com/nasa 9 0 8 4 /kubernetes-sig-docs-localization-subproject-ja

Slide 21

Slide 21 text

コードを書いてPRを作る/PRをレビューする 今日はこれが本題!

Slide 22

Slide 22 text

Kubernetes Code Contributionの 基本的な流れ ▶ 取り組むissueを 立 てる/ 見 つける (新規機能の場合はKEPを作り承認を得る) ▶ 実装にあたって必要なことを調べる ▶ 実装してPRを作成 ▶ レビューしてもらってlgtm/approveをもらう ▶ mergeされる

Slide 23

Slide 23 text

新規機能開発はKEP承認などが必要でハードルが 高 い こういうなっがいProposalを書いて承認をもらう必要がある

Slide 24

Slide 24 text

good fi rst issue/help wantedは難易度が 高 いのもそこそこ多い issueの中身見ると「初心者には何をやっていいかわからん」ってなるの多い

Slide 25

Slide 25 text

Kubernetes本体以外のリポジトリだと割とやりやすいのが多い まずコードベースが圧倒的に小さいのでコードに手を加えやすい

Slide 26

Slide 26 text

Deprecated対応みたいなやつも 手 を出しやすい エディタ開いてWarning出るやつを片っ端から直してくだけ

Slide 27

Slide 27 text

GitHub Projectからissueを探すのも良さそう

Slide 28

Slide 28 text

開発環境改善系もちょくちょくissueが 見 つかる Linuxでは動くけどMacだとうまく動かん!みたいなやつがちょいちょい

Slide 29

Slide 29 text

Contextual Logging周りはマジで 人足 りてない 地味な系だからかこれメインであんまり作業してくれる人少ないのかもしれん

Slide 30

Slide 30 text

PRとか作ってたりするとたまにバグっぽいのも 見 つける これはKubernetes本体じゃなくてCIツールのprowのissueだけど

Slide 31

Slide 31 text

たまにはKEPいらなさそうなfeature系のPR作ってみたり これは元PRがあったけど止まってたので引き継いで新しいPR出してみた例

Slide 32

Slide 32 text

時にはレビュー依頼されてlgtmしたり

Slide 33

Slide 33 text

ちなみに英語でのやり取りは下記を使えば 割となんとかなる ▶ 生 成AI: ChatGPT, Claudeなど ▶ 翻訳ツール: Google翻訳, DeepLなど ▶ その他: Grammarlyなど 英語苦 手 なのでこれらのツールに頼りまくってます

Slide 34

Slide 34 text

実装にあたって必要なことを調べる

Slide 35

Slide 35 text

例えばContextual Loggingとかだとドキュメントがあるので読む

Slide 36

Slide 36 text

後は関連しそうなPRを読んだり

Slide 37

Slide 37 text

中には1からコードを読むしか無いのもある

Slide 38

Slide 38 text

レビューしてもらってlgtm/approveをもらう

Slide 39

Slide 39 text

各approverからapproveをもらう ▶ Kubernetesでは各ディレクトリ毎にOWNER ファイルが設置してあり、approveできる 権限者が設定されている ▶ PRでは、変更内容に応じて各approverから approveをもらう必要がある (GitHubで 言 うCODEOWNERSみたいなやつ) ↓ そのためPRはできるだけ単 一 のapproverに 閉じる形で 小 さいPRにしたほうが マージまでがスムーズ

Slide 40

Slide 40 text

変更範囲が多いとこんな感じになる /assign の人たち全員からapproveしてもらう必要があって大変

Slide 41

Slide 41 text

マージされるとSlackで褒められるくらい調整作業は 大 変みたい

Slide 42

Slide 42 text

まとめ

Slide 43

Slide 43 text

まとめ ▶ 今だと例えばDeprecated対応やContextual Logging対応などが取り組み始めやすい Kubernetesに対するコードコントリビューションかなと思います ▶ Kubernetes本体以外のsigsやcsiなどは開発者が 足 りてないリポジトリも多いので、 そのあたりだとfeature系の開発も取り組みやすくて良いと思います ▶ 実際に「コントリビュートしたいけどネタが 見 つからない」って 人 はDMなどで ご連絡ください! ▶ また、公式ドキュメントに対する翻訳活動も 人 が少ないので、活動に参加してくださる 方 をお待ちしています!

Slide 44

Slide 44 text

公式が出してるオンボーディング資料もあります https://www.kubernetes.dev/docs/onboarding/

Slide 45

Slide 45 text

コントリビューションのための zenn scrapを作ってるので 興味があれば 見 てみてください https://zenn.dev/bells 1 7 /scraps/df 5 9 9 c 3 e 9 5 e 8 2 6 ▶ コントリビューションにあたって 目 を通すもの ▶ 知っておくと便利なツール ▶ テストなどの実 行方 法 などなどコントリビューションに役 立 つかも しれない情報をメモしています!

Slide 46

Slide 46 text

参考資料 ▶ https://speakerdeck.com/nasa 9 0 8 4 /kubernetes-sig-docs-localization-subproject-ja ▶ https://github.com/kubernetes/kubernetes ▶ https://www.kubernetes.dev/docs/ ▶ https://github.com/kubernetes/community/blob/master/contributors/devel/ development.md?plain= 0 ▶ https://zenn.dev/bells 1 7 /scraps/df 5 9 9 c 3 e 9 5 e 8 2 6

Slide 47

Slide 47 text

画像引 用 元 ▶ https://github.com/kubernetes/community/tree/master/icons ▶ https://github.com/kubernetes/kubernetes/tree/master/logo ▶ https://github.com/cncf/artwork/tree/master/projects/kubernetes ▶ https://github.com/kubernetes/kubeadm/tree/main/logos

Slide 48

Slide 48 text

Thanks / Question? ▶ @bells 1 7 ▶ Slide: https://speakerdeck.com/bells 1 7 ▶ @bells 1 7 _