Tutorial: criar uma montagem de volume de Arquivos do Azure nos Aplicativos de Contêiner do Azure

Aprenda a gravar no armazenamento permanente em um aplicativo de contêiner usando uma montagem de armazenamento dos Arquivos do Azure. Para obter mais informações sobre montagens de armazenamento, confira Usar montagens de armazenamento nos Aplicativos de Contêiner do Azure.

Neste tutorial, você aprenderá a:

  • Criar um ambiente dos Aplicativos de Contêiner
  • Criar uma conta do Armazenamento do Azure
  • Definir um compartilhamento de arquivo na conta de armazenamento
  • Vincular o ambiente ao compartilhamento de arquivos de armazenamento
  • Montar o compartilhamento de armazenamento em um contêiner individual
  • Verificar a montagem de armazenamento exibindo o log de acesso do site

Observação

Os Aplicativos de Contêiner do Azure dão suporte à montagem de compartilhamentos de arquivos por meio dos protocolos SMB e NFS. Este tutorial demonstra como montar um compartilhamento de Arquivos do Azure usando o protocolo SMB. Para saber mais sobre como montar compartilhamentos NFS, confira Usar montagens de armazenamento em Aplicativos de Contêiner do Azure.

Pré-requisitos

Configurar o ambiente

Os comandos a seguir ajudam você a definir variáveis e garantir que sua extensão de Aplicativos de Contêiner esteja atualizada.

  1. Entrar na CLI do Azure.

    az login
    
  2. Configure variáveis de ambiente usadas em vários comandos a seguir.

    RESOURCE_GROUP="my-container-apps-group"
    ENVIRONMENT_NAME="my-storage-environment"
    LOCATION="canadacentral"
    
  3. Verifique se você tem a versão mais recente da extensão da CLI do Azure dos Aplicativos de Contêiner.

    az extension add -n containerapp --upgrade
    
  4. Remova o namespace Microsoft.App.

    az provider register --namespace Microsoft.App
    
  5. Registre o provedor Microsoft.OperationalInsights para o workspace do Log Analytics do Azure Monitor se ele ainda não tiver sido usado.

    az provider register --namespace Microsoft.OperationalInsights
    

Criar um ambiente

As etapas a seguir criam um grupo de recursos e um ambiente de Aplicativos de Contêiner.

  1. Crie um grupo de recursos.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --query "properties.provisioningState"
    

    Depois de criado, o comando retorna uma mensagem "Êxito".

    No final deste tutorial, você pode excluir o grupo de recursos para remover todos os serviços criados durante este artigo.

  2. Criar um ambiente dos Aplicativos de Contêiner.

    az containerapp env create \
      --name $ENVIRONMENT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location "$LOCATION" \
      --query "properties.provisioningState"
    

    Depois de criado, o comando retorna uma mensagem "Êxito".

    As montagens de armazenamento são associadas a um ambiente de Aplicativos de Contêiner e configuradas em aplicativos de contêiner individuais.

Configurar uma conta de armazenamento

Em seguida, crie uma conta de armazenamento e estabeleça um compartilhamento de arquivos para montar no aplicativo de contêiner.

  1. Defina um nome da conta de armazenamento.

    Esse comando gera um sufixo aleatório para o nome da conta de armazenamento para garantir a exclusividade.

    STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
    
  2. Criar uma conta do Armazenamento do Azure.

    az storage account create \
      --resource-group $RESOURCE_GROUP \
      --name $STORAGE_ACCOUNT_NAME \
      --location "$LOCATION" \
      --kind StorageV2 \
      --sku Standard_LRS \
      --enable-large-file-share \
      --query provisioningState
    

    Depois de criado, o comando retorna uma mensagem "Êxito".

  3. Definir um nome de compartilhamento de arquivo.

    STORAGE_SHARE_NAME="myfileshare"
    
  4. Crie o compartilhamento de arquivos do Armazenamento do Microsoft Azure.

    az storage share-rm create \
      --resource-group $RESOURCE_GROUP \
      --storage-account $STORAGE_ACCOUNT_NAME \
      --name $STORAGE_SHARE_NAME \
      --quota 1024 \
      --enabled-protocols SMB \
      --output table
    
  5. Obter a chave da conta de armazenamento.

    STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
    

    A chave da conta de armazenamento é necessária para criar o link de armazenamento em seu ambiente de Aplicativos de Contêiner.

  6. Defina o nome de montagem do armazenamento.

    STORAGE_MOUNT_NAME="mystoragemount"
    

    Esse valor é o nome usado para definir o link de montagem de armazenamento do ambiente de Aplicativos de Contêiner para sua conta de Armazenamento do Microsoft Azure.

Criar a montagem de armazenamento

