This documentation is for the most recent version of Anthos clusters on Azure, released in November 2021. See the Release notes for more information.
Stay organized with collections Save and categorize content based on your preferences.

Use an Azure File share

Anthos clusters on Azure supports mounting Azure Files shares. If you already have an Azure File share to use with Anthos clusters on Azure, you can create a PersistentVolume (PV) object and reserve it for a specific PersistentVolumeClaim (PVC).

This page explains how to create a PV by using an existing share populated with data, and how to use the PV in a Pod.

Before you begin

Store your Azure storage account information

Anthos clusters on Azure stores information to access your Azure storage account in a Secret. If you haven't created a Secret in your cluster, you must add one. If you have this Secret in you cluster, skip to Create a PersistentVolume for a pre-existing share.

  1. To create the Secret, copy the following manifest into a file named 'azure-service-account-key.yaml'.

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

    Replace the following:

    • STORAGE_ACCOUNT_NAME: your Azure storage account name
    • STORAGE_ACCOUNT_KEY: your Azure storage account key
  2. Apply the file to your cluster with the kubectl tool:

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

Create a PersistentVolume for a pre-existing share

You import an existing Azure File share by specifying a new PV in your cluster. To create the PV, do the following:

  1. Copy the following YAML into a file named existing-volume.yaml:

    apiVersion: v1
    kind: PersistentVolume
      name: VOLUME_NAME
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
        readOnly: false
        volumeHandle: VOLUME_ID

    Replace the following:

    • VOLUME_NAME: a name for the volume
    • VOLUME_CAPACITY: size of the volume. For example, 30Gi. For more information on specifying volume capacity in Kubernetes, see the Meaning of memory.
    • VOLUME_ID: a unique ID for the volume, formatted as a string of RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME# where
    • FILE_SHARE_NAME: the Azure File share name

    If your storage account is in a different resource group than your cluster, you need to add a reference to a Secret that contains your storage account key. To add the reference, insert the following in the spec.csi section:

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

    Replace the following:

    • NODE_STAGE_SECRET_NAME: the name of the Secret
    • NODE_STAGE_SECRET_NAMESPACE the Namespace that contains the Secret
  2. Apply the YAML to your cluster.

    kubectl apply -f existing-volume.yaml
  3. Confirm the creation of your PV with kubectl describe pv.

    kubectl describe pv VOLUME_NAME

    The output of this command contains the status of the PV.

Use the volume with a PersistentVolumeClaim and Pod

After you have imported your volume, you can create a PVC and a Pod that mounts the PVC.

  1. The following YAML creates a PVC and attaches it to a Pod running the Nginx web server. Copy it into a file named nginx.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
      name: my-pvc
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
        - ACCESS_MODE
          storage: VOLUME_CAPACITY
    apiVersion: v1
    kind: Pod
      name: web-server
       - name: web-server
         image: nginx
           - mountPath: /var/lib/www/html
             name: data
       - name: data
           claimName: my-pvc

    Replace the following:

    • STORAGE_CLASS: the name of the StorageClass from the PersistentVolume you created previously. For example, standard-rwo.
    • ACCESS_MODE: the access mode of the volume. For Azure Disk, use ReadWriteOnce. For Azure File, use ReadWriteMany.
    • VOLUME_CAPACITY: size of the volume. For example, 30Gi.
  2. Apply the YAML to your cluster.

    kubectl apply -f nginx.yaml
  3. Check the status of your Nginx instance with kubectl describe. The output should have a STATUS of Running.

    kubectl describe pod web-server
  4. To delete the Pod, use the kubectl delete command.

    kubectl delete -f nginx.yaml

What's next