Руководство. Создание подключения тома Файлы Azure в приложениях контейнеров Azure

Узнайте, как записывать в постоянное хранилище в приложении-контейнере с помощью подключения к хранилищу Файлы Azure. Дополнительные сведения о подключениях к хранилищу см. в статье "Использование подключений к хранилищу" в приложениях контейнеров Azure.

В этом руководстве описано следующее:

  • Создание среды приложений-контейнеров
  • Создание учетной записи хранения Azure
  • Определение общей папки в учетной записи хранения
  • Связывание среды с общей папкой хранилища
  • Подключение общей папки хранилища в отдельном контейнере
  • Проверка подключения хранилища путем просмотра журнала доступа к веб-сайту

Примечание.

Приложения контейнеров Azure поддерживают подключение общих папок с помощью протоколов S МБ и NFS. В этом руководстве показано подключение Файлы Azure общего ресурса с помощью протокола S МБ. Дополнительные сведения о подключении общих папок NFS см. в статье "Использование подключений к хранилищу в приложениях контейнеров Azure".

Необходимые компоненты

  • Установите последнюю версию Azure CLI.

Настройка среды

Следующие команды помогают определить переменные и убедиться, что расширение "Приложения контейнеров" обновлено.

  1. Войдите в Azure CLI.

    az login
    
  2. Настройте переменные среды, используемые в различных командах для выполнения следующих команд.

    RESOURCE_GROUP="my-container-apps-group"
    ENVIRONMENT_NAME="my-storage-environment"
    LOCATION="canadacentral"
    
  3. Убедитесь, что у вас установлена последняя версия расширения Azure CLI для контейнерных приложений.

    az extension add -n containerapp --upgrade
    
  4. Microsoft.App Зарегистрируйте пространство имен.

    az provider register --namespace Microsoft.App
    
  5. Microsoft.OperationalInsights Зарегистрируйте поставщика для рабочей области Azure Monitor Log Analytics, если вы его еще не использовали.

    az provider register --namespace Microsoft.OperationalInsights
    

Создать среду

Ниже описано, как создать группу ресурсов и среду "Приложения контейнеров".

  1. Создать группу ресурсов.

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

    После создания команда возвращает сообщение "Успешно".

    В конце этого руководства вы можете удалить группу ресурсов, чтобы удалить все службы, созданные в этой статье.

  2. Создайте среду приложений-контейнеров.

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

    После создания команда возвращает сообщение "Успешно".

    служба хранилища подключения связаны с средой "Приложения контейнеров" и настраиваются в отдельных приложениях контейнеров.

Настройка учетной записи хранения

Затем создайте учетную запись хранения и установите общую папку для подключения к приложению контейнера.

  1. Определите имя учетной записи хранения.

    Эта команда создает случайный суффикс в имя учетной записи хранения, чтобы обеспечить уникальность.

    STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
    
  2. Создайте учетную запись Службы хранилища 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
    

    После создания команда возвращает сообщение "Успешно".

  3. Определите имя общей папки.

    STORAGE_SHARE_NAME="myfileshare"
    
  4. Создайте общую папку служба хранилища 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. Получите ключ учетной записи хранения.

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

    Ключ учетной записи хранения необходим для создания ссылки на хранилище в среде "Приложения контейнеров".

  6. Определите имя подключения хранилища.

    STORAGE_MOUNT_NAME="mystoragemount"
    

    Это значение используется для определения ссылки подключения хранилища из среды "Приложения контейнеров" к учетной записи служба хранилища Azure.

Создание подключения хранилища

