複数の OpenShift Data Foundation ストレージクラスターのデプロイ
既存の OpenShift Data Foundation 内部ストレージクラスターがある場合に、外部 OpenShift Data Foundation ストレージクラスターをデプロイする方法
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があれば、ぜひお知らせください。
フィードバックを送信するには、Bugzilla チケットを作成します。
- Bugzilla の Web サイトに移動します。
- Component セクションで、documentation を選択します。
- Description フィールドに、ドキュメントの改善に向けたご提案を記入してください。ドキュメントの該当部分へのリンクも記載してください。
- Submit Bug をクリックします。
第1章 ストレージクラスターの複数デプロイの概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Data Foundation は、2 つのストレージクラスター (1 つは内部モード、もう 1 つは外部モード) をデプロイする機能を備えています。これを実現するには、最初のクラスターを openshift-storage namespace に内部クラスターとしてインストールし、2 番目のクラスターを openshift-storage-extended namespace に外部クラスターとしてインストールする必要があります。逆の順序でインストールされたクラスターは、現在サポートされていません。
- サポート対象のプラットフォーム
- ベアメタル
- VMware VSphere
- OpenStack
- OpenShift Virtualization
- IBM Cloud
- IBM Power
- IBM Z
第2章 複数の OpenShift Data Foundation ストレージクラスターをデプロイする準備 リンクのコピーリンクがクリップボードにコピーされました!
動的、ローカル、または外部ストレージを使用した OpenShift Data Foundation のデプロイを開始する前に、リソース要件が満たされていることを確認してください。プランニングガイドの リソース要件 のセクションを参照してください。
複数の OpenShift Data Foundation ストレージクラスターをインストールする前に、以下の点に注意してください。
-
openshift-storageとopenshift-storage-extendedは、排他的にサポートされる namespace です。 - 内部ストレージクラスターは、OpenShift Data Foundation Operator の namespace に制限されます。
- 外部ストレージクラスターは、Operator の namespace と非 Operator namespace の両方で許可されます。
-
同じ namespace で複数のストレージクラスターはサポートされません。したがって、外部ストレージシステムは OpenShift Data Foundation の Operator ページには表示されません。Operator は
openshift-storagenamespace にあり、外部ストレージシステムはそこにはないためです。 - Operator の namespace で外部ストレージクラスターを実行しているお客様は、複数のストレージクラスターを利用することはできません。
- Multicloud Object Gateway は、Operator の namespace 内でのみサポートされます。他の namespace では無視されます。
- RADOS Gateway (RGW) は、Operator の namespace、非 Operator namespace、またはその両方に配置できます。
- ネットワークファイルシステム (NFS) は、少なくとも 1 つのクラスターで有効になっている限り有効になります。
- トポロジーは、少なくとも 1 つのクラスターで有効になっている限り有効になります。
- トポロジードメインラベルは、内部クラスターが存在する限り設定されます。
- クラスターの Topology ビューは、OpenShift Data Foundation 内部モードのデプロイメントでのみサポートされます。
- 複数のストレージクラスターで別々の multus 設定はサポートされません。
第3章 OpenShift Data Foundation 内部ストレージクラスターのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Data Foundation ストレージクラスターを内部モードでデプロイして検証するには、インフラストラクチャー別のデプロイガイド を参照してください。
第4章 OpenShift Data Foundation 外部ストレージクラスターのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
外部ストレージクラスターをデプロイして、ストレージを追加したり、現在の内部ストレージクラスターを拡張したりするには、この手順を使用してください。
前提条件
- 内部モードでデプロイされた OpenShift Data Foundation クラスター。
- OpenShift Container Platform と OpenShift Data Foundation の両方がバージョン 4.15 にアップグレードされている。
手順
- OpenShift Web コンソールで、Storage → Data Foundation → Storage Systems タブに移動します。
- Create StorageSystem をクリックします。
Backing storage ページで、Connect an external storage platform がデフォルトで選択されています。
-
利用可能なオプションから、Storage platform として
Red Hat Ceph Storageを選択します。 - Next をクリックします。
-
利用可能なオプションから、Storage platform として
セキュリティーとネットワークページで、以下を実行します。
- オプション: 暗号化を選択するには、Enable encryption チェックボックスをオンにします。
- Connection セクションで、Download Script リンクをクリックして、Ceph クラスターの詳細を抽出するための Python スクリプトをダウンロードします。
Red Hat Ceph Storage (RHCS) クラスターの詳細を抽出するには、Red Hat Ceph Storage ノードで、ダウンロードした Python スクリプトを
admin keyを使用して実行します。RHCS ノードで以下のコマンドを実行し、利用可能な引数のリストを表示します。
python3 ceph-external-cluster-details-exporter.py --help
# python3 ceph-external-cluster-details-exporter.py --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow MON コンテナー内 (コンテナー化されたデプロイメント) または MON ノード (RPM デプロイメント) からスクリプトを実行することもできます。
注記yum install cephadmコマンドを使用してから、cephadmコマンドを使用して、コンテナーを使用して RHCS クラスターをデプロイします。ノードへの Ceph パッケージのインストールには、yumを使用するのではなく、cephadmコマンドを使用して RHCS コンテナーイメージをプルする必要があります。詳細は、RHCS 製品ドキュメント を参照してください。RHCS クラスターから外部クラスターの詳細を取得するには、以下のコマンドを実行します。
python3 ceph-external-cluster-details-exporter.py \ --rbd-data-pool-name <rbd block pool name> [optional arguments]
# python3 ceph-external-cluster-details-exporter.py \ --rbd-data-pool-name <rbd block pool name> [optional arguments]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name ceph-rbd --monitoring-endpoint xxx.xxx.xxx.xxx --monitoring-endpoint-port xxxx --rgw-endpoint xxx.xxx.xxx.xxx:xxxx --run-as-user client.ocs
# python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name ceph-rbd --monitoring-endpoint xxx.xxx.xxx.xxx --monitoring-endpoint-port xxxx --rgw-endpoint xxx.xxx.xxx.xxx:xxxx --run-as-user client.ocsCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、次のようになります。
rbd-data-pool-name
OpenShift Data Foundation でブロックストレージを提供するために使用される必須のパラメーターです。
rgw-endpoint
(オプション) このパラメーターは、Ceph Rados Gateway for OpenShift Data Foundation を介してオブジェクトストレージをプロビジョニングする場合にのみ必要です。
<ip_address>:<port>の形式でエンドポイントを指定します。注記完全修飾ドメイン名 (FQDN) も
<FQDN>:<PORT>フォーマットでサポートされています。monitoring-endpoint
(オプション) OpenShift Container Platform クラスターから到達可能な、アクティブおよびスタンバイの
mgrsの IP アドレスのコンマ区切りリストを受け入れます。指定しないと、値が自動的に入力されます。monitoring-endpoint-port
(オプション) これは、
--monitoring-endpointで指定されたceph-mgrPrometheus エクスポーターに関連付けられるポートです。指定しないと、値が自動的に入力されます。run-as-user
(オプション) このパラメーターは、スクリプトによって作成される Ceph ユーザーの名前を指定するために使用されます。このパラメーターを指定しないと、デフォルトのユーザー名
client.healthcheckerが作成されます。新規ユーザーのパーミッションは以下のように設定されます。- caps: [mgr] はコマンド設定を許可します。
- caps: [mon] は r を許可し、コマンド quorum_status を許可し、コマンド version を許可します。
-
caps: [osd] allow rwx pool=
RGW_POOL_PREFIX.rgw.meta, allow r pool=.rgw.root, allow rw pool=RGW_POOL_PREFIX.rgw.control, allow rx pool=RGW_POOL_PREFIX.rgw.log, allow x pool=RGW_POOL_PREFIX.rgw.buckets.index
その他のフラグ:
rgw-pool-prefix
(オプション) RGW プールの接頭辞。指定しない場合、デフォルトの接頭辞は
defaultになります。rgw-tls-cert-path
(オプション) RADOS Gateway エンドポイント TLS 証明書のファイルパス。
rgw-skip-tls
(オプション) このパラメーターは、自己署名証明書が提供される場合、TLS 証明書検証を無視します (非推奨)。
ceph-conf
(オプション) Ceph 設定ファイルの名前。
cluster-name
(オプション) Ceph クラスター名。
出力 (output)
(オプション) 出力の保存が必要なファイル。
cephfs-metadata-pool-name
(オプション) CephFS メタデータプールの名前。
cephfs-data-pool-name
(オプション) CephFS データプールの名前。
cephfs-filesystem-name
(オプション) CephFS ファイルシステムの名前。
rbd-metadata-ec-pool-name
(オプション) イレイジャーコードの RBD メタデータプールの名前。
dry-run
(オプション) このパラメーターは、実行されたコマンドを実行せずに出力する際に役立ちます。
restricted-auth-permission
(オプション) このパラメーターは、
cephCSIKeyrings認証パーミッションを特定のプールおよびクラスターに限定します。これで設定する必要がある必須フラグはrbd-data-pool-nameおよびcluster-nameです。また、CephFS ユーザー制限がある場合は、cephfs-filesystem-nameフラグを渡して、パーミッションが特定の CephFS ファイルシステムに限定されるようにすることができます。注記このパラメーターは、新しいデプロイメントにのみ適用する必要があります。プールおよびクラスターごとに
csi-usersを限定するには、新しいcsi-usersとそれらのcsi-users用の新しいシークレットを作成する必要があります。限定された認証パーミッションの例:
python3 /etc/ceph/create-external-cluster-resources.py --cephfs-filesystem-name myfs --rbd-data-pool-name replicapool --cluster-name rookStorage --restricted-auth-permission true
# python3 /etc/ceph/create-external-cluster-resources.py --cephfs-filesystem-name myfs --rbd-data-pool-name replicapool --cluster-name rookStorage --restricted-auth-permission trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow python スクリプトを使用して生成された JSON 出力の例:
[{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "admin-secret", "fsid": "<fs-id>", "mon-secret": "mon-secret"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "<user-id>", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "<pool>"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"name": "rook-ceph-dashboard-link", "kind": "Secret", "data": {"userID": "ceph-dashboard-link", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxx:xxxx", "poolPrefix": "default"}}, {"name": "rgw-admin-ops-user", "kind": "Secret", "data": {"accessKey": "<access-key>", "secretKey": "<secret-key>"}}][{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "admin-secret", "fsid": "<fs-id>", "mon-secret": "mon-secret"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "<user-id>", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "<pool>"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"name": "rook-ceph-dashboard-link", "kind": "Secret", "data": {"userID": "ceph-dashboard-link", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxx:xxxx", "poolPrefix": "default"}}, {"name": "rgw-admin-ops-user", "kind": "Secret", "data": {"accessKey": "<access-key>", "secretKey": "<secret-key>"}}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 出力を
.json拡張のあるファイルに保存します。注記OpenShift Data Foundation がシームレスに機能するには、JSON ファイルを使用してアップロードされるパラメーター (RGW エンドポイント、CephFS の詳細、RBD プールなど) が、ストレージクラスターの作成後も RHCS 外部クラスターで変更されないままであることを確認します。
RHCS クラスターが以前のバージョンの OpenShift Data Foundation デプロイメントにすでに接続されているマルチテナントデプロイメントがある場合は、コマンドを実行します。
python3 ceph-external-cluster-details-exporter.py --upgrade
# python3 ceph-external-cluster-details-exporter.py --upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Browse をクリックして JSON ファイルを選択し、アップロードします。
JSON ファイルの内容が入力され、テキストボックスに表示されます。
-
Next ボタンをクリックします。このボタンは、
.jsonファイルをアップロードすると有効になります。
Review and create ページで、設定の詳細を確認します。
設定を変更するには、Back をクリックして前の設定ページに戻ります。
- Create StorageSystem をクリックします。
検証手順
- Storage → Data Foundation → Storage Systems タブに移動し、すべてのストレージクラスターを表示できることを確認します。
- 外部 OpenShift Data Foundation のすべてのコンポーネントが正常にインストールされていることを確認します。手順については、外部 OpenShift Data Foundation ストレージのデプロイの検証 を参照してください。
第5章 外部 OpenShift Data Foundation ストレージクラスターのデプロイの検証 リンクのコピーリンクがクリップボードにコピーされました!
外部ストレージとしてデプロイした OpenShift Data Foundation が正しくデプロイされていることを確認するには、このセクションを使用してください。
5.1. Pod の状態の確認 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Web コンソールの左側のペインから Workloads → Pods をクリックします。
Project ドロップダウンリストから
openshift-storageを選択します。注記Show default projects オプションが無効になっている場合は、切り替えボタンを使用して、すべてのデフォルトプロジェクトをリスト表示します。
各コンポーネントについて予想される Pod 数や、これがノード数によってどのように異なるかの詳細は、表5.1「OpenShift Data Foundation コンポーネントに対応する Pod」 を参照してください。
以下の Pod が実行中であるを確認します。
Expand 表5.1 OpenShift Data Foundation コンポーネントに対応する Pod コンポーネント 対応する Pod OpenShift Data Foundation Operator
-
ocs-operator-*(任意のワーカーノードに 1 Pod) ocs-metrics-exporter-*(任意のワーカーノードに 1 Pod)注記この Pod は
openshift-storage-extendednamespace にも存在する必要があります。その結果、openshift-storagenamespace とopenshift-storage extendednamespace にそれぞれに 1 つずつ Pod が存在することになります。-
odf-operator-controller-manager-*(任意のワーカーノードに 1 Pod) -
odf-console-*(任意のワーカーノードに 1 Pod) -
csi-addons-controller-manager- *(任意のワーカーノードに 1 つの Pod)
Rook-ceph Operator
-
rook-ceph-operator-*(任意のワーカーノードに 1 Pod)
CSI
cephfs-
csi-cephfsplugin-*(各ワーカーノードに 1 Pod) -
csi-cephfsplugin-provisioner-*(ワーカーノードに分散する 2 Pod)
-
rbd-
csi-rbdplugin-*(各ワーカーノードに 1 Pod) -
csi-rbdplugin-provisioner-*(ストレージノードに分散する 2 Pod)
-
-
5.2. OpenShift Data Foundation クラスターが正常であることの確認 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Web コンソールで、Storage → Data Foundation をクリックします。
- Overview タブの Status カードで、Storage System をクリックし、表示されるポップアップに 2 つのストレージシステムのリンクが表示されていることを確認します。
各ストレージシステムのリンクをクリックし、次の点を確認します。
- Block and File タブの Status カードで、Storage Cluster に緑色のチェックマークが表示されていることを確認します。
- Details カードで、クラスター情報が表示されていることを確認します。
ブロックおよびファイルダッシュボードを使用した OpenShift Data Foundation クラスターの正常性については、OpenShift Data Foundation の監視 を参照してください。
5.3. Multicloud Object Gateway が正常であることの確認 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Web コンソールで、Storage → Data Foundation をクリックします。
Overview タブの Status カードで Storage System をクリックし、表示されたポップアップからストレージシステムリンクをクリックします。
- Object タブの Status カードで、Object Service と Data Resiliency の両方に緑色のチェックマークが表示されていることを確認します。
- Details カード で、Multicloud Object Gateway (MCG) 情報が表示されることを確認します。
RADOS Object Gateway は、OpenShift Data Foundation を外部モードでデプロイする際に、RADOS Object Gateway エンドポイントの詳細が含まれている場合にのみ表示されます。
オブジェクトダッシュボードを使用した OpenShift Data Foundation クラスターの健全性に関する詳細は、OpenShift Data Foundation の監視 を参照してください。
5.4. ストレージクラスの作成および一覧表示の確認 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Web コンソールの左側のペインから Storage → Storage Classes をクリックします。
以下のストレージクラスが OpenShift Data Foundation クラスターの作成時に作成されることを確認します。
-
ocs-external-storagecluster-ceph-rbd -
ocs-external-storagecluster-ceph-rgw -
ocs-external-storagecluster-cephfs
-
-
MDS が外部クラスターにデプロイされていない場合、
ocs-external-storagecluster-cephfsストレージクラスは作成されません。 -
RGW が外部クラスターにデプロイされていない場合、
ocs-external-storagecluster-ceph-rgwストレージクラスは作成されません。
MDS および RGW の詳細は、Red Hat Ceph Storage のドキュメント を参照してください。
5.5. Ceph クラスターが接続されていることの確認 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを実行して、OpenShift Data Foundation クラスターが外部の Red Hat Ceph Storage クラスターに接続されているかどうかを確認します。
oc get cephcluster -n openshift-storage-extended NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL FSID ocs-external-storagecluster-cephcluster 51m Connected Cluster connected successfully HEALTH_OK true 8f01d842-d4b2-11ee-b43c-0050568fb522
$ oc get cephcluster -n openshift-storage-extended
NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL FSID
ocs-external-storagecluster-cephcluster 51m Connected Cluster connected successfully HEALTH_OK true 8f01d842-d4b2-11ee-b43c-0050568fb522
5.6. ストレージクラスターの準備状態の確認 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを実行して、ストレージクラスターが準備状態にあり、External オプションが true に設定されていることを確認します。
oc get storagecluster -n openshift-storage-extended NAME AGE PHASE EXTERNAL CREATED AT VERSION ocs-external-storagecluster 51m Ready true 2024-02-28T10:05:54Z 4.15.0
$ oc get storagecluster -n openshift-storage-extended
NAME AGE PHASE EXTERNAL CREATED AT VERSION
ocs-external-storagecluster 51m Ready true 2024-02-28T10:05:54Z 4.15.0
第6章 アプリケーションワークロードの移行 リンクのコピーリンクがクリップボードにコピーされました!
Migration Toolkit for Containers を使用すると、同一のクラスターをソースとターゲットとして使用して、アプリケーションワークロードを内部モードストレージクラスから外部モードストレージクラスに移行できます。