Azure NetApp Files と Azure Kubernetes Service を統合するIntegrate Azure NetApp Files with Azure Kubernetes Service

Azure NetApp Files は、エンタープライズクラスでハイパフォーマンスの Azure 上で実行される従量制課金ファイル ストレージ サービスです。Azure NetApp Files is an enterprise-class, high-performance, metered file storage service running on Azure. この記事では、Azure NetApp Files と Azure Kubernetes Service (AKS) を統合する方法を説明します。This article shows you how to integrate Azure NetApp Files with Azure Kubernetes Service (AKS).

開始する前にBefore you begin

この記事は、AKS クラスターがすでに存在していることを前提としています。This article assumes that you have an existing AKS cluster. AKS クラスターが必要な場合は、Azure CLI を使用した場合または Azure portal を使用した場合の AKS のクイックスタートを参照してください。If you need an AKS cluster, see the AKS quickstart using the Azure CLI or using the Azure portal.

重要

また、AKS クラスターは、Azure NetApp Files をサポートするリージョンにある必要があります。Your AKS cluster must also be in a region that supports Azure NetApp Files.

また、Azure CLI バージョン 2.0.59 以降がインストールされ、構成されている必要もあります。You also need the Azure CLI version 2.0.59 or later installed and configured. バージョンを確認するには、 az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、「 Azure CLI のインストール」を参照してください。If you need to install or upgrade, see Install Azure CLI.

制限事項Limitations

Azure NetApp Files を使用した場合、次の制限が適用されます。The following limitations apply when you use Azure NetApp Files:

  • Azure NetApp Files は、選択された Azure リージョンでのみ利用できます。Azure NetApp Files is only available in selected Azure regions.
  • Azure NetApp Files を使用するには、Azure NetApp Files サービスへのアクセス権が必要です。Before you can use Azure NetApp Files, you must be granted access to the Azure NetApp Files service. アクセスを申請するには、Azure NetApp Files 順番待ちリスト送信フォームを使用できます。To apply for access, you can use the Azure NetApp Files waitlist submission form. Azure NetApp Files サービスには、Azure NetApp Files チームから正式な確認メールが届くまでアクセスすることができません。You can't access the Azure NetApp Files service until you receive the official confirmation email from the Azure NetApp Files team.
  • Azure NetApp Files サービスは、お使いの AKS クラスターと同じ仮想ネットワークに作成する必要があります。Your Azure NetApp Files service must be created in the same virtual network as your AKS cluster.
  • Azure NetApp Files の静的プロビジョニングのみが、AKS でサポートされています。Only static provisioning for Azure NetApp Files is supported on AKS.

Azure NetApp Files の構成Configure Azure NetApp Files

重要

Microsoft.NetApp リソース プロバイダーを登録する前に、サブスクリプションの Azure NetApp Files 順番待ちリスト送信フォームを記入する必要があります。Before you can register the Microsoft.NetApp resource provider, you must complete the Azure NetApp Files waitlist submission form for your subscription. Azure NetApp Files チームから正式な確認メールが届くまで、リソース プロバイダーを登録することはできません。You can't register the resource provide until you receive the official confirmation email from the Azure NetApp Files team.

Microsoft.NetApp リソース プロバイダーを登録します。Register the Microsoft.NetApp resource provider:

az provider register --namespace Microsoft.NetApp --wait

注意

この処理には、完了までに時間がかかる場合があります。This can take some time to complete.

AKS で使用するための Azure NetApp アカウントを作成する場合は、ノード リソース グループ内にアカウントを作成する必要があります。When you create an Azure NetApp account for use with AKS, you need to create the account in the node resource group. 最初に、az aks show コマンドを使用してリソース グループ名を取得し、--query nodeResourceGroup クエリ パラメーターを追加します。First, get the resource group name with the az aks show command and add the --query nodeResourceGroup query parameter. 次の例では、リソース グループ名 myResourceGroup にある myAKSCluster という名前の AKS クラスターのノード リソース グループを取得しています。The following example gets the node resource group for the AKS cluster named myAKSCluster in the resource group name myResourceGroup:

$ az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv

MC_myResourceGroup_myAKSCluster_eastus

az netappfiles account create を使用して、そのノード リソース グループ (AKS クラスターと同じリージョン) に Azure NetApp Files アカウントを作成します。Create an Azure NetApp Files account in the node resource group and same region as your AKS cluster using az netappfiles account create. 次の例では、MC_myResourceGroup_myAKSCluster_eastus リソース グループと eastus リージョンに myaccount1 という名前のアカウントを作成します。The following example creates an account named myaccount1 in the MC_myResourceGroup_myAKSCluster_eastus resource group and eastus region:

az netappfiles account create \
    --resource-group MC_myResourceGroup_myAKSCluster_eastus \
    --location eastus \
    --account-name myaccount1

az netappfiles pool create を使用して新しい容量プールを作成します。Create a new capacity pool by using az netappfiles pool create. 次の例では、Premium サービス レベルの 4 TB の mypool1 という名前の新しい容量プールを作成します。The following example creates a new capacity pool named mypool1 with 4 TB in size and Premium service level:

az netappfiles pool create \
    --resource-group MC_myResourceGroup_myAKSCluster_eastus \
    --location eastus \
    --account-name myaccount1 \
    --pool-name mypool1 \
    --size 4 \
    --service-level Premium

az network vnet subnet create を使用して、Azure NetApp Files に委任するサブネットを作成します。Create a subnet to delegate to Azure NetApp Files using az network vnet subnet create. このサブネットは、AKS クラスターと同じ仮想ネットワーク内に存在する必要があります。This subnet must be in the same virtual network as your AKS cluster.

