Utiliser un partage de fichiers Azure

GKE sur Azure permet d'installer des partages de fichiers Azure. Si vous disposez déjà d'un partage de fichiers Azure à utiliser avec GKE sur Azure, vous pouvez créer un objet PersistentVolume (PV) et le réserver pour un objet PersistentVolumeClaim (PVC) spécifique.

Cette page explique comment créer un PV à l'aide d'un partage existant contenant des données et comment utiliser le PV dans un pod.

Avant de commencer

Stocker les informations de votre compte de stockage Azure

GKE sur Azure stocke des informations pour accéder à votre compte de stockage Azure dans un secret. Si vous n'avez pas créé de secret dans votre cluster, vous devez en ajouter un. Si vous disposez de ce secret dans votre cluster, passez à la section Créer un PersistentVolume pour un partage existant.

  1. Pour créer le secret, copiez le fichier manifeste suivant dans un fichier nommé "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
    

    Remplacez les éléments suivants :

    • STORAGE_ACCOUNT_NAME : nom de votre compte de stockage Azure
    • STORAGE_ACCOUNT_KEY : votre clé de compte de stockage Azure
  2. Appliquez le fichier à votre cluster à l'aide de l'outil kubectl :

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

Créer un PersistentVolume pour un partage existant

Pour importer un partage de fichiers Azure existant, spécifiez un nouveau PV dans votre cluster. Pour créer le PV, procédez comme suit :

  1. Copiez le fichier YAML suivant dans un fichier nommé 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
    

    Remplacez les éléments suivants :

    • VOLUME_NAME : nom du volume.
    • VOLUME_CAPACITY : taille du volume. Par exemple, 30Gi. Pour en savoir plus sur la spécification de la capacité de volume dans Kubernetes, consultez la page Meaning of memory.
    • VOLUME_ID : ID unique du volume, formaté en tant que chaîne de RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME#
    • FILE_SHARE_NAME : nom de partage Azure File

    Si votre compte de stockage se trouve dans un groupe de ressources différent de celui de votre cluster, vous devez ajouter une référence à un secret contenant la clé de votre compte de stockage. Pour ajouter la référence, insérez les éléments suivants dans la section 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
    

    Remplacez les éléments suivants :

    • NODE_STAGE_SECRET_NAME : nom du secret
    • NODE_STAGE_SECRET_NAMESPACE : espace de noms contenant le secret
  2. Appliquez le code YAML à votre cluster.

    kubectl apply -f existing-volume.yaml
    
  3. Confirmez la création du PV avec kubectl describe pv.

    kubectl describe pv VOLUME_NAME
    

    Le résultat de cette commande contient l'état du PV.

Utiliser le volume avec un objet PersistentVolumeClaim et un pod

Après avoir importé votre volume, vous pouvez créer un PVC et un pod qui installe le PVC.

  1. Le code YAML suivant crée un PVC et l'associe à un pod exécutant le serveur Web Nginx. Copiez-le dans un fichier nommé 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
    

    Remplacez les éléments suivants :

    • STORAGE_CLASS : nom de l'objet StorageClass du PersistentVolume que vous avez créé précédemment. Exemple : standard-rwo.
    • ACCESS_MODE : mode d'accès du volume. Pour Azure Disk, utilisez ReadWriteOnce. Pour Azure File, utilisez ReadWriteMany.
    • VOLUME_CAPACITY : taille du volume. Exemple :30Gi
  2. Appliquez le code YAML à votre cluster.

    kubectl apply -f nginx.yaml
    
  3. Vérifiez l'état de votre instance Nginx avec kubectl describe. Dans le résultat, STATUS doit être à l'état Running.

    kubectl describe pod web-server
    
  4. Pour supprimer le pod, utilisez la commande kubectl delete.

    kubectl delete -f nginx.yaml
    

Étapes suivantes