第5章 Container Storage Interface (CSI) の使用
5.1. CSI ボリュームの設定 リンクのコピーリンクがクリップボードにコピーされました!
Container Storage Interface (CSI) により、Red Hat OpenShift Service on AWS は CSI インターフェイス を永続ストレージとして実装するストレージバックエンドからストレージを使用できます。
Red Hat OpenShift Service on AWS 4 は、CSI 仕様 のバージョン 1.6.0 をサポートします。
5.1.1. CSI アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
CSI ドライバーは通常、コンテナーイメージとして提供されます。これらのコンテナーは、それらが実行される Red Hat OpenShift Service on AWS を認識しません。Red Hat OpenShift Service on AWS で CSI 互換のストレージバックエンドを使用するには、クラスター管理者は、Red Hat OpenShift Service on AWS とストレージドライバーの間のブリッジとして機能する複数のコンポーネントをデプロイする必要があります。
次の図は、Red Hat OpenShift Service on AWS クラスターの Pod で実行されるコンポーネントの概要を示しています。
異なるストレージバックエンドに対して複数の CSI ドライバーを実行できます。各ドライバーには、独自の外部コントローラーのデプロイメントおよびドライバーと CSI レジストラーを含むデーモンセットが必要です。
5.1.1.1. 外部の CSI コントローラー リンクのコピーリンクがクリップボードにコピーされました!
外部の CSI コントローラーは、5 つのコンテナーを含む 1 つまたは複数の Pod を配置するデプロイメントです。
-
スナップショットコンテナーは、
VolumeSnapshot
オブジェクトおよびVolumeSnapshotContent
オブジェクトを監視し、VolumeSnapshotContent
オブジェクトの作成および削除を担当します。 -
リサイザーコンテナーは、
PersistentVolumeClaim
オブジェクトでより多くのストレージを要求した場合に、PersistentVolumeClaim
の更新を監視し、CSI エンドポイントに対してControllerExpandVolume
操作をトリガーするサイドカーコンテナーです。 -
外部の CSI アタッチャーコンテナーは、Red Hat OpenShift Service on AWS からの
attach
およびdetach
呼び出しを、CSI ドライバーへのそれぞれのControllerPublish
およびControllerUnpublish
呼び出しに変換します。 -
Red Hat OpenShift Service on AWS からの
provision
およびdelete
呼び出しを、CSI ドライバーへのそれぞれのCreateVolume
およびDeleteVolume
呼び出しに変換する外部 CSI プロビジョナーコンテナー。 - CSI ドライバーコンテナー。
CSI アタッチャーおよび CSI プロビジョナーコンテナーは、Unix Domain Socket を使用して、CSI ドライバーコンテナーと通信し、CSI の通信が Pod 外に出ないようにします。CSI ドライバーは Pod 外からはアクセスできません。
通常、attach
、detach
、provision
、および delete
操作では、CSI ドライバーがストレージバックエンドに対する認証情報を使用する必要があります。CSI コントローラー Pod をインフラストラクチャーノードで実行し、コンピュートノードで致命的なセキュリティー違反が発生した場合でも認証情報がユーザープロセスに漏洩されないようにします。
外部のアタッチャーは、サードパーティーの attach
または detach
操作をサポートしない CSI ドライバーに対しても実行する必要があります。外部のアタッチャーは、CSI ドライバーに対して ControllerPublish
または ControllerUnpublish
操作を実行しません。ただし、必要な Red Hat OpenShift Service on AWS 接続 API を実装するために実行する必要があります。
5.1.1.2. CSI ドライバーのデーモンセット リンクのコピーリンクがクリップボードにコピーされました!
CSI ドライバーデーモンセットは、Red Hat OpenShift Service on AWS が CSI ドライバーによって提供されるストレージをノードにマウントし、それをユーザーワークロード (Pod) で永続ボリューム (PV) として使用できるようにするすべてのノードで Pod を実行します。CSI ドライバーがインストールされた Pod には、以下のコンテナーが含まれます。
-
ノード上で実行中の
openshift-node
サービスに CSI ドライバーを登録する CSI ドライバーレジストラー。このノードで実行中のopenshift-node
プロセスは、ノードで利用可能な UNIX Domain Socket を使用して CSI ドライバーに直接接続します。 - CSI ドライバー
ノードにデプロイされた CSI ドライバーには、ストレージバックエンドへの認証情報をできる限り少なく指定する必要があります。Red Hat OpenShift Service on AWS は、これらの呼び出しが実装されている場合、NodePublish
/NodeUnpublish
および NodeStage
/NodeUnstage
などの CSI 呼び出しのノードプラグインセットのみを使用します。
5.1.2. Red Hat OpenShift Service on AWS でサポートされている CSI ドライバー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS は、デフォルトで特定の CSI ドライバーをインストールし、in-tree ボリュームプラグインでは不可能なストレージオプションをユーザーに提供します。
これらのサポートされているストレージアセットにマウントする CSI プロビジョニングされた永続ボリュームを作成するために、Red Hat OpenShift Service on AWS は、必要な CSI ドライバー Operator、CSI ドライバー、および必要なストレージクラスをデフォルトでインストールします。Operator およびドライバーのデフォルト namespace の詳細は、特定の CSI Driver Operator のドキュメントを参照してください。
AWS EFS ドライバーはデフォルトではインストールされないため、手動でインストールする必要があります。AWS EFS CSI ドライバーのインストール手順については、関連情報 セクションの「AWS Elastic File Service CSI Driver Operator」を参照してください。
次の表は、Red Hat OpenShift Service on AWS とともにインストールされ、Red Hat OpenShift Service on AWS でサポートされている CSI ドライバーと、ドライバーがサポートしている CSI 機能 (ボリュームのスナップショットやサイズ変更など) について説明しています。
次の表に記載されているドライバーに加えて、Red Hat OpenShift Service on AWS はサードパーティーのストレージベンダーの CSI ドライバーでも機能します。Red Hat はサードパーティーのプロビジョナーや接続されている CSI ドライバーを監視しておらず、ソースコード、デプロイメント、操作、Kubernetes の互換性については、ベンダーがすべて制御しています。これらのボリュームプロビジョナーはお客様が管理するものとし、各ベンダーにはそのサポートを提供する責任があります。詳細は、関連情報 セクションの Red Hat OpenShift Service on AWS の責任共有 を参照してください。
CSI ドライバー | CSI ボリュームスナップショット | CSI ボリュームグループスナップショット [1] | CSI のクローン作成 | CSI のサイズ変更 | インラインの一時ボリューム |
---|---|---|---|---|---|
AWS EBS |
✅ |
|
|
✅ |
|
AWS EFS |
|
|
|
|
|
LVM Storage |
✅ |
|
✅ |
✅ |
|
5.1.3. 動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
永続ストレージの動的プロビジョニングは、CSI ドライバーおよび基礎となるストレージバックエンドの機能により異なります。CSI ドライバーのプロバイダーは、Red Hat OpenShift Service on AWS でストレージクラスを作成する方法と、設定に使用できるパラメーターを文書化する必要があります。
作成されたストレージクラスは、動的プロビジョニングを有効にするために設定できます。
手順
デフォルトのストレージクラスを作成します。これにより、特殊なストレージクラスを必要としないすべての PVC がインストールされた CSI ドライバーでプロビジョニングされます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.4. CSI ドライバーの使用例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、テンプレートを変更せずにデフォルトの MySQL テンプレートをインストールします。
前提条件
- CSI ドライバーがデプロイされている。
- 動的プロビジョニング用にストレージクラスが作成されている。
手順
MySQL テンプレートを作成します。
oc new-app mysql-persistent
# oc new-app mysql-persistent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
--> Deploying template "openshift/mysql-persistent" to project default ...
--> Deploying template "openshift/mysql-persistent" to project default ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pvc
# oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS VOLUME CAPACITY mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi ACCESS MODES STORAGECLASS AGE RWO gp3-csi 3s
NAME STATUS VOLUME CAPACITY mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi ACCESS MODES STORAGECLASS AGE RWO gp3-csi 3s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow