Usa un recurso compartido de Azure File

GKE en Azure admite la activación de recursos compartidos de Azure Files. Si ya tienes un archivo compartido de Azure File para usar con GKE on Azure, puedes crear un objeto PersistentVolume (PV) y reservarlo para un PersistentVolumeClaim (PVC) específico.

En esta página, se explica cómo crear un PV mediante un compartido existente propagado con datos, y cómo usarlo en un Pod.

Antes de comenzar

Almacena la información de tu cuenta de almacenamiento de Azure

GKE en Azure almacena información para acceder a tu cuenta de almacenamiento de Azure en un secreto. Si no creaste un Secret en tu clúster, debes agregar uno. Si tienes este Secret en tu clúster, ve a Crea un PersistentVolume para un recurso compartido preexistente.

  1. Para crear el secreto, copia el siguiente manifiesto en un archivo llamado “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
    

    Reemplaza lo siguiente:

    • STORAGE_ACCOUNT_NAME: Es el nombre de la cuenta de almacenamiento de Azure.
    • STORAGE_ACCOUNT_KEY: Es la clave de la cuenta de almacenamiento de Azure.
  2. Aplica el archivo a tu clúster con la herramienta de kubectl:

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

Crea un PersistentVolume para un compartido preexistente

Puedes importar un archivo compartido de Azure File existente si especificas un nuevo PV en el clúster. Para crear el PV, haz lo siguiente:

  1. Copia el siguiente YAML en un archivo llamado 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
    

    Reemplaza lo siguiente:

    • VOLUME_NAME: nombre para el volumen
    • VOLUME_CAPACITY: El tamaño del volumen. Por ejemplo, 30Gi Para obtener más información sobre cómo especificar la capacidad de volumen en Kubernetes, consulta el Significado de memoria.
    • VOLUME_ID: ID único para el volumen, con el formato de una string de RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME#, en el que
    • FILE_SHARE_NAME: nombre del archivo compartido de Azure File

    Si tu cuenta de almacenamiento está en un grupo de recursos diferente que el clúster, debes agregar una referencia a un Secret que contenga la clave de la cuenta de almacenamiento. Para agregar la referencia, inserta lo siguiente en la sección 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
    

    Reemplaza lo siguiente:

    • NODE_STAGE_SECRET_NAME: nombre del Secret
    • NODE_STAGE_SECRET_NAMESPACE: espacio de nombres que contiene el Secret
  2. Aplica el YAML a tu clúster.

    kubectl apply -f existing-volume.yaml
    
  3. Confirma la creación del PV con kubectl describe pv.

    kubectl describe pv VOLUME_NAME
    

    El resultado de este comando contiene el estado del PV.

Usa el volumen con un PersistentVolumeClaim y un Pod

Después de importar el volumen, puedes crear un PVC y un Pod que conecte el PVC.

  1. Mediante el siguiente YAML, se crea un PVC y se lo conecta a un Pod que ejecuta el servidor web Nginx. Cópialo en un archivo llamado 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
    

    Reemplaza lo siguiente:

    • STORAGE_CLASS: nombre de la StorageClass del PersistentVolume que creaste antes. Por ejemplo, standard-rwo
    • ACCESS_MODE: modo de acceso del volumen. Para Azure Disk, usa ReadWriteOnce. Para Azure File, usa ReadWriteMany.
    • VOLUME_CAPACITY: El tamaño del volumen. Por ejemplo, 30Gi
  2. Aplica el YAML a tu clúster.

    kubectl apply -f nginx.yaml
    
  3. Verifica el estado de la instancia Nginx con kubectl describe. El resultado debería tener un STATUS de Running.

    kubectl describe pod web-server
    
  4. Para borrar el Pod, usa el comando kubectl delete.

    kubectl delete -f nginx.yaml
    

¿Qué sigue?