👨‍💻

【mNi Cloud】4月の開発状況【国産クラウド】

に公開

はじめに

こんにちは。mNi Cloud開発チームです。

2024年7月に開発を開始した国産クラウドプラットフォーム「mNi Cloud」は、引き続き開発を進めております。4月はmNi Cloudの業務を通常より多く行うことができましたので、引き続き開発状況をご報告します。

mNi Cloudとは

mNi Cloudについては以下の記事にまとめてあります。
https://zenn.dev/mnicloud/articles/7144cc817d7aa4

1月~3月の開発状況

https://zenn.dev/mnicloud/articles/ac7b956d3ccb05

クラウドを活用した学習環境開発

弊社では土日祝日にConnpassにて勉強会を実施しております。
その中のLinuxラボを遠方の方々やラボの復習を手軽に行いたいという要望にお応えし、可能な限りリモートで実施できるように、mNi Cloud上で動作するように検証、開発を進めております。

現在は以下のラボの作成を行っております。

ラボ 概要 詳細
ラボ1 初期セットアップ mNi Cloud上にLinuxを構築
ラボ2 FTP FTPを利用したファイルの転送
ラボ3 Webサーバ Webサーバを構築し、サイトを立ち上げ
ラボ4 データベース データベースの操作とWebサーバとの連携
ラボ5 Syslog 物理機器のログを取得
ラボ6 バックアップ Linux, Windowsのバックアップ
ラボ7 SNMP SNMPによる物理機器の監視
ラボ8 メール メールサーバを構築し、メールの送受信
ラボ9 Ansible Ansibleを利用したサーバセットアップの自動化
ラボ10 プロキシ プロキシの構築

5月中に一部ラボをリリースする予定ですので、ご期待ください!

クラウド監視サービスの開発

mNi Cloudではマネージドな監視サービスの提供を考えております。
お客様は自環境に監視サービスを構築することなく、クラウド上で機器やアプリケーションの状態を監視することができます。

この監視サービスの開発に先立ち、mNi Cloud上にPrometheus, Grafanaを構築しました。
詳細は以下の記事にてご確認をお願いいたします。

https://zenn.dev/mnicloud/articles/26e3de2c5357ec

弊社はSIを専門とした会社でございます。今後はElasticsearchやPrometheus, Zabbix等の監視サービスにも力を入れ、資格取得等行っていきます。
ぜひクラウド型の監視サービスに興味がありましたら、お声がけください。

バックエンドの改良

mNi CloudはKubernetesを基盤としたクラウドプラットフォームです。しかしながら、現状ではKubernetesとの連携が限定的であり、client-goライブラリを使用してKubernetesリソースを操作するアプリケーションをコンテナとして実行する設計となっています。この設計アプローチには以下のような課題があります:

  • Kubernetesの機能を十分に活用できていない
  • コンテナとして動作するアプリケーションの管理オーバーヘッドが大きい
  • システム全体の複雑性が増加している
  • 障害発生時の回復プロセスが複雑になる

そこで我々はKubernetesとより密接な連携を行うためにKubebuilderを利用したKubernetes Operatorを作成する方針に舵を切りました。

Kubebuilderの概要

Kubebuilderは、Kubernetes Operatorを効率的に開発するためのフレームワークです。Go言語で記述され、カスタムリソース定義 (CRD) とコントローラーを簡単に作成できる機能を提供します。Kubebuilderを使用することで、Kubernetesのネイティブな拡張機能として動作するOperatorを開発し、宣言的なAPIを通じてアプリケーションやインフラストラクチャを管理することができます。

Kubebuilderのメリット

  • 宣言的な設計アプローチ: Kubernetesのリソースモデルに沿った宣言的なアプローチを採用できるため、システムの状態管理が容易になります。
  • スケーラビリティの向上: Kubernetes本来の分散システム機能を活用できるため、システムの拡張性が大幅に向上します。
  • コード生成の自動化: ボイラープレートコードを自動生成することで、開発効率が向上し、エラーの可能性が減少します。
  • テスト容易性: 組み込みのテストフレームワークを利用することで、Operatorの品質を高めることができます。
  • 継続的デリバリーの促進: GitOpsワークフローとの親和性が高く、継続的デリバリーパイプラインに統合しやすくなります。
  • 標準化: Kubernetesのベストプラクティスに沿った開発が促進され、一貫性のあるアプリケーション管理が可能になります。
  • リソース効率の向上: コンテナアプリケーションとして別途実行する必要がなくなり、リソース使用量が最適化されます。
  • セキュリティの強化: Kubernetes RBACの機能を活用したきめ細かなアクセス制御が可能になります。

Operator開発の進捗

mNi CloudのサービスをOperator化するにあたり、アーキテクチャを以下のように一新しています。

現在は各サービスの依存関係を管理するDependency Controllerやクラウドの根幹を担うmNi VPC Controllerの開発を進めております。
以下は、Dependency ControllerによるVPCサービスの依存関係定義になります。

VPCに依存しているサブネットを表示、依存関係により削除の順序の制御等が可能となっており、従来のシステムよりより堅実なリソース管理が可能となっています。

Operator開発から派生して

この各サービスのOperator化は当初より提供を考えているmNi CloudのOSS版のリリースに当たり多くのメリットがあると考えています。

  • Kubebuilder, Kubernetesの標準に則った実装が可能
  • Scaffoldを利用し、mNi Cloudサービス用のひな形が作成可能

コミュニティメンバーは標準化された開発環境を利用して任意の機能開発を行うことができます。また、コード構造が統一されるため、コントリビューションのレビュープロセスが効率化され、プルリクエストの評価とマージがスムーズになります。

これにより、mNi CloudはOSSプロジェクトとして成長し、幅広い開発者からの知見を取り入れながら進化していくことが可能になると考えています。

おわりに

4月はKubernetesとの連携を強化するアーキテクチャの刷新や、Linuxラボの学習環境構築、監視基盤の作成を行ってきました。Kubebuilderを活用したOperator開発により、より堅牢で拡張性の高いクラウドプラットフォームの実現を目指しています。

5月には一部のLinuxラボのリリースを予定しており、多くの方々にmNi Cloudの機能を体験していただける機会が増えることを楽しみにしております。また、OSS版のリリースに向けた準備も着実に進んでおり、将来的にはコミュニティと共に成長していけるプラットフォームを目指しています。

引き続きmNi Cloudの開発状況をお伝えしていきますので、ご意見やご要望などございましたらお気軽にお寄せください。今後ともmNi Cloudをよろしくお願いいたします。

Discussion