2.4. Azure File を使用した永続ストレージ

OpenShift Container Platform では、Microsoft Azure File ボリュームがサポートされます。Azure を使用して、OpenShift Container Platform クラスターに永続ストレージをプロビジョニングできます。これには、Kubernetes と Azure についてのある程度の理解があることが前提となります。

Kubernetes 永続ボリュームフレームワークは、管理者がクラスターのプロビジョニングを永続ストレージを使用して実行できるようにし、ユーザーが基礎となるインフラストラクチャーの知識がなくてもこれらのリソースを要求できるようにします。Azure File ボリュームは動的にプロビジョニングできます。

永続ボリュームは単一のプロジェクトまたは namespace にバインドされず、それらは OpenShift Container Platform クラスター間で共有できます。PersistentVolumeClaim (永続ボリューム要求、PVC) はプロジェクトまたは namespace に固有のもので、アプリケーションで使用できるようにユーザーによって要求されます。

重要

インフラストラクチャーにおけるストレージの高可用性は、基礎となるストレージのプロバイダーに委ねられています。

その他の参考資料

2.4.1. Azure File 共有 PersistentVolumeClaim の作成

PersistentVolumeClaim を作成するには、最初に Azure アカウントおよびキーを含むシークレットを定義する必要があります。このシークレットは PersistentVolume 定義に使用され、アプリケーションで使用できるように PersistentVolumeClaim によって参照されます。

前提条件

  • Azure File 共有があること。
  • この共有にアクセスするための認証情報 (とくにストレージアカウントおよびキー) が利用可能であること。

手順

  1. Azure File の認証情報が含まれるシークレットを作成します。

    $ oc create secret generic <secret-name> --from-literal=azurestorageaccountname=<storage-account> \ 1
      --from-literal=azurestorageaccountkey=<storage-account-key> 2
    1
    Azure File ストレージアカウントの名前。
    2
    Azure File ストレージアカウントキー。
  2. 作成したシークレットを参照する 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
    1
    PersistentVolume の名前。
    2
    この PersistentVolume のサイズ。
    3
    Azure File 共有の認証情報を含むシークレットの名前。
    4
    Azure File 共有の名前。
  3. 作成した PersistentVolume にマップする 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
    1
    PersistentVolumeClaim の名前。
    2
    この PersistentVolumeClaim のサイズ。
    3
    PersistentVolume のプロビジョニングに使用される StorageClass の名前。PersistentVolume 定義で使用される StorageClass を指定します。
    4
    Azure File 共有を参照する既存の PersistentVolume の名前。

2.4.2. Azure File 共有の Pod へのマウント

PersistentVolumeClaim の作成後に、これをアプリケーション内で使用できます。以下の例は、この共有を Pod 内にマウントする方法を示しています。

前提条件

  • 基礎となる Azure File 共有にマップされる PersistentVolumeClaim があること。

手順

  • 既存の PersistentVolumeClaim をマウントする 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
    1
    Pod の名前。
    2
    Pod 内に Azure File 共有をマウントするパス。
    3
    以前に作成された PersistentVolumeClaim の名前。