Приложение-контейнер Azure не запускается из-за конфигурации VolumeMount.

У меня возникла проблема: я пытаюсь настроить постоянное хранилище файлов для приложения-контейнера в облаке Azure. Я следую этому руководству: https://learn.microsoft.com/en-us/azure/container-apps/storage-mounts-azure-files?tabs=bash

Моя проблема заключается в пункте 9 «Создание монтирования хранилища»: я обновил app.yaml и запускаю команду для создания новой версии. В терминале это удается, но в списке «Редакции» на странице Azure новая редакция не запускается. Статус его выполнения — «ошибочный», но он не содержит никаких подробностей о том, что не удалось. Только в системном журнале однажды я получил сообщение об ошибке без кода ошибки, в котором просто говорилось, что установка хранилища не удалась - причина не указана.

Это части моего app.yml, которые я редактировал:

      ...
  template:
    containers:
    - image: nginx
      name: trendy-app
      resources:
        cpu: 0.5
        ephemeralStorage: 2Gi
        memory: 1Gi
      volumeMounts:
      - volumeName: trendy-file-volume
        mountPath: /var/log/nginx
    initContainers: null
    revisionSuffix: ''
    scale:
      maxReplicas: 1
      minReplicas: 1
      rules: null
    serviceBinds: null
    terminationGracePeriodSeconds: null
    volumes:
    - name: trendy-file-volume
      storageName: trendystoragemount
      storageType: AzureFile
    - name: trendy-app
      storageType: EmptyDir
  workloadProfileName: Consumption
...

Когда я удаляю строки конфигурации для VolumeMounts, контейнер запускается, как и ожидалось - очевидно, только без смонтированного хранилища. Когда я добавляю его, но использую несуществующее имя,az containerapp updateкоманда завершается с ошибкой, указывающей на то, что монтирование не существует. При наличии конфигурации команда выполняется, но запуск контейнера завершается неудачно. Так что да, что-то не так в конфиге тома хранилища, но я не знаю, как узнать что.

Я проверил имена и попробовал повторно запустить команды из руководства, но не нашел своей ошибки. На этом этапе я застрял, и мне нужна помощь, как я могу это отладить.

Спасибо, Дахи

1 ответ

Я думаю, что ваш app.yml неверен, проверьте журналы, но он должен выглядеть примерно так (например).

      name: nginx-azure-app
location: eastus
resourceGroup: myResourceGroup
containerName: nginx-container
cpu: 0.5
memory: 0.5Gi
instanceCount: 1

services:
- name: nginx-service
  image: nginx
  ports:
    - protocol: TCP
      port: 80
  volumeMounts:
    - name: nginx-volume
      mountPath: /usr/share/nginx/html
    - name: nginx-logs
      mountPath: /var/log/nginx

volumes:
- name: nginx-volume
  storageName: mystorageshare
  storageType: AzureFile
  shareName: myshare
  readOnly: false
  secretName: mystoragesecret
  secretMountPath: /mnt/azure

- name: nginx-logs
  storageName: mystorageshare
  storageType: AzureFile
  shareName: myshare
  readOnly: false
  secretName: mystoragesecret
  secretMountPath: /mnt/azure-logs

secrets:
- name: mystoragesecret
  storageAccount: mystorageaccount
  shareName: myshare
  accessKey: mystorageaccesskey
Другие вопросы по тегам