Azure ファイル共有を使用する

GKE on Azure では、Azure ファイル共有のマウントがサポートされています。GKE on Azure で使用する Azure ファイル共有がすでにある場合は、PersistentVolume(PV)オブジェクトを作成して特定の PersistentVolumeClaim(PVC)用に予約できます。

このページでは、データが入力された既存の共有を使用して PV を作成する方法と、Pod で PV を使用する方法について説明します。

始める前に

Azure ストレージ アカウント情報を保存する

GKE on Azure は、Azure ストレージ アカウントにアクセスするための情報を Secret に保存します。クラスタで Secret を作成していない場合は、追加する必要があります。この Secret がクラスタにある場合は、既存の共有用の PersistentVolume を作成するに進んでください。

  1. Secret を作成するには、次のマニフェストを「azure-service-account-key.yaml」という名前のファイルにコピーします。

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-secret-account-key
    type: Opaque
    stringData:
      accountname: STORAGE_ACCOUNT_NAME
      accountkey: STORAGE_ACCOUNT_KEY
    

    次のように置き換えます。

    • STORAGE_ACCOUNT_NAME: Azure ストレージ アカウント名
    • STORAGE_ACCOUNT_KEY: Azure ストレージ アカウント キー
  2. kubectl ツールでファイルをクラスタに適用します。

    kubectl apply -f azure-service-account-key.yaml
    

既存の共有用の PersistentVolume を作成する

クラスタに新しい PV を指定して、既存の Azure File 共有をインポートします。PV の作成手順は次のとおりです。

  1. 次の YAML を existing-volume.yaml というファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: file.csi.azure.com
        readOnly: false
        volumeHandle: VOLUME_ID
    

    次のように置き換えます。

    • VOLUME_NAME: ボリュームの名前
    • VOLUME_CAPACITY: ボリュームのサイズ。例: 30GiKubernetes でのボリューム容量の指定の詳細については、Meaning of memory をご覧ください。
    • VOLUME_ID: ボリュームの一意の ID。RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME# の文字列の形式になります。ここで、
    • FILE_SHARE_NAME: Azure File の共有名

    ストレージ アカウントがクラスタとは異なるリソース グループにある場合、ストレージ アカウント キーを含む Secret への参照を追加する必要があります。参照を追加するには、spec.csi セクションに以下を挿入します。

    # Optional. Only required if your storageAccount is in a different resource group than the cluster.
        nodeStageSecretRef:
          name: NODE_STAGE_SECRET_NAME
          namespace: NODE_STAGE_SECRET_NAMESPACE
    

    次のように置き換えます。

    • NODE_STAGE_SECRET_NAME: Secret の名前
    • NODE_STAGE_SECRET_NAMESPACE Secret が含まれる Namespace
  2. YAML をクラスタに適用します。

    kubectl apply -f existing-volume.yaml
    
  3. kubectl describe pv で PV の作成を確認します。

    kubectl describe pv VOLUME_NAME
    

    このコマンドの出力には、PV のステータスが含まれます。

PersistentVolumeClaim と Pod でボリュームを使用する

ボリュームをインポートしたら、PVC とその PVC をマウントする Pod を作成できます。

  1. 次の YAML は、PVC を作成し、Nginx ウェブサーバーを実行する Pod に接続します。このコードを nginx.yaml という名前のファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ACCESS_MODE
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: my-pvc
    

    次のように置き換えます。

    • STORAGE_CLASS: 以前に作成した PersistentVolume の StorageClass の名前。例: standard-rwo
    • ACCESS_MODE: ボリュームのアクセスモード。Azure Disk の場合は、ReadWriteOnce を使用します。Azure File の場合は、ReadWriteMany を使用します。
    • VOLUME_CAPACITY: ボリュームのサイズ。例: 30Gi
  2. YAML をクラスタに適用します。

    kubectl apply -f nginx.yaml
    
  3. kubectl describe で Nginx インスタンスのステータスを確認します。出力には、RunningSTATUS が含まれます。

    kubectl describe pod web-server
    
  4. Pod を削除するには、kubectl delete コマンドを使用します。

    kubectl delete -f nginx.yaml
    

次のステップ