Usar um compartilhamento de arquivos do Azure

O GKE no Azure oferece suporte à montagem de compartilhamentos de Arquivos do Azure. Se você já tiver um compartilhamento de arquivos do Azure para usar com o GKE no Azure, crie um objeto PersistentVolume (PV) e reserva-o para um PersistentVolumeClaim (PVC) específico.

Nesta página, explicamos como criar um PV usando um compartilhamento existente preenchido com dados e como usá-lo em um pod.

Antes de começar

Armazenar as informações da conta de armazenamento do Azure

O GKE no Azure armazena informações de acesso à conta de armazenamento do Azure em um secret. Se você não tiver criado um secret no cluster, é necessário adicionar um. Se você tiver esse secret no cluster, pule para Criar um PersistentVolume para um compartilhamento preexistente.

  1. Para criar o secret, copie o manifesto a seguir em um arquivo chamado "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
    

    Substitua:

    • STORAGE_ACCOUNT_NAME: o nome da conta de armazenamento do Azure
    • STORAGE_ACCOUNT_KEY: a chave da conta de armazenamento do Azure
  2. Aplique o arquivo ao cluster com a ferramenta kubectl:

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

Como criar um PersistentVolume para um compartilhamento preexistente

Para importar um compartilhamento de arquivos existente do Azure, especifique um novo PV no cluster. Para criar o PV, faça o seguinte:

  1. Copie o seguinte YAML para um arquivo chamado 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
    

    Substitua:

    • VOLUME_NAME: um nome para o volume
    • VOLUME_CAPACITY: tamanho do volume. Por exemplo, 30Gi. Para mais informações sobre como especificar a capacidade do volume no Kubernetes, consulte o Significado da memória.
    • VOLUME_ID: um ID exclusivo para o volume, formatado como uma string de RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME# em que
    • FILE_SHARE_NAME: o nome do compartilhamento de arquivos do Azure

    Se a conta de armazenamento estiver em um grupo de recursos diferente do cluster, será necessário adicionar uma referência a um secret que contenha a chave da conta de armazenamento. Para adicionar a referência, insira o seguinte na seção 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
    

    Substitua:

    • NODE_STAGE_SECRET_NAME: o nome do secret
    • NODE_STAGE_SECRET_NAMESPACE é o namespace que contém o secret.
  2. Aplique o YAML ao cluster.

    kubectl apply -f existing-volume.yaml
    
  3. Confirme a criação do PV com kubectl describe pv.

    kubectl describe pv VOLUME_NAME
    

    A saída desse comando contém o status do PV.

Como usar o volume com um PersistentVolumeClaim e um pod

Depois de importar o volume, é possível criar um PVC e um Pod que anexe o PVC.

  1. O YAML a seguir cria um PVC e o anexa a um Pod que executa o servidor da Web Nginx. Copie-o para um arquivo chamado 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
    

    Substitua:

    • STORAGE_CLASS: o nome do StorageClass do PersistentVolume criado anteriormente. Por exemplo, standard-rwo.
    • ACCESS_MODE: o modo de acesso do volume. No Azure Disk, use ReadWriteOnce. Para os Arquivos do Azure, use ReadWriteMany.
    • VOLUME_CAPACITY: tamanho do volume. Por exemplo, 30Gi.
  2. Aplique o YAML ao cluster.

    kubectl apply -f nginx.yaml
    
  3. Verifique o status da sua instância do Nginx com kubectl describe. A saída precisa ter um STATUS de Running.

    kubectl describe pod web-server
    
  4. Para excluir o pod, use o comando kubectl delete.

    kubectl delete -f nginx.yaml
    

A seguir