ROKSでODFを使う

Red Hat OpenShift on IBM Cloud (ROKS) で OpenShift Data Foundation (ODF) をセットアップする手順のご紹介です。

ROKS クラスターでは、OperatorHub からの ODF のインストールはサポートされていません。 ODF をインストールするには、クラスター・アドオンをデプロイします。

参考：
[VPC クラスターへの OpenShift Data Foundation のデプロイ](https://cloud.ibm.com/docs/openshift?topic=openshift-deploy-odf-vpc&interface=ui)

注）当記事は、2023年12月にROKS (OpenShift 4.12) で検証した内容に基づいており、今後変更される場合があります。 

## ODF専用ワーカー・ノード用ワーカー・プールの追加
今回、ODFポッドのみを実行するワーカー・ノードである `ODFノード` を作成します。ODFノード用のワーカー・プールを作成します。
ワーカー・プール画面にて、`追加`をクリックします。
![workerpool1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/a3f50e69-c36f-421f-b127-e7bf034231c0.png)
`ワーカー・プールの追加` 画面にて、必要事項を入力して `作成` をクリックします。
![workerpool2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/2b713369-7340-4bb4-907d-2830fe6bbe1d.png)
ワーカー・プールが作成され状況がアクティブに変わります。
![workerpool3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/0b1cc6bf-88c6-f678-1d17-ca86ca7c4a9e.png)
しばらくすると、ワーカー・ノードが作成されます。状況が `通常` になるまで待ちます。
![workerpool4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/4aca2424-c3dd-78a2-ccbd-a54f086e0fde.png)

次のステップで使用するので、ODFノードのプライベートIP をメモします。

## ODFアドオンのインストール
クラスターの `概要` 画面の下の方にある `アドオン` の中から `OpenShift Data Foundation` カードの `インストール` をクリックします。
![odf_addon1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/8425d692-d88b-778c-a6f1-325923fdf7b0.png)
`アドオンのインストール: OpenShift Data Foundation` 画面にて、希望のストレージサイズ、先程メモしたODFノードのプライベートIPなど、必要事項を設定し `インストール` をクリックします。
![odf_addon2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/e24921a8-8261-6011-3f96-fec3ee0fe41e.png)

`OpenShift Data foundation` アドオンの状態が `通常` になるまで待ちます。（今回は10分強で 通常 になりました。）
![odf_addon3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/645cd27f-18df-fe32-3f02-a36ef32b81e1.png)



## 確認

OpenShift Web コンソールを起動して、ODFの状態を確認します。

アドオンをインストールしたことにより、`OpenShift Data Foundation` Operator がインストールされていました。
![operator.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/8898f9dd-7d2b-bb31-06b1-c509af28efb5.png)

「ストレージ」の `Data Foundation ダッシュボード` が使用可能になっています。
![Data_Foundation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/88e3bba7-9100-4bd1-b99d-528d8073b745.png)


3ノード構成で指定した容量のStorageSystemができています。
![StorageSystem.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/5d27605f-4821-ef66-dd2f-735b9e15d6f4.png)

ODFアドオンのインストール時に指定した、ODFノードだけで `ocs-storagecluster` ができています。
![StorageSystem_nodes.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/eef8f6a8-ce6e-7634-ff33-de7b76b55de3.png)

ODFのStorageClassができています。
![storageclass.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/616f70d9-eaa0-32a4-cc3c-f2420848c95b.png)

しかし、StorageClass `ocs-storagecluster-ceph-rgw` がないことに気づきました。


#### Tips: StorageClass ocs-storagecluster-ceph-rgw について
[こちら](https://red-hat-storage.github.io/ocs-training/training/ocs4/ocs4-enable-rgw.html)によると、StorageClass `ocs-storagecluster-ceph-rgw` はデプロイするインフラストラクチャーによってデプロイされる場合とされない場合があるとのことです。「MCG がバッキング ストアとして使用する ObjectStore を直接プロビジョニングできる場合には、デプロイされません。」とあり、ROKSの場合はこれに該当していると考えられます。`ocs-storagecluster-ceph-rgw` が必要な場合は手動でデプロイ可能です。

https://red-hat-storage.github.io/ocs-training/training/ocs4/ocs4-enable-rgw.html


## ODF専用ワーカー・ノードの設定

必要に応じて、ODFノードにODF専用ワーカー・ノードの設定をします。

[第7章 Red Hat OpenShift Data Foundation に専用のワーカーノードを使用する方法](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_data_foundation/4.12/html/managing_and_allocating_storage_resources/how-to-use-dedicated-worker-nodes-for-openshift-data-foundation_rhodf#doc-wrapper)

実行例：
```
# for node in 10.242.0.13 10.242.64.7 10.242.128.8; do
>  oc label nodes $node node-role.kubernetes.io/infra="" --overwrite
>  oc adm taint nodes $node node.ocs.openshift.io/storage="true":NoSchedule
> done
node/10.242.0.13 labeled
node/10.242.0.13 tainted
node/10.242.64.7 labeled
node/10.242.64.7 tainted
node/10.242.128.8 labeled
node/10.242.128.8 tainted
```