Параметры приложения — Служба приложений Azure (несколько сред)

Я пытаюсь настроить подключение из службы приложений Azure к базе данных Azure SQL с помощью управляемого удостоверения (назначено системой)

Вот настройка: две службы приложений Azure, одна для приложения и одна для API в одном плане обслуживания. У меня есть SQL-сервер в Azure с двумя azure sql db. В службах приложений включено назначенное системой управляемое удостоверение. У меня есть настройки приложения для нескольких сред как в проекте (приложение, так и API).

appsettings.json
appsetings.Development.json
appsettings.Acceptance.json
appsettings.Production.json

Когда я изучил Kudu после развертывания своего приложения в службе приложений из конвейера yaml, я увидел, что все файлы настроек приложения доступны.

Конфигурация -> параметр приложения в службе приложений Azure содержит только ключ инструментирования представления приложений, который я добавляю (IaC) в шаблон при подготовке службы приложений в Azure. В этой ситуации:

Если все файлы настроек приложения будут отправлены (как показано в Kudu), какие настройки приложения будут прочитаны? appsettings.json или любая другая среда? Насколько я понимаю, это должен быть appsettings.json. Будет ли лучшим способом обработки параметров приложения для разных сред иметь только файлы appsettings.json и appsettings.development.json в решении/репозитории, а при подготовке службы приложений Azure (шаблон IaC) файлы параметров для разных сред могут иметь необходимые настройки (хранятся как секреты в хранилище ключей и читаются)? Или любой другой способ лучше, проще и безопаснее? Я не уверен, как я могу использовать диспетчер секретов для нескольких сред.

В зависимости от среды будет выбран файл appsettings.json. Если вы установили ASPNETCORE_ENVIRONMENT на основе этого значения, будет выбран файл конфигурации.

Harshitha 17.04.2023 07:18

Если вы хотите, чтобы ваше приложение Azuer выбирало какой-либо конкретный файл конфигурации, в конфигурации службы приложений Azure установите такое же значение ASPNETCORE_ENVIRONMENT.

Harshitha 17.04.2023 07:19

Вы имеете в виду, что если мне нужно выбрать appsettings.Test.json для тестового веб-приложения, моя служба тестового веб-приложения в разделе «Настройки» -> «Конфигурация» должна иметь параметр приложения с ключом ASPNETCORE_ENVIRONMENT и значением Test?

Lucky 17.04.2023 08:26

Да, вам нужно установить значение в службе приложений Azure.

Harshitha 17.04.2023 08:27

@Harshitha Пожалуйста, подтвердите мое понимание, а также как вы относитесь к тому, как я изложил выше, с файлом параметров при развертывании соответствующей службы приложений, а не к значениям, которые становятся частью моего репозитория? Я имею в виду с точки зрения безопасности?

Lucky 17.04.2023 08:27

Будет работать над этим и сообщит вам.

Harshitha 17.04.2023 08:31

Большое спасибо, дайте мне знать, если с моей стороны потребуются какие-либо подробности.

Lucky 17.04.2023 08:35

Давайте продолжим обсуждение в чате.

Harshitha 17.04.2023 09:16
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
8
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как я уже упоминал, чтение настроек приложения будет основано на Environment.

  • Если мы хотим, чтобы приложение Azure выбирало какой-либо конкретный файл конфигурации, нам нужно установить ключ ASPNETCORE_ENVIRONMENT с определенным значением (Development/Production/Acceptance).

Когда я изучил Kudu после развертывания своего приложения в службе приложений из конвейера yaml, я увидел, что все файлы настроек приложения доступны.

Да, когда мы публикуем Application, все доступные файлы конфигурации развертываются в Azure App Service.

Вы можете увидеть то же самое и для моего приложения.

Консоль КУДУ:

  • Как вы сказали, вы развертываете службу приложения из конвейера yaml, тогда будут использоваться только конфигурации, которые вы указали в файле yaml.

  • Несмотря на то, что вы видите все файлы в консоли KUDU, в приложении будут использоваться только те конфигурации, которые указаны в файле yaml.

  • Насколько мне известно, настройки приложения, которые преобразуются только в файл yaml, только читаются.

  • Вы можете найти эту опцию в Azure App Service deploy Задача в Pipeline.

  • Вы можете увидеть конфигурации yaml в Azure App Service => Configuration => Application settings.

Обратитесь к MSDoc для получения дополнительной информации о преобразованиях XML.

Will the best way to handle the app settings for different environments would be to only have appsettings.json and appsettings.development.json in solution/repo and while provisioning azure app service (IaC template), parameter files for different environments can have the required settings (stored as secrets in key vault and read)? 

Чтобы использовать Azure Key Vault для хранения секретов, у нас есть опция в Aure Pipeline Task.

Спасибо @rahulpnath за четкое объяснение how configuration file works in different environment.

Другие вопросы по теме