Japan
サイト内の現在位置を表示しています。
NECが開発貢献するオープンソース
OSS貢献活動Kubernetesに対するNECの取り組み
NEC では、Kubernetes (クーバネティス) コミュニティにおいて開発貢献しており、そこでの成果やノウハウを活用しながら、Kubernetes をベースに様々な OSS を組み合わせたコンテナ実行基盤である Red Hat OpenShift Container Platform (以降「OpenShift」と表記) や、Kubernetes を活用したサービスを提供しております。 ここでは、Kubernetes に対するNECの取り組みを紹介します。
Kubernetes とは
現在 (2024年4月時点)、クラウド向けアプリケーションでは動作環境をコンパクトにパッケージングしたコンテナという単位での稼働が増えつつあり、Kubernetes はそのようなコンテナを管理するコンテナオーケストレーターと呼ばれるソフトウェアのデファクトスタンダードです。コンテナの状態管理やリクエストの量に応じた稼働数の調整、コンテナの動作に必要なネットワークやストレージの提供、監視など、多種多様なコンテナを大規模システムとして稼働するために不可欠な機能を提供しており、クラウドコンピューティングを支える重要なオープンソースソフトウェア (以下、OSS) の一つになっています。
Kubernetes は、Google 社から2014年に OSS として公開されました。2015年に Google 社と Linux Foundation は、コンテナ技術の推進を目的とした団体である、Cloud Native Computing Foundation (以降「CNCF」と表記) を設立し、CNCF のプロジェクトとして、Kubernetes の開発を推進することになりました。この結果、多数のグローバル企業やエンジニアが開発に参加することになり、Kubernetes コミュニティは急速に成長し、2021年の時点で、総勢6万2千人のコントリビューターが参加する規模になっています。この Kubernetes コミュニティによるオープンイノベーションに支えられ、Kubernetes は日々強化され進化しています。また、CNCF は、Kubernetes のみならず、これらクラウドコンピューティング関連の様々な OSS プロジェクトをホストしています。
Kubernetes のエコシステム
クラウドコンピューティングを支えるプラットフォームは、Kubernetes を基盤として、サービスメッシュ、サーバレス、Function as a Service などのクラウドネイティブフレームワーク、コンテナレジストリや CI/CD、テスト環境などの開発環境、機械学習や人工知能などのインテリジェンス、エッジや IoT、WebAssembly など、様々な領域へと拡大しています。詳細は CNCF Cloud Native Interactive Landscape を参照ください。
また、Kubernetes の企業導入をサポートするため、Kubernetes や周辺の OSS をベースとした商用サービスや製品が様々なベンダーから提供され、導入の選択肢が広がっています。このようなベンダーは、開発者コミュニティにアイデアや課題、利用者の声をフィードバックしたり、改善のために自ら開発に参加したりして、Kubernetes をより良い OSS に進化させています。
Linux Foundation は、クラウドネイティブ技術を学ぶためのトレーニングや、企業や開発者が一定の技術力を有することを証明する認定制度を提供し、クラウドネイティブ技術を持つ開発者を育てる取り組みを推進することで、エコシステムの発展を推進しています。
CNCF は、Kubernetes の普及促進のため、KubeCon+CloudNativeCon を年2回定期開催(米国開催と欧州開催)しています。Kubernetes エコシステムのメンバーが一堂に会するイベントで、個人開発者や企業はイベントに参加して、その技術力をアピールするだけでなく、併設の Kubernetes Contributor Summit (米国開催 と 欧州開催) にて互いにアイデアを持ち寄り、直接議論しています。近年では数千から1万数千人の大規模なものとなるほか、リモート参加も可能となり、ますます活況を呈しています。また、世界各国で Kubernetes 関連のローカルイベントが開催されています。国内では、Kubernetes Meetup Tokyo コミュニティ主催のイベントが開催されています。
Kubernetes コミュニティ
Kubernetes コミュニティの構成
Kubernetes を開発している Kubernetes コミュニティ (開発者コミュニティ) は「中央集権化より分散化」「製品や会社よりコミュニティ」「プロセスの自動化」「排他的より包括的」「進化は停滞に勝る」の価値観を持ち、Kubernetes プロジェクトの継続的な成功の鍵となっています。これを実践するためのガバナンスアプローチが、コミュニティグループです。コミュニティグループは次のようなグループで構成され、様々な活動が行われています。
・Special Interest Group (SIG): Kubernetes プロジェクトは複数のサブプロジェクトから構成されていますが、Kubernetes コミュニティでは、複数の同一領域のサブプロジェクトを Special Interest Group(特定の技術領域について開発を行うエンジニアのグループ)と呼ばれるグループで束ね、サブプロジェクト(リポジトリ)毎に開発が進められています。
・ワーキンググループ: 複数領域にまたがる課題を解決するための複数 SIG を横断したグループ
・ユーザーグループ: 特定の技術や製品とKubernetes とを統合するためのテクニックとベストプラクティスについてアドバイスするグループ
・委員会: Kubernetes コミュニティの運営 (Steering Committee)、セキュリティ対応 (Security Response Committee)、行動規範 (Code of Conduct)
Special Interest Group (SIG) での開発
Kubernetes コミュニティには、多様な国や文化、立場などの背景を持つ開発者が自発的に参加して、コーディングやドキュメンテーション、フィードバックなど様々な貢献を行っています。SIG では、開発者は Kubernetes コミュニティの価値観や行動規範を共有し、オープン性や多様性、公平性を重視した持続的な開発が行われています。
SIG とそのグループに属する複数のサブプロジェクトでは、開発者は様々な役割のもとで開発を進めています。SIG Chair は、複数のサブプロジェクトを統括する開発者です。Subproject Owner は、特定のサブプロジェクトを統括する開発者です。他にも次のような役割があります。
役割 | 説明 |
---|---|
SIG Chair | 同じ領域のサブプロジェクトを統括する開発者 |
Subproject Owner | サブプロジェクトを統括する開発者 |
Approver | コードをマージする責務を負う開発者 |
Reviewer | コードをレビューする責務を負う開発者 |
Member | アクティブにコードを提出する開発者 |
New Contributor | 新たに貢献を始めた開発者 |
サブプロジェクトのソースコードリポジトリは、ソフトウェア開発プラットフォームの GitHub にあり、普段の開発はオンラインでオープンな形で進められています。GitHub のイシュートラッカー (課題追跡) を使った課題提起と議論、プルリクエスト (変更要求) での機能仕様やソースコードの提案と議論、あるいは、オンラインコミュニケーションツールの Slack で議論を行いながら、仕様検討やコーディング、ドキュメンテーション、および、それらのレビューを進めています。年に2回の Kubernetes Contributor Summit(米国開催と欧州開催)では、対面 (Face to face) で集中した議論も行ったり、新しいコントリビューターを直接支援したりしています。
NEC の取り組み
Kubernetes 開発活動
NEC は、Kubernetes コミュニティで下記の領域でプロジェクトの開発に貢献しています。お客様の課題解決に貢献するべく、ユーザーの観点や運用者の観点で幅広く開発に携わっています。
SIG | GitHub リポジトリ |
ポジション | 活動内容 |
---|---|---|---|
UI | kubernetes/dashboard | SIG Chair | お客様のユーザーエクスペリエンス向上に寄与することを目的として、機能開発や国際化、セキュリティ対応などに貢献しています。 |
Cluster Lifecycle | kubernetes-sigs/cluster-addons | Reviewer | kubernetes-declarative-pattern リポジトリのモジュールを使った実装例の品質向上に貢献しています。 |
kubernetes/minikube | Member | 品質向上や日本国内のニーズに応えるための日本語訳に貢献しています。 | |
API Machinery | kubernetes-sigs/kubebuilder-declarative-pattern | Approver | Kubernetes に独自の管理対象を追加できる kubebuilder のプラグインの品質向上及び機能追加を行なっています。より効率的な Kubernetes クラスタの管理を支援することが目的となります。 |
Contributor Experience | kubernetes-sigs/contributor-playground/japan | Approver | Kubernetes コミュニティに参加するための導入トレーニング「Kubernetes アップストリームトレーニング」を日本人向けに提供し、日本におけるコミュニティの拡大を支援しています。 |
Docs | kubernetes/website | Reviewer | Kubernetes のドキュメントに対して、日本語ページの追加や更新を行なうことで、日本国内のニーズに応えています。また、必要に応じて原文の修正にも携わり、ドキュメントの品質向上に貢献しています。 |
CLI | kubernetes/kubernetes | Member | 案件適用する際に顕在化した機能追加要望や障害の対応を行っており、お客様の課題解決に貢献しています。 |
Node | kubernetes/kubernetes | Member | |
Storage | kubernetes/kubernetes | Member |
NEC グループの主なコントリビューターについてはこちらをご覧ください。また、一部のコントリビューターは、Certified Kubernetes Administrator (CKA) の資格を持ち、NEC は、Kubernetes Certified Service Providers (KCSP) になっています。
CNCF プロジェクト支援
NECは、開発貢献に加えて、Kubernetes が継続発展し、お客様に安心してご利用いただけるよう、2018年5月より CNCF のゴールドメンバーとなり、CNCF のプロジェクトを支援しています。
・NECがCloud Native Computing Foundationにゴールド メンバーで加盟 (Linux Foundation)
Kubernetes 普及促進の活動
NECは、KubeCon+CloudNativeCon や OpenSource Summit Japan、CloudNative Days などの国内外のイベントで Kubernetes の普及促進の活動に取り組んでいます。
Kubernetes コミュニティへの参加支援
Kubernetes コミュニティに参加を希望する日本人エンジニアのために、アップストリームトレーニングを国内イベントとして開催しています。コミュニティで開発を行うために必要な作業と手順、そして考え方を紹介し、実際の作業をハンズオンで体験できる日本語のトレーニングです。コミュニティへの参加を支援するだけなく、オープンソースへの貢献文化の浸透やクラウドネイティブ技術の普及を目指したものであり、Kubernetes コミュニティやイベント主催者の協力を得て、オープンに実施しています。
Kubernetes に関する情報発信
NECグループのコントリビューターが、Kubernetes 開発の最新情報や Kubernetes コミュニティとともにお客様の課題解決に貢献したエピソードなどを各種イベントでの講演やブログにて紹介しています。
・「Kubernetes の利用者が直面している運用時の課題と、開発コミュニティでの課題解決に向けた対応、オープンソースコミュニティにおける開発の難しさ」について講演
・「Open Source プロジェクトにおける継続テストとその活用」について講演
・その他、Kubernetes を含む OSS に関する様々な貢献活動を行っています。概要は OSS 貢献活動 トピックスをご覧ください。
Kubernetes を活用したコンテナ実行基盤への取り組み
NEC では Kubernetes コミュニティにおける NEC の貢献成果の反映、活用を含め、OpenShift と連携して、以下のような取り組みを行っており、エンタープライズレベルのコンテナ実行基盤を安全に安心して利用可能な形で提供しています。
・NEC の Kubernetes エンジニアを米国 Red Hat 社に送り込み、開発現場でダイレクトにお客様要件の実現や迅速な改善をドライブ
・NEC 独自の検証と知見をベースに、安全に利用可能な機能、アップデートパスの見極め、推奨構成や設計を確立
・推奨構成/設計リファレンス/手順書の提供および、お客様環境を踏まえた調整、デリバリ、アップデートなどの包括的支援
・推奨構成をベースとしたお客様環境を安心してご利用可能とするサポートサービスの提供
今後の取り組み
NEC は Kubernetes エコシステムの一員として、Kubernetes の持続可能な発展に貢献するとともに、お客様には安心してご利用いただける Kubernetes を活用したコンテナ実行基盤を提供して参ります。