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

dell-csi-operatorなるツール 其の弐(PowerScale連携)

皆様こんにちは。ネットワールドでストレージやそれと絡むコンテナソリューションを担当している井上と申します。

最近、Amazon Primeに同時視聴機能があることを知りました。
友達とチャットでツッコミ入れながら見れるのでなかなか楽しいですね。

今回の内容ですが、時間が空いてしまいましたが、前回の続きでdell-csi-operatorについてです。
前回はdell-csi-operatorが何者か、というところと、KubernetesのOperatorという仕組みについての紹介でした。
今回はようやく実際に導入して、(なんと!?)PowerScaleと連携してみましたので、そちらについて紹介したいと思います。

 ↓ 前回の記事はこちら ↓

dell-csi-operatorなるツール - ネットワールド らぼ


今回の目次

はじめに

さて、早速導入レポートをしていきたいところですが、ちょっと立ち止まって、
dell-csi-operatorは以下で開発されているのですが、前回から見ぬ間にdell-csi-operator用のちゃんとしたサイトができていました!
https://dell.github.io/storage-plugin-docs/docs/

英語だけっぽいですが、こういうマニュアルサイトがあるのは助かりますね。
そしてGitHubの更新状況を見ると2カ月前となっていたり、
OperatorHub.ioの該当ページをみるとツールのバージョンが前回記事を書いた時の1.2.0→1.4.0になってました!
Kubernetesは更新頻度の高いツールなので、その連携ツールであるdell-csi-operatorも、
継続して定期的にメンテナンスされているというのは使う上での安心材料になりますね。
アンシン、アンゼンなツールですね!
https://operatorhub.io/operator/dell-csi-operator

 

Tips

そしてもう1つ、Tipsなので読み飛ばしてもらって大丈夫ですが、
Operatorの仕組みを使ってdell-csi-operatorを導入する場合には、Operator Lifecycle Manager(OLM)というのを導入する必要があるようです。
このOLM、私も知らなかったのですがざっくり言うと、OperatorHubを利用しているOperatorはK8sのパッケージ管理ツールであるHelmを利用せずに導入されるようなので、それに代わるOperatorを適切なバージョンで動作するためのマネジメントの仕組みがOLMのようです。
マニュアルによれば、Automaticモードを指定すれば自動で、Operatorのインストールやアップグレードをやってくれるみたいです。なんとまぁ。

 

導入&利用ステップ

では、ここからdell-csi-operatorの導入についてみていきます。
導入方法は上述のHelmを使う方法もあるようですが、せっかく話してきたのでOperator方式で導入してみます。
その場合のステップは以下の感じです。詳細な手順は先ほど紹介したドキュメントサイトに書いてあるのでここでは、ちょっと気になったところだけBreak Downして、後は簡単に記載しています。

1.コンフィグ用意

2.https://operatorhub.io/operator/dell-csi-operator で
Installボタンをクリックすると表示されるコマンドをいくつか実行

pic1.png

 

pic2.png

実際に実行していることは以下です。

Operator Lifecycle Manager(OLM)デプロイ

dell-csi-operatorデプロイ

インストールするにはするのですが、パッケージを直接指定するのではなくて、以下のK8s APIオブジェクトを作る感じの操作内容になっていました。

kind: Subscription
metadata:
name: my-dell-csi-operator
namespace: operators
spec:
channel: stable
name: dell-csi-operator
source: operatorhubio-catalog


OLMに登録されているdell-csi-operatorのStableチャンネルをサブスクライブするという感じで、
そうするとLyfeCycle的に適切なバージョンのdell-csi-operatorをデプロイしてくれるようですね。
細部まで認識あってるかわかりませんが、なるほどなぁ~という感じで面白いです。

それとちょっとはまった部分として、マニュアルを見ていてもよくわからなかったのですが、どうもこのSubscriptionとOLMは同じnamespaceにしないとうまく動いてくれない感じでした。。
(最初別々のnamespaceに作っていました。)

 

3.連携したいストレージのCSI DriverデプロイこちらはOperatorHub.ioのページに各ストレージのCSI driver用サンプル定義ファイルのリンクがあるので、リンクをたどり、こちらの内容でkubectl createしてあげます。

pic3.png

 

4.ストレージ連携設定
続いて、連携したいPowerScaleの情報を色々dell-csi-operatorに教えてあげます。

{
"isilonClusters": [
{
"clusterName": "cluster2",
"username": "user",
"password": "password",
"endpoint": "1.2.3.5",
"isiPort": "8080",
"skipCertificateValidation": true,
"isDefault": false,
"isiPath": "/ifs/data/csi"
}
]
}

こんな感じでjson形式でIPやPath情報を記載し、以下のコマンドで登録します。

# kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.json(↑のファイル)

 

5.StorageClass作成

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: isilon-expand-sc
annotations:
storageclass.beta.kubernetes.io/is-default-class: "false"
provisioner: "csi-isilon.dellemc.com"
reclaimPolicy: Delete
parameters:
ClusterName: <clusterName specified in secret.json>
AccessZone: System
isiPath: "/ifs/data/csi"
AzServiceIP : 'XX.XX.XX.XX'
rootClientEnabled: "true"
allowVolumeExpansion: true
volumeBindingMode: Immediate

こんな感じの内容でStorageClassのオブジェクトを作成します。内容は先ほどJsonを記載した時のクラスタ名や、サービス用IP、ディレクトリ等々の指定です。

そして、PowerScale側は
CSIとの連携にNFSプロトコルを使うので、当然ですが
NFSが使えるように適切に設定してエクスポートを作成して、事前にLinuxからrootユーザでマウントできるところまで確認しておきましょう。


導入後のK8s APIオブジェクト(の一部)はこんな感じです。
今回olmというnamespaceにOLMをデプロイしています。ちゃんとdell-csi-operatorのPodがデプロイされているのが確認できますね。
(画像下の部分)前回説明したカスタムリソースの定義一覧をみると、csiXXXX(ストレージ名)というカスタムリソース定義がいくつもできているのが確認できます。
ここでcsiisilonsというのが定義されているので、Step. 3で kind: CSIIsilonのオブジェクトを作成できるわけですね!
余談ですがこのカスタムリソース一覧にcsiXXXXが表示されるまでには少し時間がかかるかもしれません。

pic4.png

 

試しに使ってみる

では最後に、実際に連携するか試してみましょー!ということで、
みんな大好きWordpressとMySQLで使うPersistentVolumeClaimで先ほどのStorageClassを指定してみました。

/ifs/nfs/csi というパスをCSIで使うパスとして指定したのですが、、

pic5.png

 

ドンッ☆
OneFSのFile Explorerで見てみると、指定のパスにcsipscale-XXXXXというディレクトリが自動で作成されました!(Dynamic Provisioning)
いやぁ~無事K8sとPowerScaleの連携ができました!お疲れ様でした!!
(Sizeが0Bとなっているのは、実はPodがPersistentVolumeをマウントするときにエラーになっているからだと思われますが、エラーメッセージ的に今回の主旨とは外れるのでそこは割愛です。)

 

ということで、今回はdell-csi-operatorについて、アップデート情報とPowerScale連携で使ってみたレポートをお届けしました。
コンテナで永続ストレージが欲しいというシチュエーションはまだまだ稀有かもですが、既にストレージがあるのであれば、ストレージによりデータ保護される領域を簡単に提供することができるので是非検討してみてください!?

それでは、ここまで読んでいただきありがとうございました!

 

Dell EMC製品関連のブログ一覧はこちら!
https://www.networld.co.jp/product/emc/tech-blog/