株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

使ってみよう csi-unity !!(其ノ壱)

皆様こんにちは。ネットワールド ストレージ担当の井上です。

今回のテーマはタイトルの通りcsi-unityです。
そもそもcsi-unity?って何?Unityの亜種?という方もいるかもしれません。
かくいう私も普段この分野(Kuberenetes/K8s)はまったくノータッチなのですが、だからこそ
こんな機会(ブログのネタどり)にちょっと触ってみよう、という試みです。

※ 以降は、あくまでストレージ業界に身を置く私の個人的な認識ですので、より詳細に知りたい方は弊社の専門チームまで!

・まず、CSIとは?
Container Storage Interfaceの略で、K8sが定めてるコンテナにストレージを提供するための仕様です。

・では、csi-unityとは?
こちらはUnity本体に関連するものではなくて、K8s環境に導入するプラグイン、Driver的なものを指します。
これを導入することで、CSIの仕組みを使って、簡単に、コンテナ環境にUnityのストレージを動的にデプロイすることが可能になる代物です!(無償です!
すなわち、K8sの管理者がコンテナデプロイの度に、ストレージの管理者に領域作成を依頼する必要がなく、K8sのお作法の記述(yaml)でストレージが自動でProvisioningできるようになります。
内部での動作としては、デプロイの定義によってProvisioningの依頼を受けたcsi-unityがUnityと連携してLUN/Filesystemを作成し、マウント情報をK8sシステムと連携します。
この時のcsiとUnityとの通信ではREST APIを利用しています。なるほどという感じがしますよね。


・K8sを使うにはストレージ機器がいるの?

という単純な問いには答えはNo.となりますが、今後は需要が高まってくることは十分考えられます。
K8sの仕様として、通常、コンテナにはtemporalなストレージが割り当てられます。
すなわち、コンテナが削除される(壊れる)とそのコンテナに割り当てられていたストレージも一緒に消えてしまいました。

そもそもそんな仕様なので、Deploy & Destroy!、アプリの状態なんて保存されてなくていいよ、という感じのシステムで使われていたのですが、K8sが普及・進歩てくるにつれもっといろんなアプリで使いたい、データが消えると困るでしょ。。というニーズが出てきて、CSIが導入されたわけです。

世のコンテナ化の流れは皆さん知るところだと思うので、今後コンテナでのステートフルなアプリの提供が当たり前になってくれば、これまでのファイルサーバやDB環境用にストレージを導入するのと同じく、コンテナ環境用にも適切にデータを保存・保護するためにストレージを導入しようというお客様もそれなりに出てくるのでは?と思われます。

 

さて、以降は実際にcsi-unityを導入して基本動作を使ってみるところまで見ていきたいと思います!

 

・csi-unityをゲットする
まずはものを入手しなくては...ということでサポートサイトを色々検索してみるわけですが全然情報が見当たらず・・・。
しょうがないのでG〇〇gle先生に聞いみたところ、どうやらcsi-unityはGitHubで公開されているようです!(以下URL山椒。)
https://github.com/dell/csi-unity

f:id:networld-blog-post:20201009105028p:plain

GItHub csi-unityページ

 実際にcsi-unityを入れてみたいLinuxとかでgitコマンドでサクッとDL可能です。
バイナリではなくて、インストールツールが入ったキットという感じですね。

 

・マニュアル類を確認する
さて、ものはゲットしたので続いてマニュアルを探します...がこれも例によってサポートサイトでは見つけられず、ツールと同じく上記GitHubのページにおいてありました。
どうやらcsi-unity関連のものはここにまとめて置いているようですね。
サポートサイトを使わないのはなにやら不思議な感じもします。笑)

f:id:networld-blog-post:20201009105143p:plain

Product Guide

 また、リリース日が 11 days agoと割と最近1.3になったようですね。ちょこちょこアップデートがあり、今現在きちんとメンテナンスされているようなので、そこは安心ですね。

Release Noteを見ると、内部で上述の通りREST APIを使っているので、そこの仕様変更に引っ張られてcsi-unityも影響を受けてしまう、といったこともあったようで...、連携ツールというものは得てしてそういう面がありますよね。。


・Compatibility

こちらもGitHubに記載があるものですが、Compatibilityを見てみましょう。

f:id:networld-blog-post:20201009105210p:plain

Compatibility

まずUnity OEですが、5.xのみの対応となっています。
そしてProtocolはFC, iSCSI, NFSと主要なものに対応しています。
(ユーザ向けのファイルサービスというものではないのでSMB/CIFSは非対応)
上物の基盤環境としては、K8s v.1.17以降, RHEL/CentOS 7.6-7.8ということで、今回検証のために対応する環境を用意しました。

ちょっと気になったところはDockerの項目で、「Docker EE」と書かれており、ここはEnterprise Edition(有償版)しか対応していないように見えます。
CentOSはOKでもDocker CE(Community Edition)はダメということでしょうか。。
ここについては有償版を用意できないので、今回うまくいくことを祈りつつ無償版のDocker CEを使ってみることにしました。


さて、ある程度長くなってきたので今回はこの辺にしておきます。実際の導入、利用プロセスは次回、見ていきたいと思います!
それではここまで読んでいただきありがとうございました!


DellEMCプロダクトについてメーカーブログにも色々寄稿していますので、以下も是非ご参照ください!
https://www.dell.com/community/ストレージ-Wiki/tkb-p/storage-wiki-jp/label-name/EvalReport