Руководство. Создание подключения тома Файлы Azure в приложениях контейнеров Azure
Узнайте, как записывать в постоянное хранилище в приложении-контейнере с помощью подключения к хранилищу Файлы Azure. Дополнительные сведения о подключениях к хранилищу см. в статье "Использование подключений к хранилищу" в приложениях контейнеров Azure.
В этом руководстве описано следующее:
- Создание среды приложений-контейнеров
- Создание учетной записи хранения Azure
- Определение общей папки в учетной записи хранения
- Связывание среды с общей папкой хранилища
- Подключение общей папки хранилища в отдельном контейнере
- Проверка подключения хранилища путем просмотра журнала доступа к веб-сайту
Примечание.
Приложения контейнеров Azure поддерживают подключение общих папок с помощью протоколов S МБ и NFS. В этом руководстве показано подключение Файлы Azure общего ресурса с помощью протокола S МБ. Дополнительные сведения о подключении общих папок NFS см. в статье "Использование подключений к хранилищу в приложениях контейнеров Azure".
Необходимые компоненты
- Установите последнюю версию Azure CLI.
Настройка среды
Следующие команды помогают определить переменные и убедиться, что расширение "Приложения контейнеров" обновлено.
Войдите в Azure CLI.
az login
Настройте переменные среды, используемые в различных командах для выполнения следующих команд.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"
Убедитесь, что у вас установлена последняя версия расширения Azure CLI для контейнерных приложений.
az extension add -n containerapp --upgrade
Microsoft.App
Зарегистрируйте пространство имен.az provider register --namespace Microsoft.App
Microsoft.OperationalInsights
Зарегистрируйте поставщика для рабочей области Azure Monitor Log Analytics, если вы его еще не использовали.az provider register --namespace Microsoft.OperationalInsights
Создать среду
Ниже описано, как создать группу ресурсов и среду "Приложения контейнеров".
Создать группу ресурсов.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
После создания команда возвращает сообщение "Успешно".
В конце этого руководства вы можете удалить группу ресурсов, чтобы удалить все службы, созданные в этой статье.
Создайте среду приложений-контейнеров.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
После создания команда возвращает сообщение "Успешно".
служба хранилища подключения связаны с средой "Приложения контейнеров" и настраиваются в отдельных приложениях контейнеров.
Настройка учетной записи хранения
Затем создайте учетную запись хранения и установите общую папку для подключения к приложению контейнера.
Определите имя учетной записи хранения.
Эта команда создает случайный суффикс в имя учетной записи хранения, чтобы обеспечить уникальность.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
Создайте учетную запись Службы хранилища 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
После создания команда возвращает сообщение "Успешно".
Определите имя общей папки.
STORAGE_SHARE_NAME="myfileshare"
Создайте общую папку служба хранилища 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
Получите ключ учетной записи хранения.
STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
Ключ учетной записи хранения необходим для создания ссылки на хранилище в среде "Приложения контейнеров".
Определите имя подключения хранилища.
STORAGE_MOUNT_NAME="mystoragemount"
Это значение используется для определения ссылки подключения хранилища из среды "Приложения контейнеров" к учетной записи служба хранилища Azure.
Создание подключения хранилища
Теперь можно обновить конфигурацию приложения-контейнера для поддержки подключения хранилища.
Создайте ссылку на хранилище в среде.
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
с помощью команды.Теперь, когда учетная запись хранения и среда связаны, можно создать приложение-контейнер, использующее подключение хранилища.
Определите имя приложения контейнера.
CONTAINER_APP_NAME="my-container-app"
Создайте приложение-контейнер.
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-адрес нового приложения контейнера.
Скопируйте URL-адрес и вставьте его в веб-браузер, чтобы перейти на веб-сайт.
После загрузки страницы появится сообщение "Добро пожаловать в nginx!". Оставьте данную вкладку браузера открытой. Во время проверки подключения хранилища вы вернетесь на веб-сайт.
Теперь, когда вы подтвердили, что приложение контейнера настроено, вы можете обновить приложение до определения подключения хранилища.
Экспорт конфигурации приложения-контейнера.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yaml
Примечание.
Хотя это приложение не имеет секретов, многие приложения делают секреты функций. По умолчанию при экспорте конфигурации приложения значения секретов не включаются в созданный YAML.
Если вам не нужно изменять значения секретов, можно удалить
secrets
раздел, а секреты остаются неустранимыми. Кроме того, если необходимо изменить значение секрета, обязательно укажитеname
value
и все секреты в файле, прежде чем пытаться обновить приложение. Опущение секрета изsecrets
раздела удаляет секрет.Откройте app.yaml в редакторе кода.
Замените
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
раздела, связанного с контейнером.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
Это значение определяет путь в контейнере, где подключено хранилище. Обновите приложение-контейнер с помощью новой конфигурации подключения хранилища.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Проверка подключения хранилища
Теперь, когда подключение хранилища установлено, вы можете управлять файлами в служба хранилища Azure из контейнера. Используйте следующие команды, чтобы наблюдать за подключением к хранилищу во время работы.
Откройте интерактивную оболочку внутри приложения контейнера, чтобы выполнить команды внутри запущенного контейнера.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP
Эта команда может занять некоторое время, чтобы открыть удаленную оболочку. После готовности оболочки можно взаимодействовать с подключением хранилища с помощью команд файловой системы.
Перейдите в папку nginx /var/log/nginx.
cd /var/log/nginx
Вернитесь в браузер и перейдите на веб-сайт и обновите страницу несколько раз.
Запросы, сделанные на веб-сайте, создают ряд записей потока журнала.
Вернитесь в терминал и укажите значения
/var/log/nginx
папки.ls
Обратите внимание, как access.log и error.log файлы отображаются в этой папке. Эти файлы записываются в подключение Файлы Azure в общей папке служба хранилища Azure, созданной на предыдущих шагах.
Просмотрите содержимое файла access.log .
cat access.log
Выйдите из интерактивной оболочки контейнера, чтобы вернуться к локальному сеансу терминала.
exit
Теперь вы можете просмотреть файлы в портал Azure, чтобы убедиться, что они существуют в вашей учетной записи служба хранилища Azure. Напечатать имя случайно созданной учетной записи хранения.
echo $STORAGE_ACCOUNT_NAME
Перейдите к портал Azure и откройте учетную запись хранения, созданную в этой процедуре.
В разделе "Данные" служба хранилища выберите общие папки.
Выберите myshare , чтобы просмотреть access.log и error.log файлы.
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, выполните следующую команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в этой статье.
az group delete \
--name $RESOURCE_GROUP