Use uma partilha de ficheiros do Azure

O GKE no Azure suporta a montagem de partilhas do Azure Files. Se já tiver uma partilha de ficheiros do Azure para usar com o GKE no Azure, pode criar um objeto PersistentVolume (PV) e reservá-lo para um PersistentVolumeClaim (PVC) específico.

Esta página explica como criar um PV usando uma partilha existente preenchida com dados e como usar o PV num podcast.

Antes de começar

Armazene as informações da sua conta de armazenamento do Azure

O GKE no Azure armazena informações para aceder à sua conta de armazenamento do Azure num segredo. Se não tiver criado um segredo no cluster, tem de adicionar um. Se tiver este segredo no cluster, avance para Criar um PersistentVolume para uma partilha pré-existente.

  1. Para criar o segredo, copie o seguinte manifesto para um ficheiro denominado "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 o seguinte:

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

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

Crie um PersistentVolume para uma partilha pré-existente

Importa uma partilha de ficheiros do Azure existente especificando um novo PV no cluster. Para criar a PV, faça o seguinte:

  1. Copie o seguinte YAML para um ficheiro com o nome 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 o seguinte:

    • 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 artigo 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#, onde
    • FILE_SHARE_NAME: o nome da partilha de ficheiros do Azure

    Se a sua conta de armazenamento estiver num grupo de recursos diferente do seu cluster, tem de adicionar uma referência a um segredo que contenha a chave da sua conta de armazenamento. Para adicionar a referência, insira o seguinte na secçã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 o seguinte:

    • NODE_STAGE_SECRET_NAME: o nome do segredo
    • NODE_STAGE_SECRET_NAMESPACE o espaço de nomes que contém o segredo
  2. Aplique o YAML ao seu cluster.

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

    kubectl describe pv VOLUME_NAME
    

    O resultado deste comando contém o estado da PV.

Use o volume com um PersistentVolumeClaim e um pod

Depois de importar o volume, pode criar um PVC e um pod que monte o PVC.

  1. O YAML seguinte cria um PVC e anexa-o a um pod que executa o servidor Web Nginx. Copie-o para um ficheiro com o nome 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 o seguinte:

    • STORAGE_CLASS: o nome da StorageClass do PersistentVolume que criou anteriormente. Por exemplo, standard-rwo.
    • ACCESS_MODE: o modo de acesso do volume. Para o disco do Azure, use ReadWriteOnce. Para o Azure File, use ReadWriteMany.
    • VOLUME_CAPACITY: tamanho do volume. Por exemplo, 30Gi.
  2. Aplique o YAML ao seu cluster.

    kubectl apply -f nginx.yaml
    
  3. Verifique o estado da sua instância do Nginx com kubectl describe. O resultado deve ter um STATUS de Running.

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

    kubectl delete -f nginx.yaml
    

O que se segue?