【連載】サイボウズのKubernetesプラットフォームを支えるOSS – Cybozu Inside Out

この記事は、CYBOZU SUMMER BLOG FES ’25の記事です。


はじめに

クラウド基盤本部 PDX(Platform Developer Experience)チームの池添です。

サイボウズでは、国内のデータセンターに自前のサーバーを配置して、その上でKubernetesをベースとしたクラウド基盤を構築しています。
このクラウド基盤では、利用チームが各自でKubernetesクラスタを構築・運用するのではなく、プラットフォームチームが共通のKubernetesクラスタを構築・運用し、複数のチームがこれを共有することで運用コストの削減やセキュリティの向上を図っています。
そしてプラットフォームを提供するチームは、このクラウド基盤を実現するためにさまざまなOSSを導入したり、自分たちでOSSを開発したりしています。

本連載では、サイボウズのKubernetesプラットフォームにおいて、我々が開発しているOSSの紹介を中心にプラットフォームエンジニアリングの取り組みを紹介していきます。
連載第1回目の本記事では、サイボウズが提供するクラウド基盤の概要とOSSの活用や開発に関する方針について紹介します。

サイボウズのKubernetesプラットフォーム

サイボウズでは、国内に複数のデータセンターを借りて、そこに1,000台以上のサーバーやネットワーク機器をオンプレミスで設置し、その上にKubernetesクラスタを構築しています。
詳しくは、【連載】Cybozu.comクラウド基盤の全貌という連載ブログを参照してください。

構築したKubernetesクラスタは、マルチテナント方式で運用しています。つまり、プラットフォームチームがクラスタを構築・運用し、複数のチームが共通のクラスタを利用します。
この方式を採用することで、サーバーの集約率が向上し、さらにはKubernetesクラスタに導入したサービスを各チームで共通利用できるため、運用コストの圧縮と効率化につながっています。

プラットフォームチームでは、各チームが必要とするサービスを厳選してKubernetesクラスタに導入し、共通基盤として提供しています。
また、利用チームが自分たちでやりたいことを実現できるよう、セルフサービス型のインタフェースを提供しています。
こうしたプラットフォームを実現するために、既存のOSSを導入したり、自分たちで新しいOSSを開発したりしています。

OSSの活用と開発に関する方針

プラットフォームとして何らかの機能を提供する場合、まずは要件を満たす既存のOSSが存在するか調べます。
要件を満たすOSSがあればそれを導入し、満たせない場合は、既存のOSSにIssueやPRを投げてコントリビュートする、フォークして機能追加する、パッチを適用する、自作するなどの選択肢から適切な方法を選択します。

サイボウズでは、RookCiliumなどのOSSに対して数多くのコントリビュートをおこなっています。
しかし、すべてのコントリビュートがすんなり受け入れられるわけではありません。コミュニティの方針と合わなかったり、メンテナンスコストが高い場合などは、コントリビュートが受け入れられなかったり、受け入れられるまでに時間がかかるケースもあります。実際、サイボウズがKubernetesのコミュニティに提案したKEP-4049は、Acceptされるまでに2年要しました。

また、近年のOSSコミュニティではメンテナ不足によるプロジェクトのアーカイブや、ライセンス形態の突然の変更といった問題も発生しています。
サイボウズのサービスはユーザー数が大きくサービスの寿命も長いため、プラットフォームの機能も長期間安定して維持し続ける必要があります。
こうした背景から、必要な機能を一から自社で開発しても十分にコストに見合うと判断するケースもあります。

上記のような理由から、我々はプラットフォームに必要な機能を自分たちで開発するという判断をすることがあります。
そして、開発した機能は基本的にOSSとして公開しています。

OSSとして公開することは、問い合わせや機能要望への対応、利用者が増えることで自由な機能追加や仕様変更が難しくなる、といった制約があります。

「それならクローズドソースにしておけばいいのでは?」と思われるかもしれません。
しかし、OSSとして公開することによって、以下のようなメリットを得ることができます。

  • 開発したコードがサイロ化することを防ぎ、他のチームや外部の開発者からのフィードバックを得られる
  • コードの品質向上につながるレビューやテストの機会が増える
  • 同じような課題を抱えている他の組織に貢献でき、エコシステム全体の発展に寄与できる
  • 採用活動において技術力のアピールにつながる

このような理由から、社内で開発した機能については積極的にOSSとして公開する方針を取っています。

今後の連載予定

本連載では、マルチテナントKubernetesにおいてセルフサービスを実現するために我々が開発したOSSを中心に紹介していきます。
以下の記事を1週間ごとに順次公開していく予定ですので、ぜひご覧ください。

  • 第1回: サイボウズのKubernetesプラットフォームを支えるOSS(本記事)
  • 第2回: Teleportによるアクセス管理とlogin-protectorによるログイン保護(仮)
  • 第3回: AccurateによるNamespace管理のセルフサービス化(仮)
  • 第4回: Argo CDによるGitOpsの実践とCattageによる権限管理(仮)
  • 第5回: MeowsによるGitHub Actions self-hosted runnerの管理(仮)




元の記事を確認する

関連記事