RESOURCE_GROUP=MC_myResourceGroup_myAKSCluster_eastus
VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
SUBNET_NAME=MyNetAppSubnet
az network vnet subnet create \
    --resource-group $RESOURCE_GROUP \
    --vnet-name $VNET_NAME \
    --name $SUBNET_NAME \
    --delegations "Microsoft.NetApp/volumes" \
    --address-prefixes 10.0.0.0/28

az netappfiles volume create を使用して、ボリュームを作成します。Create a volume by using az netappfiles volume create.

RESOURCE_GROUP=MC_myResourceGroup_myAKSCluster_eastus
LOCATION=eastus
ANF_ACCOUNT_NAME=myaccount1
POOL_NAME=mypool1
SERVICE_LEVEL=Premium
VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
SUBNET_NAME=MyNetAppSubnet
SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv)
VOLUME_SIZE_GiB=100 # 100 GiB
UNIQUE_FILE_PATH="myfilepath2" # Please note that creation token needs to be unique within all ANF Accounts

az netappfiles volume create \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --account-name $ANF_ACCOUNT_NAME \
    --pool-name $POOL_NAME \
    --name "myvol1" \
    --service-level $SERVICE_LEVEL \
    --vnet $VNET_ID \
    --subnet $SUBNET_ID \
    --usage-threshold $VOLUME_SIZE_GiB \
    --creation-token $UNIQUE_FILE_PATH \
    --protocol-types "NFSv3"

PersistentVolume の作成Create the PersistentVolume

az netappfiles volume show を使用して、ボリュームの詳細を一覧表示します。List the details of your volume using az netappfiles volume show

$ az netappfiles volume show --resource-group $RESOURCE_GROUP --account-name $ANF_ACCOUNT_NAME --pool-name $POOL_NAME --volume-name "myvol1"

{
  ...
  "creationToken": "myfilepath2",
  ...
  "mountTargets": [
    {
      ...
      "ipAddress": "10.0.0.4",
      ...
    }
  ],
  ...
}

PersistentVolume を定義する pv-nfs.yaml を作成します。Create a pv-nfs.yaml defining a PersistentVolume. path を前のコマンドからの creationToken に、serveripAddress に置き換えます。Replace path with the creationToken and server with ipAddress from the previous command. 例:For example:

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.0.0.4
    path: /myfilepath2

serverpath を前の手順で作成した NFS (ネットワーク ファイル システム) ボリュームの値に更新します。Update the server and path to the values of your NFS (Network File System) volume you created in the previous step. kubectl apply コマンドを使用して PersistentVolume を作成します。Create the PersistentVolume with the kubectl apply command:

kubectl apply -f pv-nfs.yaml

kubectl describe コマンドを使用して、PersistentVolume の "状態" が "使用可能" であることを確認します。Verify the Status of the PersistentVolume is Available using the kubectl describe command:

kubectl describe pv pv-nfs

PersistentVolumeClaim の作成Create the PersistentVolumeClaim

PersistentVolume を定義する pvc-nfs.yaml を作成します。Create a pvc-nfs.yaml defining a PersistentVolume. 例:For example:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nfs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 1Gi

kubectl apply コマンドを使用して PersistentVolumeClaim を作成します。Create the PersistentVolumeClaim with the kubectl apply command:

kubectl apply -f pvc-nfs.yaml

kubectl describe コマンドを使用して、PersistentVolumeClaim の "状態" が "使用可能" であることを確認します。Verify the Status of the PersistentVolumeClaim is Bound using the kubectl describe command:

kubectl describe pvc pvc-nfs

ポッドを使ったマウントMount with a pod

PersistentVolumeClaim を使用するポッドを定義する nginx-nfs.yaml を作成します。Create a nginx-nfs.yaml defining a pod that uses the PersistentVolumeClaim. 例:For example:

kind: Pod
apiVersion: v1
metadata:
  name: nginx-nfs
spec:
  containers:
  - image: nginx
    name: nginx-nfs
    command:
    - "/bin/sh"
    - "-c"
    - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done
    volumeMounts:
    - name: disk01
      mountPath: /mnt/azure
  volumes:
  - name: disk01
    persistentVolumeClaim:
      claimName: pvc-nfs

kubectl apply コマンドを使用してポッドを作成します。Create the pod with the kubectl apply command:

kubectl apply -f nginx-nfs.yaml

kubectl describe コマンドを使用して、ポッドが "実行中" であることを確認します。Verify the pod is Running using the kubectl describe command:

kubectl describe pod nginx-nfs

ボリュームがポッドにマウントされていることを kubectl exec を使用して確認してポッドに接続してから、df -h を使用してボリュームがマウントされてるかどうかを確認します。Verify your volume has been mounted in the pod by using kubectl exec to connect to the pod then df -h to check if the volume is mounted.

$ kubectl exec -it nginx-nfs -- bash

root@nginx-nfs:/# df -h
Filesystem             Size  Used Avail Use% Mounted on
...
10.0.0.4:/myfilepath2  100T  384K  100T   1% /mnt/azure
...

次の手順Next steps

Azure NetApp Files の詳細については、「Azure NetApp Files とは」を参照してください。For more information on Azure NetApp Files, see What is Azure NetApp Files. NFS と AKS の使用について詳しくは、「NFS (Network File System) Linux Server ボリュームを手動で作成し、Azure Kubernetes Service (AKS) と共に使用する」を参照してください。For more information on using NFS with AKS, see Manually create and use an NFS (Network File System) Linux Server volume with Azure Kubernetes Service (AKS).