Теперь можно обновить конфигурацию приложения-контейнера для поддержки подключения хранилища.

  1. Создайте ссылку на хранилище в среде.

    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
    

    Эта команда создает связь между средой приложения контейнера и общей папкой, созданной az storage share-rm с помощью команды.

    Теперь, когда учетная запись хранения и среда связаны, можно создать приложение-контейнер, использующее подключение хранилища.

  2. Определите имя приложения контейнера.

    CONTAINER_APP_NAME="my-container-app"
    
  3. Создайте приложение-контейнер.

    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
    

    Эта команда отображает URL-адрес нового приложения контейнера.

  4. Скопируйте URL-адрес и вставьте его в веб-браузер, чтобы перейти на веб-сайт.

    После загрузки страницы появится сообщение "Добро пожаловать в nginx!". Оставьте данную вкладку браузера открытой. Во время проверки подключения хранилища вы вернетесь на веб-сайт.

    Теперь, когда вы подтвердили, что приложение контейнера настроено, вы можете обновить приложение до определения подключения хранилища.

  5. Экспорт конфигурации приложения-контейнера.

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

    Примечание.

    Хотя это приложение не имеет секретов, многие приложения делают секреты функций. По умолчанию при экспорте конфигурации приложения значения секретов не включаются в созданный YAML.

    Если вам не нужно изменять значения секретов, можно удалить secrets раздел, а секреты остаются неустранимыми. Кроме того, если необходимо изменить значение секрета, обязательно укажите name value и все секреты в файле, прежде чем пытаться обновить приложение. Опущение секрета из secrets раздела удаляет секрет.

  6. Откройте app.yaml в редакторе кода.

  7. Замените volumes: null определение в template разделе определением volumes: , ссылающимся на том хранилища. Раздел шаблона должен выглядеть следующим образом:

    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
    

    Новый template.volumes раздел содержит следующие свойства.

    Свойство Description
    name Это значение соответствует тому, созданному az containerapp env storage set путем вызова команды.
    storageName Это значение определяет имя, используемое контейнерами в среде для доступа к тому хранилища.
    storageType Это значение определяет тип тома хранилища, определенного для среды. В этом случае объявляется подключение Файлы Azure.

    В volumes этом разделе определяются тома на уровне приложения, на который может ссылаться контейнер приложения или контейнеры на боковую панель, с помощью volumeMounts раздела, связанного с контейнером.

  8. volumeMounts Добавьте раздел в nginx контейнер в containers разделе.

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

    Новый volumeMounts раздел содержит следующие свойства:

    Свойство Description
    volumeName Это значение должно соответствовать имени, определенному в определении volumes .
    mountPath Это значение определяет путь в контейнере, где подключено хранилище.
  9. Обновите приложение-контейнер с помощью новой конфигурации подключения хранилища.

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

Проверка подключения хранилища

Теперь, когда подключение хранилища установлено, вы можете управлять файлами в служба хранилища Azure из контейнера. Используйте следующие команды, чтобы наблюдать за подключением к хранилищу во время работы.

  1. Откройте интерактивную оболочку внутри приложения контейнера, чтобы выполнить команды внутри запущенного контейнера.

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

    Эта команда может занять некоторое время, чтобы открыть удаленную оболочку. После готовности оболочки можно взаимодействовать с подключением хранилища с помощью команд файловой системы.

  2. Перейдите в папку nginx /var/log/nginx.

    cd /var/log/nginx
    
  3. Вернитесь в браузер и перейдите на веб-сайт и обновите страницу несколько раз.

    Запросы, сделанные на веб-сайте, создают ряд записей потока журнала.

  4. Вернитесь в терминал и укажите значения /var/log/nginx папки.

    Обратите внимание, как access.log и error.log файлы отображаются в этой папке. Эти файлы записываются в подключение Файлы Azure в общей папке служба хранилища Azure, созданной на предыдущих шагах.

  5. Просмотрите содержимое файла access.log .

    cat access.log
    
  6. Выйдите из интерактивной оболочки контейнера, чтобы вернуться к локальному сеансу терминала.

    exit
    
  7. Теперь вы можете просмотреть файлы в портал Azure, чтобы убедиться, что они существуют в вашей учетной записи служба хранилища Azure. Напечатать имя случайно созданной учетной записи хранения.

    echo $STORAGE_ACCOUNT_NAME
    
  8. Перейдите к портал Azure и откройте учетную запись хранения, созданную в этой процедуре.

  9. В разделе "Данные" служба хранилища выберите общие папки.

  10. Выберите myshare , чтобы просмотреть access.log и error.log файлы.

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, выполните следующую команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в этой статье.

az group delete \
  --name $RESOURCE_GROUP

Следующие шаги