在实时环境中更改服务结构配置

时间:2018-02-12 11:38:48

标签: azure-service-fabric

我已将服务结构服务配置为使用Azure Key Vault进行配置。如果在部署应用程序后,我更改了密钥保管库中的配置,那么如何重新启动受影响的服务以便它可以获取新的配置值?

或者还有另一种方式吗?

2 个答案:

答案 0 :(得分:4)

在SF上处理配置的最佳方法是使用您的应用程序参数文件,如果您使用像VSTS这样的连续部署管道,您可以使用发布变量为您设置这些值并部署新版本的配置文件让SF做其余的事。

但是如果你仍然需要使用Key vault:

如果您使用的是asp.net核心,使用Azure Key Vault存储机密就像加载配置文件一样,这些值会被缓存,直到您重新加载它为止。

您可以使用IConfigurationRoot.Reload()从密钥保险库新值重新加载机密。检查Here

现在的诀窍是让你自动完成:

  • 启用密钥保管库记录以跟踪更改,这将在您更新密钥保管库后发出日志。检查herehere

  • 然后:

    • 在您的API中创建一个要调用的端点并刷新机密。确保安全,避免滥用。
    • 创建Azure功能以处理这些日志并触发端点
    • 创建消息队列以接收命令,系统读取消息以刷新设置
  • 或:
    • 制定计时器以在特定时期刷新(我不推荐这种方法,因为您最终可能会使用过时的配置,但它对于快速测试方案而非生产而言非常简单有用)

或者,如果您更喜欢更多自定义设计的解决方案,您可以根据KeyVault创建自己的ConfigurationProvider,并根据您的应用架构执行缓存逻辑,而您不必为其余部分烦恼。请参阅Asp.Net来源here

答案 1 :(得分:0)

为您的服务提供配置的documented方法是使用应用程序包的“配置”部分。 由于这是版本化的,因此可以升级,无需升级服务甚至重新启动服务。

更多信息herehere.