azure - 在 Azure 中管理环境特定应用程序设置的最佳方法是什么?

标签 azure configuration azure-web-app-service azure-resource-manager

我当前的设置将环境特定的应用程序设置存储在 ARM 参数文件的一个部分中。因此,ARM 参数文件的结构如下所示:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "deploymentSpecificValues": {
      "value": {
        "subscriptionId": "0ce7bbfc-9fa4-46b5-8f38-303db907fd89",
        "environmentName": "dev",
        "azureBlobUri": "https://mytestblob.blob.core.windows.net/"
      }
    },
    "regions": {
      "value": [
        {
          "location": "West US",
          "additionalRegionData": "abc"
        },
        {
          "location": "West US 2",
          "additionalRegionData": "pqr"
        }
      ]
    },
    "webAppInfo": {
      "value": {
        "appName": "mytestapp",
        "appSettings": {
          "SqlServerConnectionString": "mySqlServerConnectionString",
          "Service1Url": "https://www.service1url.com",
          "Service2Url": "https://www.service2url.com"
        }
      }
    },
    "sku": {
      "value": "Dynamic"
    }
  }
}

请注意位于上述代码的 webAppInfo 节点下的 appSettings。每个环境都有自己的参数文件,如上所示。我相信应用程序设置的数量会随着时间的推移而不断增长,并且可能会使参数文件变得困惑。

问题:

  1. 这是管理应用设置的最佳实践吗?
  2. 如果上述问题的答案是否定的,那么在这种情况下处理应用设置的最佳做法是什么?

最佳答案

一些想法:

  • 你正在做的事情很好,但你是对的:1)它在参数文件中可能会变得笨拙,2)通常这些参数文件位于源代码管理中,所以请确保其中的内容应该是在源代码中。
  • 检查部署时是否可以从部署中获取值,例如subscriptionId 可以从 subscription() 函数返回(假设您需要要部署到的订阅的 ID)。

Azure 中有两种资源可用于存储“配置” - 您可以稍微不同地使用它们。

  1. KeyVault 可以安全地存储任意字符串(例如 json blob),并且可以在部署时动态引用它们(通过参数)。

https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/key-vault-parameter

  • App-Config 是一种用于在这种情况下存储配置值的资源 - 您可以使用 listKeyValue() 模板函数从配置存储中提取值
  • https://learn.microsoft.com/en-us/azure/azure-app-configuration/quickstart-resource-manager https://github.com/Azure/azure-quickstart-templates/tree/master/101-app-configuration

    有帮助吗?

    关于azure - 在 Azure 中管理环境特定应用程序设置的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62240049/

    相关文章:

    azure - 记录来自 Azure 事件中心的所有消息的最简单方法

    asp.net-mvc-4 - 如何在我的 Azure 应用服务防火墙中允许 IP 地址

    azure - 无法在Windows操作系统下的Azure中创建新的.NET Core 3.1 Web应用程序

    azure - 配置应用程序洞察高级层的部署模板

    浏览器中的 Azure 文件存储 URL 显示 InvalidHeaderValue

    azure - CA API 网关迁移到 Azure API 网关

    linux - 如何使用 dhclient 将供应商特定选项传递到 DHCP 服务器?

    configuration - Jekyll: 'About' 永久链接无法正常工作

    apache - 由于 SSLProtocol : Illegal protocol 'TLSv1.1' on centos,httpd 失败

    visual-studio-2015 - 使用 WebJob 发布简单的 Asp.Net Core App (.Net Framework)