Agora você pode atualizar a configuração do aplicativo de contêiner para dar suporte à montagem de armazenamento.

  1. Crie o link de armazenamento no ambiente.

    az containerapp env storage set \
      --access-mode ReadWrite \
      --azure-file-account-name $STORAGE_ACCOUNT_NAME \
      --azure-file-account-key $STORAGE_ACCOUNT_KEY \
      --azure-file-share-name $STORAGE_SHARE_NAME \
      --storage-name $STORAGE_MOUNT_NAME \
      --name $ENVIRONMENT_NAME \
      --resource-group $RESOURCE_GROUP \
      --output table
    

    Esse comando cria um link entre o ambiente do aplicativo de contêiner e o compartilhamento de arquivos criado com o comando az storage share-rm.

    Agora que a conta de armazenamento e o ambiente estão vinculados, você pode criar um aplicativo de contêiner que usa a montagem de armazenamento.

  2. Defina o nome do aplicativo de contêiner.

    CONTAINER_APP_NAME="my-container-app"
    
  3. Crie o aplicativo de contêiner.

    az containerapp create \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $ENVIRONMENT_NAME \
      --image nginx \
      --min-replicas 1 \
      --max-replicas 1 \
      --target-port 80 \
      --ingress external \
      --query properties.configuration.ingress.fqdn
    

    Esse comando exibe a URL do novo aplicativo de contêiner.

  4. Copie a URL e cole no navegador da Web para navegar até o site.

    Depois que a página for carregada, você verá a mensagem "Bem-vindo ao nginx!". Deixe esta guia do navegador aberta. Você retornará ao site durante as etapas de verificação de montagem de armazenamento.

    Agora que você confirmou que o aplicativo de contêiner está configurado, você pode atualizar o aplicativo com uma definição de montagem de armazenamento.

  5. Exporte a configuração do aplicativo de contêiner.

    az containerapp show \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --output yaml > app.yaml
    

    Observação

    Embora esse aplicativo não tenha segredos, muitos aplicativos fazem segredos de recursos. Por padrão, quando você exporta a configuração de um aplicativo, os valores dos segredos não são incluídos no YAML gerado.

    Se você não precisar alterar valores secretos, poderá remover a seção secrets e seus segredos permanecerão não alterados. Como alternativa, se você precisar alterar o valor de um segredo, certifique-se de fornecer os name segredos e value todos os segredos no arquivo antes de tentar atualizar o aplicativo. Omitir um segredo da seção secrets exclui o segredo.

  6. Abrir app.yaml em um editor de código.

  7. Substitua a definição volumes: null na seção template por uma definição volumes: que faz referência ao volume de armazenamento. A seção do modelo agora deve ficar assim:

    template:
      volumes:
      - name: my-azure-file-volume
        storageName: mystoragemount
        storageType: AzureFile
      containers:
      - image: nginx
        name: my-container-app
        volumeMounts:
        - volumeName: my-azure-file-volume
          mountPath: /var/log/nginx
        resources:
          cpu: 0.5
          ephemeralStorage: 3Gi
          memory: 1Gi
      initContainers: null
      revisionSuffix: ''
      scale:
        maxReplicas: 1
        minReplicas: 1
        rules: null
    

    A nova seção template.volumes inclui as seguintes propriedades.

    Propriedade Descrição
    name Esse valor corresponde ao volume criado chamando o comando az containerapp env storage set.
    storageName Esse valor define o nome usado por contêineres no ambiente para acessar o volume de armazenamento.
    storageType Esse valor determina o tipo de volume de armazenamento definido para o ambiente. Nesse caso, uma montagem de Arquivos do Azure é declarada.

    A seção volumesdefine volumes no nível do aplicativo que os contêineres de sidecar ou contêineres de sidecar do aplicativo podem referenciar por meio de uma seção volumeMounts associada a um contêiner.

  8. Adicione uma seção volumeMounts ao contêiner nginx na seção containers.

    containers:
      - image: nginx
        name: my-container-app
        volumeMounts:
        - volumeName: my-azure-file-volume
          mountPath: /var/log/nginx
    

    A nova seção volumeMounts inclui as seguintes propriedades:

    Propriedade Descrição
    volumeName Esse valor deve corresponder ao nome definido na definição volumes.
    mountPath Esse valor define o caminho no contêiner em que o armazenamento está montado.
  9. Atualize o aplicativo de contêiner com a nova configuração de montagem de armazenamento.

    az containerapp update \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --yaml app.yaml \
      --output table
    

Verificar a montagem de armazenamento

Agora que a montagem de armazenamento está estabelecida, você pode manipular arquivos no Armazenamento do Microsoft Azure do contêiner. Use os comandos a seguir para observar a montagem de armazenamento no trabalho.

  1. Abra um shell interativo dentro do aplicativo de contêiner para executar comandos dentro do contêiner em execução.

    az containerapp exec \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP
    

    Esse comando pode levar um momento para abrir o shell remoto. Depois que o shell estiver pronto, você poderá interagir com a montagem de armazenamento por meio de comandos do sistema de arquivos.

  2. Altere para a pasta nginx /var/log/nginx.

    cd /var/log/nginx
    
  3. Retorne ao navegador e navegue até o site e atualize a página algumas vezes.

    As solicitações feitas ao site criam uma série de entradas de fluxo de log.

  4. Retorne ao terminal e liste os valores da pasta /var/log/nginx.

    Observe como os arquivos do acesso.log e do erro.log aparecem nesta pasta. Esses arquivos são gravados na montagem Arquivos do Azure no compartilhamento de Armazenamento do Microsoft Azure criado nas etapas anteriores.

  5. Exiba o conteúdo do arquivo do acesso.log.

    cat access.log
    
  6. Saia do shell interativo do contêiner para retornar à sessão do terminal local.

    exit
    
  7. Agora, você pode exibir os arquivos no portal do Azure para verificar se eles existem em sua conta de Armazenamento do Microsoft Azure. Imprima o nome da sua conta de armazenamento gerada aleatoriamente.

    echo $STORAGE_ACCOUNT_NAME
    
  8. Navegue até o portal do Azure e abra a conta de armazenamento criada neste procedimento.

  9. Em Armazenamento de dados, selecione Compartilhamentos de arquivos.

  10. Selecione myshare para exibir os arquivos de acesso.log e de erro.log.

Limpar recursos

Caso não pretenda continuar usando este aplicativo, execute o comando a seguir para excluir o grupo de recursos junto com todos os recursos criados neste artigo.

az group delete \
  --name $RESOURCE_GROUP

Próximas etapas