Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 _