4.3. Azure File を使用した永続ストレージ
OpenShift Container Platform では、Microsoft Azure File ボリュームがサポートされます。Azure を使用して、OpenShift Container Platform クラスターに永続ストレージをプロビジョニングできます。これには、Kubernetes と Azure についてある程度の理解があることが前提となります。
Kubernetes 永続ボリュームフレームワークは、管理者がクラスターのプロビジョニングを永続ストレージを使用して実行できるようにし、ユーザーが基礎となるインフラストラクチャーの知識がなくてもこれらのリソースを要求できるようにします。Azure File ボリュームを動的にプロビジョニングできます。
永続ボリュームは、単一のプロジェクトまたは namespace にバインドされず、OpenShift Container Platform クラスター全体で共有できます。永続ボリューム要求はプロジェクトまたは namespace に固有のもので、アプリケーションで使用できるようにユーザーによって要求されます。
インフラストラクチャーにおけるストレージの高可用性は、基礎となるストレージのプロバイダーに委ねられています。
Azure File ボリュームは Server Message Block を使用します。
OpenShift Container Platform 4.13 以降では、Azure File インツリーボリュームプラグインを同等の CSI ドライバーに自動的に移行します。
CSI 自動移行はシームレスに行ってください。移行をしても、永続ボリューム、永続ボリューム要求、ストレージクラスなどの既存の API オブジェクトを使用する方法は変更されません。移行の詳細は、CSI の自動移行 を参照してください。
関連情報
4.3.1. Azure File 共有永続ボリューム要求の作成
永続ボリューム要求を作成するには、最初に Azure アカウントおよびキーを含む Secret
オブジェクトを定義する必要があります。このシークレットは PersistentVolume
定義に使用され、アプリケーションで使用できるように永続ボリューム要求によって参照されます。
前提条件
- Azure File 共有があること。
- この共有にアクセスするための認証情報 (とくにストレージアカウントおよびキー) が利用可能であること。
手順
Azure File の認証情報が含まれる
Secret
オブジェクトを作成します。$ oc create secret generic <secret-name> --from-literal=azurestorageaccountname=<storage-account> \ 1 --from-literal=azurestorageaccountkey=<storage-account-key> 2
作成した
Secret
オブジェクトを参照するPersistentVolume
を作成します。apiVersion: "v1" kind: "PersistentVolume" metadata: name: "pv0001" 1 spec: capacity: storage: "5Gi" 2 accessModes: - "ReadWriteOnce" storageClassName: azure-file-sc azureFile: secretName: <secret-name> 3 shareName: share-1 4 readOnly: false
作成した永続ボリュームにマップする
PersistentVolumeClaim
オブジェクトを作成します。apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "claim1" 1 spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "5Gi" 2 storageClassName: azure-file-sc 3 volumeName: "pv0001" 4
4.3.2. Azure File 共有の Pod へのマウント
永続ボリューム要求の作成後に、これをアプリケーション内で使用できます。以下の例は、この共有を Pod 内にマウントする方法を示しています。
前提条件
- 基礎となる Azure File 共有にマップされる永続ボリューム要求があること。
手順
既存の永続ボリューム要求をマウントする Pod を作成します。
apiVersion: v1 kind: Pod metadata: name: pod-name 1 spec: containers: ... volumeMounts: - mountPath: "/data" 2 name: azure-file-share volumes: - name: azure-file-share persistentVolumeClaim: claimName: claim1 3