Kubernetes Upstream Training in Japanの取り組みの紹介

私たちは、Kubernetes Upstream Training in Japanのオーガナイザーチームです。 チームは、Kubernetesへのコントリビューションを続けるメンバーで構成され、その中にはReviewerやApprover、Chairといった役割を担う人々も含まれています。

私たちの目標は、Kubernetesのコントリビューターを増やし、コミュニティの成長を促進することです。Kubernetesコミュニティは親切で協力的ですが、初めての貢献はややハードルが高いと感じる方もいます。私たちのトレーニングプログラムは、そのハードルを下げ、初心者でもスムーズに参加できる環境を提供することを目的としています。

Kubernetes Upstream Training in Japanとは?

Kubernetes Upstream Training in Japanは2019年から始まり、年に1〜2回のペースで開催されています。 当初、Kubernetes Upstream TrainingはKubeConのco-locatedイベント(Kubernetes Contributor Summit)の中で実施されていましたが、同様のイベントを日本でも行って日本人のコントリビューターを増やしたいという思いから、私たちはKubernetes Upstream Training in Japanを立ち上げました。

パンデミック以前は対面形式で行われていましたが、2020年以降はオンラインで開催しています。 トレーニングでは、Kubernetesにまだコントリビューションをしたことがない方々に向けて、以下のような内容を提供しています。

  • Kubernetesコミュニティの紹介
  • Kubernetesのコードベースの紹介と、PRの作成方法
  • 言語など参加障壁を低減するための工夫や勇気付け
  • 開発環境のセットアップ方法
  • kubernetes-sigs/contributor-playgroundを使用したハンズオン

プログラムの最初に、なぜKubernetesにコントリビューションするのか、だれがKubernetesにコントリビューションできるのかを伝えます。 Kubernetesに貢献することは、世界中にインパクトのある貢献ができること、そしてKuberenetesコミュニティはみなさんからのコントリビューションを楽しみにしていることを伝えます!

KubernetesコミュニティやSIG、Working Groupについて説明します。 また、私たちが主にコミュニケーションのために用いるSlackやGitHub、メーリングリストについて説明します。 日本語を話す人の中には、英語によるコミュニケーションに障壁を感じる人もいます。 また、コミュニティに初めて参加する人は、どこでどのようなコミュニケーションが行われているのか知る必要があります。 もちろん、私たちがトレーニングの中で最も大切にしていることは第一歩を踏み出すことです!

次に、Member、Reviewer、Approver、Tech leadやChairといった役割や責任について説明します。

その後、Kubernetesのコードベースの構成、主要なリポジトリ、PRの作成方法、Prowを使ったCI/CDの仕組みなどを解説します。 PRが作成されてからマージされるまでのプロセスについて詳しく説明します。

いくつかの講義を行った後、実際に参加者には、kubernetes-sigs/contributor-playgroundを使用したハンズオンを行い、簡単なPRの作成を体験してもらいます。 これにより、Kubernetesへのコントリビューションの流れを実感してもらうことが目的です。

プログラムの最後には、ローカルでのクラスター構築、コードのビルド、効率的なテスト実行方法など、kubernetes/kubernetesリポジトリに貢献するための具体的な開発環境のセットアップについても解説します。

参加者へのインタビュー

私たちのトレーニングプログラムに参加した方々にインタビューを行いました。 参加した理由や感想、そして今後の目標について伺いました。

Keita MochizukiさんNTT DATA Group Corporation

Keita Mochizukiさんは、Kubernetesや周辺のプロジェクトへ継続的に貢献しているコントリビューターです。 Keitaさんは、コンテナセキュリティのプロフェッショナルでもあり、最近は書籍の出版を行いました。 また、新規コントリビューターのためのロードマップを公開しており、これは新たなコントリビューターにとって非常に役立つものです。

Junya: なぜKubernetes Upstream Trainingに参加しようと思いましたか?

Keita: 実は私は2020年と2022年の2回参加しました。2020年はk8sに触れ始めたばかりで、社外活動に参加してみようと思い、偶然Twitterで見かけて申し込みました。しかし、当時は知識も浅く、OSSにPRを送ること自体が雲の上の存在のように感じていました。そのため、受講後の理解度は浅く、なんとなく「ふーん」という感覚でした。

2回目の2022年は、具体的にコントリビューションを始めようとしていたタイミングで、再度参加しました。この時は事前調査も行い、疑問点を講義中に解決できたので、非常に実りある時間を過ごせました。

Junya: 参加してみて、どのような感想を持ちましたか?

Keita: このトレーニングは参加者のスタンス次第でその意義が大きく変わるものだと感じました。トレーニング自体は一般的な解説と簡単なハンズオンで構成されていますが、このトレーニングに参加したからといって、すぐにコントリビューションができるかというと、そう簡単ではありません。しかし、もし事前に自分が今後コントリビューションを行うイメージをなんとなくでも持っていたり、具体的な疑問や課題を明確にしておくことができれば、講師の方々が実際にコミュニティで培った貴重なノウハウを活かして、それらに対して丁寧に応えてくれるため、大変有意義なトレーニングになると思います。

Junya: コントリビューションの目的は何ですか?

Keita: 最初のモチベーションは「Kubernetesの深い理解と実績の獲得」で、つまり「コントリビューションそのものが目的」でした。 現在はこれに加え、業務で発見したバグや制約への対応を目的にコントリビューションを行うこともあります。また、コントリビューション活動を通じて、ドキュメント化されていない仕様をソースコードから解析することへの抵抗が以前よりも少なくなりました。

Junya: コントリビューションをする中で、難しかったことは何ですか?

Keita: 最も難しかったのは、最初の一歩を踏み出すことでした。OSSへのコントリビューションには一定の知識やノウハウが必要となるため、本トレーニングをはじめ、さまざまなリソースの活用や人からのサポートが不可欠でした。その中で、「最初の一歩を踏み出すと、あとはどんどん前に進める」という言葉が強く印象に残っています。また、業務としてコントリビューションを続ける上で一番難しいのは、その成果を業績として示すことです。継続的に取り組むためには事業目標や戦略と関連付ける必要がありますが、UpstreamへのContributionは必ずしも短期的に業績に繋がるケースばかりではないため、そのことをマネージャーと十分に認識を合わせ、理解を得ることが重要であると考えています。

Junya: 今後の目標は何ですか?

Keita: よりインパクトのある領域にコントリビューションすることです。これまでは実績を得ることを主目的としていたため比較的小さな個々のバグ等を中心にコントリビューションを行うことが多かったのですが、今後はKubernetesのユーザーに対して影響度の高いものや、業務上の課題解決に繋がるものに挑戦の幅を広げたいと思っています。最近は自身がコードベースの開発や修正に携わった内容を公式ドキュメントに反映すると言うことも行っていますが、これも目標に向けての1歩だと考えています。

Junya: ありがとうございました!

Yoshiki FujikaneさんCyberAgent, Inc.

Yoshiki Fujikaneさんは、CNCFのSandboxプロジェクトのひとりであるPipeCDのメンテナのひとりです。 PipeCDのKubernetesサポートに関する新機能の開発の他に、コミュニティ運営や、各種技術カンファレンスへの登壇も積極的に行っています。

Junya: なぜKubernetes Upstream Trainingに参加しようと思いましたか?

Yoshiki: 参加した当時はまだ学生時代でした。その時はEKSを軽く触っていただけでしたが、なんか難しいけどかっこいいな!とk8s自体に興味をふんわりと持っている状態でした。当時は本当にOSSは雲の上の存在で、ましてやk8sのupstreamの開発なんてすごすぎて手の届かない存在だと思ってました。OSSにはもともと興味があったのですが、何から始めればいいのかわからなかったです。そんな時にkubernetes upstream trainingの存在を知って、k8sへのコントリビューションに挑戦してみようと思いました。

**Junya:**参加してみて、どのような感想を持ちましたか?

**Yoshiki:**OSSに関わるコミュニティがどんなものかを知るキッカケとしてとてもありがたいなと感じました。当時は英語力もそこまで高くなく、一次情報を見に行くことは自分にとって大きなハードルでした。 k8sは非常に大きなプロジェクトなので、コントリビューションに必要なことだけでなく、全体像があまりわかっていない状態でした。upstream trainingでは、コミュニティの構造を日本語で説明していただいたうえで、コントリビューションを実際に行うところまで一通り経験することができました。そこで、一次情報に関する情報を共有してくださったおかげで、その後自分なりにエントリーポイントとして利用しつつ追加で調査するキッカケづくりになって非常にありがたかったです。この経験から、一次情報を整理しつつ見る習慣を身につける必要があるなと思い、気になったものはGitHubのissueやdocsを漁りに見に行くようになりました。結果として、今はk8sのコントリビューション自体は行っていませんが、ここでの経験が別プロジェクトにコントリビューションするための素地となって役立っています。

Junya: 現在はどのような領域でコントリビューションを行っていますか?別のプロジェクトとはどのようなものでしょうか?

Yoshiki: 現在はk8sからは少し離れていて、CNCFのSandbox ProjectであるPipeCDのメンテナをやっています。PipeCDはCDツールの一つで、様々なアプリケーションプラットフォームに対してGitOpsスタイルでデプロイする機能を持っています。このツールは、元々サイバーエージェント内部で開発が始まりました。大小様々なチームが異なるプラットフォームを採用していた中で、統一的なUXで共通で利用できるCD基盤を実現するために開発が進められた背景があります。現在はk8s、AWS ECS、Lambda、Cloud Run、Terraformといったプラットフォームに対応しています。

Junya: PipeCDチームの中ではどのような役割ですか?

Yoshiki: 私はチーム内ではk8s周りの機能改善、開発をフルタイムの仕事として行っています。社内向けにPipeCDをSaaSとして提供しているため、そのサポートの一環として、新規機能の追加や既存機能の改善などを行うことが主な目的です。さらに、コード以外のコントリビューションとしては、PipeCD自体のコミュニティ拡大に向けて各種登壇であったり、コミュニティミーティングの運営を行っているところです。

Junya: Kubernetes周りの機能改善や開発とは具体的にどのようなものですか?

Yoshiki: PipeCDはKubernetesのGitOpsやProgressive Deliveryをサポートしていて、それらの機能開発などです。直近だと、マルチクラスタ上へのデプロイを効率化するための機能開発を進めているところです。

Junya: OSSコントリビューションを行うなかで、難しかったことはありますか?

Yoshiki: 機能の汎用性を維持しつつ、ユーザのユースケースを満たすように開発を進めることです。社内SaaSを運用する中で機能要望をいただいた際には、もちろん課題を解決するためにまずは機能追加を検討します。一方で、PipeCDはOSSとしてより多くのユーザに使ってもらうことも考えて行きたいです。なので、あるユースケースをもとに別のユースケースとしても使えるかどうかを考え、ソフトウェアとして汎用性をもたせるように意識しています。

Junya: 今後の目標を教えてください!

Yoshiki: PipeCDの機能拡張に力を入れていきたいと考えています。PipeCDは現在One CD for All のスローガンのもと開発を進めています。先程お伝えした通り、k8s、AWS ECS、Lambda、Cloud Run、Terraform の5種類に対応していますが、これ以外にもプラットフォームは存在しますし、今後も新たなプラットフォームが台頭してくるかもしれません。そこで、PipeCDは現在ユーザが独自に拡張できるようにプラグイン機構の開発を進めています。それに力を入れていきたいですね。また、k8sのマルチクラスタデプロイ向けの機能開発も進めているところで、これからもよりインパクトのあるコントリビューションをしていきたいと考えてます。

Junya: ありがとうございました!

Kubernetes Upstream Training の未来

私たちは、これからもKubernetes Upstream Training in Japanを継続して開催し、多くの新しいコントリビューターを迎えたいと考えています。 次回の開催は11月末のCloudNative Days Winter 2024の中での開催を予定しています。

また、私たちの目標は、これらのトレーニングプログラムを日本だけでなく、世界中に広げていくことです。 Kubernetesは今年で10周年を迎えましたが、コミュニティがこれまで以上に活発になるためには、世界中の人々が貢献し続けることが重要です。 現在、Upstream Trainingはいくつかの地域で開催されていますが、私たちはさらに多くの地域での開催を目指しています。

多くの人々がKubernetesコミュニティに参加し、貢献することで、私たちのコミュニティがますます活気づくことを楽しみにしています!