应用程序设置- Azure应用程序服务(多个环境)

6fe3ivhb  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(127)

我正在尝试使用托管标识(系统分配)设置从Azure应用服务到Azure SQL DB的连接
下面是设置:一个服务计划中有两个Azure应用程序服务,一个用于应用程序,一个用于API。我在Azure中有一个SQL服务器,其中有两个Azure SQL DB。应用程序服务打开了其系统分配的托管身份。我在项目(应用程序和API)中有多个环境的应用程序设置。

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

当我从yaml pipeline将我的应用程序部署到应用程序服务后探索Kudu时,我看到所有应用程序设置文件都可用。
Azure应用服务中的configuration -〉application设置只有应用洞察工具密钥,我在Azure中提供应用服务时在模板中添加了该密钥(IaC)。在这种情况下:
如果推送了所有应用程序设置文件(如Kudu中所示),将读取哪个应用程序设置?appsettings.json或任何其他环境特定的?据我所知,应该是appsettings.json。处理不同环境的应用程序设置的最佳方法是否是在solution/repo中仅具有appsettings.json和appsettings.development.json,同时提供Azure应用程序服务(IaC模板),不同环境的参数文件可以有所需的设置(作为密钥存储在密钥库中并读取)?或者任何其他方式更好,更容易,更安全?我不知道如何在多个环境中使用密钥管理器。

icnyk63a

icnyk63a1#

正如我所提到的,应用程序设置的阅读将基于环境。

  • 如果我们希望Azure应用程序选择任何特定的配置文件,那么我们需要使用特定的值(Development/Production/Acceptance)设置密钥ASPNETCORE_ENVIRONMENT

当我从yaml pipeline将我的应用程序部署到应用程序服务后探索Kudu时,我看到所有应用程序设置文件都可用。
是的,当我们发布Application时,所有可用的配置文件都部署到Azure App Service
你也可以在我的应用程序中看到同样的情况。

KUDU控制台:

  • 正如您所说的,您正在从yaml管道部署应用服务,然后将仅使用您在yaml文件中指定的配置。
  • 即使您在KUDU控制台中看到所有文件,但在应用程序中仅使用yaml文件中指定的配置。
  • AFAIK,仅读取仅在yaml文件中转换的应用程序设置。
  • 您可以在Pipeline中的Azure App Service deploy任务中找到该选项。

  • 您可以在Azure App Service =〉Configuration =〉Application settings中看到yaml的配置。

有关XML转换的详细信息,请参阅MSDoc。

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的清晰解释。

相关问题