OpenShift® 環境にも Pure で永続ストレージ

これまで 2 回にわたって Pure Service Orchestratorをご紹介しましたが、今回は番外編として、OpenShift® 環境での利用イメージをご紹介したいと思います。

OpenShift Integration

これまで 2 回にわたって Pure Service Orchestrator(以降 PSO)をご紹介してまいりましたが、今回は番外編として、OpenShift® 環境での利用イメージをご紹介したいと思います。

1. 利用した環境

Red Hat OpenShift®

  • OpenShift Master: v3.9.33
  • Kubernetes Master: v1.9.1 + a0ce1bc657
  • OpenShift Web Console: v3.9.33

2. Red Hat OpenShift® とは

Red Hat OpenShift® コンテナプラットフォームは、Docker、Kubernetes および RHEL から構成される Platform-as-a-Service(PaaS)ソリューションです。セルフサービスの Web ポータルを備えています。OpenShift によって、開発者は、インフラチームの多大な支援を必要とせずに Docker ベースのアプリケーションやデータベースを利用できます。

3. コンテナでの永続ストレージの利用

多くのコンテナはステートレスで短命です。しかし、一部のアプリケーション、特にデータベースでは、データの永続化が必要になります。 SAN、NAS を介して永続ボリュームをプロビジョニングする際は、2つの YAML ファイル―persistent volume(PV)と persistent volume claim(PVC)の定義が必要です。

PSO は、Kubernetes FlexVolume プラグインを利用して、PV および PVC 定義の作成プロセスを、また、FlashArray または FlashBlade 内のボリューム作成プロセスを自動化します。また、PSO では、fleet 管理機能により、PVC を FlashArray または FlashBlade にプロビジョニングする際のラベルの使用をサポートしています。

PSO の概要については、前回のブログ「Pure Service Orchestrator を動かしてみました」で解説していますので、ご参照ください。

4. コンフィグレーションファイルの設定

今回の OpenShift セットアップでは、PSO に必要な YAML ファイルに、FlashArrays 名 “RedFA1” と “RedFA2″、および、FlashBlade 名 “RedFB1″ を含めます。

デモでは、Labels(”env” と “arrayname”)を使用して、プロジェクトに追加するアレイを選択します。

5. OpenShift 環境で PSO を使用する

OpenShift 環境での PSO の使用例をご紹介します。

5-1. OpenShift コンソールにログインする

ブラウザを開いて OpenShift コンソール(この例では https://ocp.purestorage.int:8443 )にアクセスし、ログインします。

5-2. 「Databases」をクリックする

5-3.  データベースを選択する

「Mongo」を選択します。この例では MongoDB を選択しますが、他のデータベースの選択も可能です。

5-4. 「MongoDB(Persistent)」を選択する

他のデータベースを選択する場合も、Pure Storage プラグインが機能するために、Persistent バージョンのデータベースを選択します。

5-5. 「Next」をクリックする

5-6. 「Create Project」を選択する

5-7. プロジェクト名を入力する

この例では、プロジェクト名を “pureuser-mongodb” としています。

5-8. ボリューム容量までスクロールする

残りの設定はデフォルトのままにして、ボリューム容量までスクロールします。FlashArray に作成される永続的なボリュームに必要な容量を入力します。この例では “25Gi” と入力しています。入力したら、「Next」をクリックします。

5-9. 「Create a secret in…」を選択し、「Create」をクリックする

 

5-10. 「Continue to project overview」のリンクをクリックする

以上の手順で、永続ストレージにアタッチされた MongoDB のコンテナが作成できました。Pure Storage の設定画面での操作の必要はなく、容量を入力するだけでした。

6. Pure Storage 上にボリュームが作成されているかどうか確認する

次に、Pure Storage 上に要求されたボリュームが作成されているかどうか、確認してみましょう。

6-1. データベースサービスの左側の矢印をクリックする

6-2. 画面右側の「pod」をクリックする

6-3. ノード名を確認し、クレーム名をクリックする

ポッドが実行されているノード名をメモして、ボリュームの下のクレーム名「mongodb」をクリックします。

6-4. ボリュームにバインドされた後の文字列を参照する

PSO で定義されている 2 つの FlashArray のうち、負荷の低いアレイを PSO が自動的に判断してボリュームを割り当てます。ここでは、RedFA1 のGUI にログインします(https://10.10.100.XX)。

「Storage」⇒「Volumes」をクリックします。 ボリュームを “pvc” で検索してください。 OpenShift の UI で作成したボリューム名が表示されますので、それをクリックします。

6-5. ボリュームがマウントされているホストを確認する

ボリュームがマウントされているホストは、OpenShift で作成した pod がデプロイされているノードのホスト名に対応していることが確認できます。

7. 永続ボリュームの「追加」と「ラベル」を使用したアレイの選択

7-1. OCP ポータルのプロジェクト View に戻って「pod」をクリック ⇒「Add Storage to mongodb」のリンクをクリック

先ほど作成したコンテナに、永続ボリュームの「追加」と「ラベル」を使用して追加するアレイを選択する場合は、OCP ポータルの pureuser-mongodb プロジェクト View に戻り、「pod」をクリックします。 そして Volumes までスクロールし、「Add Storage to mongodb」のリンクをクリックしてください。

7-2. 「create storage」をクリックする

7-3. Storage Class から「pure-block」を選択する

Create Storage 画面の Storage Class から「pure-block」を選択すると、ブロックストレージの FlashArray からボリュームが割り当てられます。(FlashBlade からファイルシステムを割り当てる場合は、「pure-file」を選択してください。)

7-4. ボリュームの名前を入力する

ボリュームの名前を入力します。この例では “mongodb-pv01” としています。アクセスモードを Single User (RWO) のままにし、必要な容量を入力して、「Use label selectors to request storage」の横のボックスをクリックしてオンにします。

7-5. ボリュームを割り当てる

ボリュームを RedFA1 から割り当てるには、Labels に “arrayname”、値に “RedFA1″、または、Labelsに “env” 、値に “prod” を入力して「Create」をクリックします。

7-6. ボリュームをマウントする

作成したばかりのボリュームの横にあるラジオボタンを選択し、マウントパスを指定し、「Add」をクリックしてください。指定したマウントパスにボリュームがマウントされます。 この例では、マウントパスを “/data1” としています。

8. 追加したボリュームの確認

8-1. pod 画面の「Terminal」をクリックする

 

8-2. Terminal で “df -h” を実行する

Terminal で “df -h” を実行すると、新しくマウントされたポイントが表示されます。この例では “/data1” です。

pvc 文字列をメモして FlashArray GUI で検索することで、RedFA1 上に新たにボリュームが作成されたことを確認できます。

以上のように、Pure Service Orchestrator を OpenShift に組み合わせることで、ファイルストレージ、ブロックストレージを問わず、開発者の方がご自身で容易にコンテナ環境に永続ストレージを割り当てることができます。

シリーズ「Pure Service Orchestrator を動かしてみました」

Pure Service Orchestrator を動かしてみました 第 1 回

Pure Service Orchestrator を動かしてみました 第 2 回