5.6. GCP PD CSI Driver Operator
5.6.1. 概要
OpenShift Container Platform は、Google Cloud Platform (GCP) 永続ディスク (PD) ストレージの Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。
GCP PD CSI Driver Operator はテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Container Storage Interface (CSI) Operator およびドライバーを使用する場合、永続ストレージ および CSI ボリュームの設定 について理解しておくことをお勧めします。
GCP PD ストレージアセットにマウントする CSI でプロビジョニングされた永続ボリューム (PV) を作成するには、OpenShift Container Platform はデフォルトで GCP PD CSI Driver Operator および GCP PD CSI ドライバーを openshift-cluster-csi-drivers
namespace にインストールします。
- GCP PD CSI Driver Operator: デフォルトで、 Operator は PVC の作成に使用できるストレージクラスを提供します。GCE 永続ディスクを使用した永続ストレージ で説明されているように、GCP PD ストレージを作成するオプションもあります。
- GCP PD ドライバー: このドライバーを使用すると、GCP PD PV を作成し、マウントできます。
OpenShift Container Platform は、GCP PD ストレージをプロビジョニングするためにデフォルトで in-tree (インツリー) または CSI 以外のドライバーの使用に設定されます。この in-tree (インツリー) ドライバーは、OpenShift Container Platform の後続の更新で削除されます。その時点で、既存の in-tree (インツリー) ドライバーを使用してプロビジョニングされるボリュームが CSI ドライバーへの移行用に予定されます。
5.6.2. CSI について
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、in-tree (インツリー) ボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。
5.6.3. GCP PD CSI ドライバーストレージクラスパラメーター
Google Cloud Platform (GCP) 永続ディスク (PD) Container Storage Interface (CSI) ドライバーは CSI の external-provisioner
サイドカーをコントローラーとして使用します。これは、CSI ドライバーでデプロイされる別のヘルパーコンテナーです。サイドカーは、CreateVolume
操作をトリガーして永続ボリューム (PV) を管理します。
GCP PD CSI ドライバーは、csi.storage.k8s.io/fstype
パラメーターキーを使用して動的プロビジョニングをサポートします。以下の表は、OpenShift Container Platform がサポートするすべての GCP PD CSI ストレージクラスパラメーターについて説明しています。
パラメーター | 値 | デフォルト | 説明 |
---|---|---|---|
|
|
| 標準の PV または solid-state-drive (SSD) PV を選択できます。 |
|
|
| zonal またはリージョン PV を選択できます。 |
| 新規ディスクの暗号化に使用するキーの完全修飾リソース識別子。 | 空の文字列 | 顧客管理の暗号鍵 (CMEK) を使用して新規ディスクを暗号化します。 |
5.6.4. カスタムで暗号化された永続ボリュームの作成
PersistentVolumeClaim
オブジェクトの作成時に、OpenShift Container Platform は新規永続ボリューム (PV) をプロビジョニングし、PersistentVolume
オブジェクトを作成します。新規に作成された PV を暗号化することで、Google Cloud Platform (GCP) にカスタム暗号化キーを追加し、クラスター内の PV を保護することができます。
暗号化の場合、作成した新たに割り当てられる PV は、新規または既存の Google Cloud Key Management Service (KMS) キーを使用してクラスターで顧客管理の暗号鍵 (CMEK) を使用します。
前提条件
- 実行中の OpenShift Container Platform クラスターにログインしている。
- Cloud KMS キーリングとキーのバージョンを作成している。
CMEK および Cloud KMS リソースについての詳細は、顧客管理の暗号鍵 (CMEK) の使用 を参照してください。
手順
カスタムで暗号化された PV を作成するには、以下の手順を実行します。
Cloud KMS キーを使用してストレージクラスを作成します。以下の例では、暗号化されたボリュームの動的プロビジョニングを有効にします。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-gce-pd-cmek provisioner: pd.csi.storage.gke.io volumeBindingMode: "WaitForFirstConsumer" allowVolumeExpansion: true parameters: type: pd-standard disk-encryption-kms-key: projects/<key-project-id>/locations/<location>/keyRings/<key-ring>/cryptoKeys/<key> 1
- 1
- このフィールドは、新規ディスクの暗号化に使用されるキーのリソース識別子である必要があります。値では、大文字と小文字が区別されます。キー ID の値を指定する方法についての詳細は、Retrieving a resource's ID および Getting a Cloud KMS resource ID を参照してください。
注記disk-encryption-kms-key
パラメーターは既存のストレージクラスに追加することはできません。ただし、ストレージクラスを削除し、同じ名前および異なるパラメーターセットでこれを再作成することができます。これを実行する場合、既存クラスのプロビジョナーはpd.csi.storage.gke.io
である必要があります。oc
コマンドを使用して、ストレージクラスを OpenShift Container Platform クラスターにデプロイします。$ oc describe storageclass csi-gce-pd-cmek
出力例
Name: csi-gce-pd-cmek IsDefaultClass: No Annotations: None Provisioner: pd.csi.storage.gke.io Parameters: disk-encryption-kms-key=projects/key-project-id/locations/location/keyRings/ring-name/cryptoKeys/key-name,type=pd-standard AllowVolumeExpansion: true MountOptions: none ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: none
直前の手順で作成したストレージクラスオブジェクトの名前に一致する
pvc.yaml
という名前のファイルを作成します。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: csi-gce-pd-cmek resources: requests: storage: 6Gi
注記新規ストレージクラスをデフォルトとしてマークした場合は、
storageClassName
フィールドを省略できます。PVC をクラスターに適用します。
$ oc apply -f pvc.yaml
PVC のステータスを取得し、これが作成され、新規にプロビジョニングされた PV にバインドされていることを確認します。
$ oc get pvc
出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd-cmek 9s
注記ストレージクラスで
volumeBindingMode
フィールドがWaitForFirstConsumer
に設定されている場合、これを検証する前に PVC を使用するために Pod を作成する必要があります。
CMEK で保護される PV が OpenShift Container Platform クラスターで使用できるようになります。