はじめに
この記事は、Kubernetes3 Advent Calendar 2019 5日目のエントリーです。
Kubernetesを語る上で、元来Googleから引き継がれた思想やコンテナ技術に関する利点は当然欠かせないものです。
しかし、Kubernetesがここまで発展したのは技術面だけにとどまらず、大きなエコシステムであるコミュニティの存在あっての成果でもあります。
そこで、今回はKubernetesを支えるさまざまな取り組みの話についてまとめて紹介します。
Kubernetesのコミュニティ
Kubernetesにはいくつかコミュニティに種類があり、その全てはkubernetes/communityリポジトリに属しています。
- SIG(Super Interest Group)
- UG(User Group)
- WG(Working Group)
この辺の話はLadicleさんのアドベントカレンダー記事にも関連する部分があるのでぜひ合わせてお読みください。
さて、SIGはその数からしてもかなりの存在があり、列挙してもしきれません。全部のリストを見たい方は、こちらを御覧ください。
リストを見た方はわかると思いますが、チェア(各グループを率いる人)の数はもちろん、ベンダーニュートラルを意識して「異なる組織」の人間を「複数」配置している事がわかると思います。
複数のチェアを配置する意味
KubernetesはもともとGoogleが開発していたBorgという分散アプリケーション基盤の思想をベースにGolangで書き直したものです。そのため、当初はGoogleが率いるOSSとして立ち上がりました。
Kubernetes 1.0のリリースを皮切りに、GoogleとLinux Foundationによって立ち上げられた組織「CNCF(Cloud Native Computing Foundation)」がKubernetesの管理を受け持ち、ベンダーに依らないオープンなコミュニティとして再スタートを切りました。詳しい経緯はこちらのTechCrunchの記事にもあります。
これ以降、全てのユーザーが平等に貢献、コミュニティに参加できるように様々な取り組みが行われてきました。
※この辺の話は、以前、Docker/Kubernetes今昔の資料でも言及したことがあります。
このような取り組みの中で生まれた組織には、Kubernetesの特定のコンポーネントに特化して仕様を決めるSIGや、プロジェクト管理に関わるSIG、ドキュメントの整備をおこなうSIGなどさまざまな種類存在します。
SIGとKubernetesのかかわり
Kubernetesそのものは思想がはっきりしたプロダクトで、それ自体はどのベンダーにも依らない作りを目指しています。
しかし、実際に動かす上では
- AWSで動かすのに便利なKubernetes
- オンプレのベアメタル上で動かすのに便利なKubenretes
- L7ロードバランサーもKubernetesで管理したい
など、様々な利用シーンにおいてKubernetesを使う文脈が変わってきます(e.g. バッチ基盤としてKubernetesを使いたい場合、GPUを使いたい場合、アプリケーションを動かしたい場合など)。
Kubernetesはこうした要望のために非常に高い拡張性を備えており
- カスタムコントローラー
- カスタムスケジューラー
- カスタムメトリクス
などを自分のニーズに合わせて組み合わせることができます。
SIGではこうした「特定のユースケース」を想定した拡張コンポーネントの開発も行っており、AWSのALB Ingress ControllerやローカルでKubernetesを動かすためのkindなども含まれています。気になる方はSIGのリポジトリ一覧も参照されるとよいかと思います。
Kubernetesに貢献する == Kubernetesのコミュニティに貢献する
Kubernetesを作り上げるために立ち上げられたこうしたコミュニティでは、日々さまざまな議論、提案、取り組みが行われています。 逆に言えば、自分がKubernetesに関わりたいと思った場合、最初に入門すべきはKubernetesコミュニティと言えます。
先日Webエンジニア業界に感じた違和感という記事が盛り上がりましたが、Kubernetesだけに限って言えば「作った人」と「それを使う人」、さらに、「それを広める人」がみんなで一体となって1つの大きなものを作り上げるコミュニティが出来上がっています。
あとはそれをどう使うか、どう動かすかだけの話で、入門したい人はドキュメントのTypoを直すところからでも歓迎されています。
さいごに
Kubernetes 公式ドキュメントでは、日本語翻訳に関わっていただける方を募集しています!
技術は苦手だけど興味はあるし、ローカライズにも興味があるという方、Kubernetesを完全に理解されている方、ドキュメント日本語がなくて困っている箇所があるのでIssueを立てたい(要望を出したい)という方、どんな方でも募集しています。