Я пытаюсь настроить подключение из службы приложений 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) файлы параметров для разных сред могут иметь необходимые настройки (хранятся как секреты в хранилище ключей и читаются)? Или любой другой способ лучше, проще и безопаснее? Я не уверен, как я могу использовать диспетчер секретов для нескольких сред.
Если вы хотите, чтобы ваше приложение Azuer выбирало какой-либо конкретный файл конфигурации, в конфигурации службы приложений Azure установите такое же значение ASPNETCORE_ENVIRONMENT
.
Вы имеете в виду, что если мне нужно выбрать appsettings.Test.json для тестового веб-приложения, моя служба тестового веб-приложения в разделе «Настройки» -> «Конфигурация» должна иметь параметр приложения с ключом ASPNETCORE_ENVIRONMENT и значением Test?
Да, вам нужно установить значение в службе приложений Azure.
@Harshitha Пожалуйста, подтвердите мое понимание, а также как вы относитесь к тому, как я изложил выше, с файлом параметров при развертывании соответствующей службы приложений, а не к значениям, которые становятся частью моего репозитория? Я имею в виду с точки зрения безопасности?
Будет работать над этим и сообщит вам.
Большое спасибо, дайте мне знать, если с моей стороны потребуются какие-либо подробности.
Давайте продолжим обсуждение в чате.
Как я уже упоминал, чтение настроек приложения будет основано на Environment.
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
.
В зависимости от среды будет выбран файл
appsettings.json
. Если вы установилиASPNETCORE_ENVIRONMENT
на основе этого значения, будет выбран файл конфигурации.