ODF(OpenShift Data Foundation、OCS) 4.6のデプロイ - OCS 4.5からの変更点中心

## 概要
OpenShift Container Platform 4.6 クラスターにODF(OpenShift Data Foundation, OCSと呼ばれていました)をデプロイしました。

[OCS 4.5のデプロイ記事](https://qiita.com/Yuhkih/items/89e0c76703a4f90bae67)の手順を参考にしましたが、4.6では4.5の手順から変更になっているところがあり、そこで落とし穴にはまってしまい、結果的にかなり時間がかかってしまいました。今後、誰かが同じようなことにならないように注意点などを記録しておこうと思います。



## 参考ドキュメント
こちらが今回デプロイした**4.6**のドキュメント
[ベアメタルインフラストラクチャーを使用した OpenShift Container Storage のデプロイ](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_container_storage/4.6/html/deploying_openshift_container_storage_using_bare_metal_infrastructure/index)


こちらは、参考文献でデプロイしていた4.5のドキュメント
[ベアメタルインフラストラクチャーを使用した OpenShift Container Storage のデプロイ](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_container_storage/4.5/html/deploying_openshift_container_storage_using_bare_metal_infrastructure/index)

Red Hat OpenShift Data Foundationの紹介
[Red Hat OpenShift Data Foundation](https://cloud.redhat.com/products/container-storage/)

## 参考文献
こちらの記事を参考にさせていただきました。またこの記事で引用させていただいています。
[OCS(OpenShift Container Storage)をインターナルモードで作成する](https://qiita.com/Yuhkih/items/89e0c76703a4f90bae67)


## OCS 4.5からのデプロイ手順変更点
### 1. OCS によって使用されるローカルストレージデバイスを持つ各ノードに対する事前のラベル付けが必須ではなくなりました
ラベルはあらかじめつけておかなくても、ストレージクラスター作成時につけてくれるようになったようです。そのため、「3.3. OCSインストール対象Nodeのラベリング」は任意となりました。
ただし、つけておいても問題ないので、4.5の手順のままでも問題ありません。

### 2. ストレージクラスターの作成モードに「Internal - Attached Devices」が追加されました
このモードの登場により、手順が大幅に簡略化されました。
コマンドラインから実行していた「5.2. LocalVoume の作成」が丸ごと不要になりました。

## 環境
既存のOCPクラスターの中に3つの`Workerノード`を使った**インターナル**モードの`ODFクラスター`を作成します。
![kousei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/16cdceaa-6039-6cb6-e62e-9c672ac5914d.png)


- Master 3ノード、Worker 9ノード（うち3ノードをODFノードとして使用予定）のOCPクラスターを構築済みの状態です。
- `ODF`のデータ領域は、各`ODFノード`に追加した`rawブロックデバイス`を使用します。
すべてのノードは、VMwareの仮想マシンとして構成していますので、「3.1. VMware を OCSノードに使用する場合の注意点」で解説されている設定をしました。ただし、OCS4.5と違い、diskのby-idをユーザー自身が扱うことはないので、実際に必要かどうかは未確認です。

>  - VMware の仮想マシンを `OCSノード` に使用する場合「仮想マシンオプション」で、`disk.EnableUUID` を `true` にしないと、構成に必要なディスクの `by-id`が表示されない場合があるようです。
>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99425/1b6cf9e7-d26c-de45-5d41-7c935adfd79a.png)

## ODF 4.6デプロイ手順
### 1. OCS Operatorのインストール
このステップの手順はOCS4.5と同様です。
 `OperatorHub`から`OpenShift Container Storage`を検索してクリックします。
 
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99425/4bb66acb-d4d7-d93c-4b0a-3357a3dd3fdf.png)

 `Install`をクリックします。

![install_ope.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/496ff939-1cbd-76cd-36af-56b74ce903d9.png)

 `Install Operator`で必要な項目を入力します。

 `Enable operator recommended cluster monitoring on this namespace` だけは、デフォルトでチェックが入ってないはずなので、チェックします。それ以外はデフォルトのままで大丈夫なはずですが、以下のとおりであることを確認します。

**Update Channel** は、`stable-4.6`
**Installation Mode** は、`A specific namespace on the cluster`
**Installed Namespace** は、`openshift-storage`
**Approval Strategy** は、`Automatic` (※[引用元](https://qiita.com/Yuhkih/items/89e0c76703a4f90bae67)には注釈があります。ご参照ください。)


確認したら`Isntall`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/58ae11a2-3d12-63a9-7c38-9eb0445c5908.png)

### 2. Storage Clusterの作成

１. `Operators` → `Installed Operators` をクリックし、インストール済みの `OpenShift Container Storage Operator` をクリックします。（見つけにくい場合は、Project に openshift-storage を選択します。）

![installed_ocs_ope468.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/414bec2a-9d25-2d0c-c046-4581532e3c4e.png)



２． `Storage Cluster` の `Create Instance` リンクをクリックします。
![qcreate_storageCluster0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/346fe1ae-f95a-e113-9dde-c78530d2fcf2.png)

３. Create Storage Cluster の`Discover Disks`ページで、以下のように選択し`Next`をクリックします。

**Select Mode** は、`Internal - Attached Devices`
このモードでは、ディスク検出、ストレージクラスの作成、およびストレージクラスの作成を含むウィザードを使用してストレージクラスターを作成することができます。

**Node Selector**で、ODFノードとして使用予定の3ノードにチェックを入れます。
![qcreate_storageCluster1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/5680dfa6-65b9-bbe0-c16c-bc6b4e9f77b9.png)



４. `Create Storage Class`ページに移ります。
**Volume Set Name**に任意の名前を入力します。
＊デフォルトで、Volume Set NameがStorage Class Nameとして表示されます。
ここでは、`localblock`としています。

::: note info
当初、Volume Set Name（デフォルトでストレージクラス名としても利用される）として、この後インストール予定のアプリで必要とされているストレージクラス名 ocs-storagecluster-cephfs を指定していました。その場合、次のCreate Storage ClusterページでNodesの検出が失敗します。ここで作成するのは、ストレージボリュームのセットをフィルターすることにより、専用のストレージクラスを作成してストレージを消費するためのLocal Volume Setなので、ODFのストレージクラスとは別のものです。 
:::

`Selected Capacity`に想定通りのサイズが表示されていることを確認し、`Next`をクリックします。

![qcreate_storageCluster2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/1dc10004-d336-baed-a318-32cbcde6ad08.png)

ストレージクラスが作成されることを知らせるメッセージが表示されます。`Yes`をクリックします。
![qcreate_storageCluster2a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/d65131c4-79bf-4d92-8503-5e8363bba769.png)

５. `Create Storage Cluster`ページに移ります。
想定どおりの設定になっていることを確認し`Create`をクリックします。
![qcreate_storageCluster3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/2e8e64ba-698d-2211-1bc7-234c2f61c95b.png)

### 3. デプロイメントの確認

[こちら](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_container_storage/4.6/html-single/deploying_openshift_container_storage_using_bare_metal_infrastructure/index#verifying-openshift-container-storage-deployment_rhocs)を参照して、正常にデプロイされたことを確認します。

必要なODFのストレージクラスが自動で作成されていることも確認できます。

![storageclass.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/15b31be2-724c-4228-eebe-b3f569909cc5.png)